Section 3: Data Dictionary - Domains
Data Dictionary - Domains
(from SP2 'Same As' Root Fields)
Item 3.1
Bug: The Format column may not properly show Tbl even though a Validation Table exists for domains with Type FORMAT (and possibly Type ALPHA). Note that a pg printout of file TOKEN in Portdata lists all fields that should have validation tables. Nothing works to force the display of 'Tbl' but it does not seem to cause a problem.
Conversion Bug (fixed in Version 04): Version 02 of the conversion utility can create TOKEN records with token type '1' in the first byte. Token type must be '0' for validation tables converted from SP2 to work properly.
Item 3.2
Difference (flagged in V05): SP2 allows 79 characters for Default Value and Edit Mask whereas APPX only allows 60 characters. In the case of Edit Mask, this is a critical difference since Edit Mask is used to size the field and must match SP2. Address problem fields (see item 2.16).
Item 3.3
Note (FYI): Be sure to exit and reenter APPX after making any changes that involve Tbl formats (such as validation tables and TOKEN fields); otherwise, the changes will not take effect.
Item 3.4
Note (FYI): Domains with Type SYSTEM appear to convert correctly now. (Previously, System Info was blank for USER ADDED and USER CHANGED domains.)
Item 3.5
Action: Check APPX for format missing in Format column and determine cause if not legitimate. The APPX Software, Inc. UTL utilities "APPX DOMAIN File List" and "APPX FIELD File List" provide a warning whenever format is missing in error. For example, this could be caused by an error in SP2 where values meant for Table Lookup were incorrectly entered in the SP2 Input Mask instead. If the field is never used in data entry, this situation has no effect in SP2 but it must be corrected in APPX. (Note: Format should be blank for field types GROUP HEADER, GROUP TRAILER, and SYNONYM although sometimes they are not blank due to what appear to be harmless APPX bugs.) (See items 3.8, 4.21, & 5.7.)
It may be possible to force the format to appear by making and unmaking a harmless change to the field (such as entering and removing a default value or temporarily changing the descriptive name.
Item 3.6
Conversion Bug (all cross-application domains flagged in V05): The V05 conversion log gives the message ("Confirm Cross-Application Is Converted and Root Field Is Domain in Cross-Appl") whether or not the SP2 application 'aaa' actually exists. If application 'aaa' does not exist or is not converted, APPX gets an error ("SAME AS Application ID Not Found") when processing the data dictionary. If you change the field type in APPX, it does not preserve field values like SP2 does. You must change the field in SP2 from 'Same As' to the appropriate field type in order to see how to define the field in APPX. (See item 3.10.)
In addition, APPX 3.0 has several problems related to use of SAME AS domains which may justify using local domains anyway. For instance, certain field values are not accessible or visible for SAME AS fields. Also, APPX may not prevent use of a file where restructure is required due to a change in the root of a SAME AS field (although it does know to restructure if you actually run Restructure in Database Management).
Item 3.7
Difference (flagged in V05): Since "PF" terminology is not applicable in APPX, modify "PF" text as appropriate. (See item 2.14.)
Item 3.8
Difference/Conversion Bug (all SP2 input masks flagged in V05): SP2 allows invalid characters in the Input Mask and enforces entry of these characters as specified in the mask if the field is not left blank during input. APPX does not allow invalid characters in the Edit Mask. The conversion utility does not properly convert such a mask but it does flag the use of invalid characters on the conversion log. In addition, there is a conversion bug related to a SP2 input mask which contains an "*". The conversion utility will improperly delete the character in the "*" position from the default value and range values for the field in the Data Dictionary as well as from any constants used in sort record selections or SET/IF/OR/AND(/others?) commands with the field. This means if the SP2 mask has an "*", every use of the field must be examined.
Check out every SP2 input mask for agreement in APPX. If different or if it contains an "*", programming will probably be required to behave like SP2. The null value should also be considered. (See items 3.5, 4.26 & 5.14.)
For example, SP2 may have Input Mask '###-####' with Initial Value blank for a phone number field. The operator must enter the '-' when entering a phone number or the field may be left blank. In APPX, this converts to Edit Mask '###*####' with Default Value blank so the mask is effectively "### ####' which is not correct.
One work-around would be to change the Edit Mask to '###!####', define a substring field for the '-' position, and add code to any input program to edit a non-blank entry for the '-'.
Note: In our example (NAME PHONE, a non-domain field in application SUB PW), the conversion program improperly set the Default Display Mask in the FIELD file to "-" although it was properly set to blank in the DOMAIN file. However, the bogus "-" in the FIELD Default Display Mask was cleared when we changed the Edit Mask.
Item 3.9
Bug (all cross-application domains flagged in V05): In APPX 3.0.0, a domain in one application may be defined as SAME AS a field which is not a domain in another application. This is a bug since APPX should give an error if the referenced field is not a true domain.
Note that the conversion utility can create this situation whenever a field in one application is same as a field in another application which does not have a 'Same As' use within its own application. Change the domain to be a local domain, not a SAME AS.
Item 3.10
Conversion Bug (duplicated names flagged in V05): When the conversion utility encounters a field defined as 'Same As' a field in another application, it creates a domain in the conversion application defined as SAME AS the field in the other application. It names the domain by prefixing the root field name with the application ID (for example, "aaa ") and truncating if necessary. If this duplicates the name of a previously created domain, the new domain is not actually created. (See item 3.6.)