Sample DBGenFormat Parameter File%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % A Series DATABridge Format Generator Control File % % % % Source: DATA/GENFORMAT/SAMPLE/CONTROL % % % % Version: 6.2 % % % % Copyright (C) 1995-2012 by Attachmate Corporation % % All Rights reserved % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % This is the input to the DATABridge Format Generator program. % % (Upper/lower case is not significant.) % % This file has these main sections: % Alterations % Virtuals % Primary keys % Reformat % Translations % Transforms % Formats % Filters % Error Manager % Startup % Shutdown % Alterations and Virtuals must precede the other sections. % Translations, Transforms, Formats, and Filters can be intermixed with % each other but cannot precede any Primary keys. % % When processing an update, the sequence is: % % 1. Apply the row filter (the FILTER's WHERE ... condition) and stop % processing if the condition is false. % % 2. Call the TRANSFORM. % % 3. The TRANSFORM calls the FORMAT zero or more times for real and/or % VIRTUAL records. % % 4. The FORMAT steps through the list of data items of the column % filter (the FILTER's SELECT ...). % % 5. For each data item, if the data item is ALTERed, call the REFORMAT % routine, otherwise format it according to its data type. If it % is an ALPHA item, use the TRANSLATION table, if any. The % reformatted values for ALTERed items are placed at the end of % the record and formatted according to their data type just like % unaltered items. % % % Lines below beginning with %* indicate example declarations that you % can uncomment and use immediately if you are compiling a tailored % Support Library for the sample database, BANKDB. % %====================================================================== % Alterations % (Data item reformatting) % ======================== % % In this section, list any data items that require transformation. % When the formatting routines encounter a data item in the list, they % will call the REFORMAT routine, which is either a procedure in the % Support Library (see PATCH/DATABRIDGE/SAMPLE/SUPPORT/REFORMAT) or an % entry point in a library (see SYMBOL/DATABRIDGE/SAMPLE/REFORMAT), % before performing normal formatting. (The "Reformat" section below % specifies where the REFORMAT routine resides.) % % For example, if dates are stored in a non-standard layout, the % formatting routines could call REFORMAT to reformat the dates into % a standard layout. % % The formatting routines will pass the number in brackets for the data % item to REFORMAT, which can use the value to determine the type of % formatting required. % % ALTER <dataset> % ( % [<uservalue1>] % <original dataname1> <new DASDL definition> % % [<uservalue2>] % <original dataname2> <new DASDL definition> % % [REDEFINE] % <original dataname3> <new DASDL definition> % % [DEFINE <uservalue3>] % <new dataname4> <new DASDL definition> % % ... % ); % % % Note that the numbers do not have to be unique. In fact, all data % items of a particular type, e.g. days-since-1900, would probably have % the same value since a single routine could convert any of them. % % Example: %* ALTER BRANCH %* ( %* [1] TS ALPHA (30); % was REAL %* [2] BRANCH-ID NUMBER (6); % was NUMBER (4) %* [3] BRANCH-AD1 GROUP % was ALPHA (40) %* ( %* BR-ADD1 ALPHA (30); %* BR-ADD2 ALPHA (30); %* BR-CITY ALPHA (20); %* BR-REGION ALPHA (15); %* ); %* ); %* %* ALTER BANK %* ( %* [REDEFINE] BANK-ADDR3 GROUP % was ALPHA (30) %* ( %* BR-CITY ALPHA (18); %* BR-STATE ALPHA (2); %* BR-ZIP ALPHA (10); %* ); %* [DEFINE 6] BANK-PRES ALPHA (40); % new item %* [DEFINE 7] BANK-PHONE ALPHA (12); % new item %* ); %* %* ALTER HISTORY %* ( % was: %* [REDEFINE] TRAN-DATE NUMBER (YYMMDD); % NUMBER (6) %* [REDEFINE] TRAN-TIME NUMBER (HHMMSS); % NUMBER (6) %* [REDEFINE] PROC-DATE NUMBER (YYMMDD); % NUMBER (6) %* [REDEFINE] TS TIME_6; % REAL %* ); %* %* %* ALTER EMPLOYEES %* ( %* % Alter multiple adjacent data items as a single item. %* %* [REDEFINE] EMP-LAST-NAME, %* EMP-FIRST-NAME %* AS EMP-PERSONAL ALPHA (32); %* ); % % alterations go here ... %====================================================================== % Virtuals % (Virtual datasets) % ================== % % These datasets will appear as normal datasets to Accessories % but do not actually exist in the DMSII database. Special % Transforms must "create" records in them. % % VIRTUAL <datasetname> # <strnum> POPULATION <est. recs.> % DERIVED FROM <datasetlist> % ( % <dataitems> % ); % % Example: % %* VIRTUAL ADDRESS #79 POPULATION 100000 %* %* DERIVED FROM BANK, CUSTOMER %* %* (ADDR-BANK-ID NUMBER (4); %* ADDR-CUST-ID NUMBER (8); %* ADDR-LINE-NBR NUMBER (1); %* ADDR-LINE ALPHA (30); %* ); % % % The POPULATION clause is optional but strongly recommended. The % default value is 1000000. % % The DERIVED FROM clause causes GenFormat to generate defines % and variables that the transform can use to build virtual % records. We recommend that you use the sample transform % PATCH/DATABRIDGE/SAMPLE/SUPPORT/VIRTUAL % as a starting point for writing the transform. % virtuals go here ... %====================================================================== % Primary Keys % ============ % % The PRIMARY KEY declarations below provide DATABridge with a unique % key for the designated datasets. This is useful for datasets that do % not have a NO DUPLICATES set declared (but *could* have one declared). % % Syntax: % % PRIMARY KEY OF <dataset> IS ( <key items> ) % % (The keywords PRIMARY, OF, and IS are optional.) % % Examples: % %* Primary Key of CUSTOMER is (CUST-ID) %* %* Key ADDRESS (ADDR-BANK-ID, ADDR-CUST-ID, ADDR-LINE-NBR); % % DATABridge will *not* confirm that the specified key is unique. % % Primary Key declarations go here ... % % %====================================================================== % Reformat % ======== % % This section specifies the location of the REFORMAT routine % that will convert any ALTERed data items. % % An INTERNAL REFORMAT specifies a patchfile containing a REFORMAT % routine that converts ALTERed data items. This patchfile will be % compiled into the Support Library and called directly from the % formatting routines. The patchfile can contain "global" as % variables needed. This method makes the DBInterface definitions and % Engine entry points available to the REFORMAT routine without % having to declare them ($ INCLUDE "SYMBOL/DATABRIDGE/INTERFACE) % or explicitly linking to DBEngine. The patchfile should not % include an EXPORT declaration. % % Syntax: % INTERNAL REFORMAT IN "<patchfiletitle>" % % Example: %* INTERNAL REFORMAT %* IN "PATCH/DATABRIDGE/SAMPLE/SUPPORT/REFORMAT" % % An EXTERNAL REFORMAT indicates that the REFORMAT routine % resides in a separate library program, where it is declared as % an entry point and EXPORTed. In this method, the REFORMAT % routine must have $ SET INCLUDE_ENGINE (and INCLUDE_SUPPORT if % needed) as well as $ INCLUDE "SYMBOL/DATABRIDGE/INTERFACE". % The Support Library will ensure that the external REFORMAT % library is linked to the same instance of DBEngine as the % Accessory and Support. % % Syntax: % EXTERNAL REFORMAT IN "<librarytitle>" % % Example: % EXTERNAL REFORMAT IN "OBJECT/DATABRIDGE/REFORMAT" % % You can specify only one REFORMAT declaration. % % The default is % EXTERNAL REFORMAT IN "OBJECT/DATABRIDGE/REFORMAT". % % The recommended method is to use INTERNAL REFORMAT .... % % %====================================================================== % Translations % ============ % % The formatting routines use these translation tables to translate % individual EBCDIC characters in text (ALPHA) data items. The % format (declared below) specifies which table to use. % % Syntax: % TRANSLATION tablename % sourcevalue -> destinationvalue % ... % % sourcevalue and destinationvalue can be the decimal value of % a character, or the hexadecimal value of a character, or a % quoted character. The following are equivalent. % 193 -> 194 % 0xC1 -> 194 % "A" -> 194 % 193 -> 0xC2 % 0xC1 -> 0xC2 % "A" -> 0xC2 % 193 -> "B" % 0xC1 -> "B" % "A" -> "B" % % You can comment out each of the TRANSLATION tables declared below % unless you have a FORMAT that explicitly references it. %====================================================================== Translation CRToLF % Convert Carriage Return to Line Feed 037 -> 013 % cr -> lf Translation UnitedKingdom % United Kingdom 123 -> 068 % # -> ú Translation Denmark % Denmark 161 -> 087 % ~ -> » 124 -> 138 % @ -> - 090 -> 139 % ] -> + 074 -> 140 % [ -> ¦ 224 -> 176 % \ -> + 095 -> 180 % ^ -> _ 121 -> 188 % ` -> S 208 -> 189 % } -> s 192 -> 190 % { -> µ 106 -> 238 % | -> ° 161 -> 252 % ~ -> n Translation Finland % Finland 091 -> 069 % $ -> ñ 074 -> 138 % [ -> - 090 -> 139 % ] -> + 124 -> 143 % @ -> + 224 -> 174 % \ -> + 095 -> 180 % ^ -> _ 192 -> 188 % { -> S 208 -> 189 % } -> s 121 -> 203 % ` -> T 106 -> 236 % | -> ÷ 161 -> 252 % ~ -> n Translation France % France 123 -> 068 % # -> ú 090 -> 072 % ] -> º 161 -> 073 % ~ -> ¿ 074 -> 088 % [ -> ¦ 124 -> 184 % @ -> a 224 -> 191 % \ -> t 208 -> 202 % } -> F 192 -> 203 % { -> T 106 -> 239 % | -> · Translation Germany % Germany 036 -> 192 % ? -> { 124 -> 072 % @ -> º 074 -> 138 % [ -> - 224 -> 174 % \ -> + 090 -> 180 % ] -> _ 161 -> 183 % ~ -> ¯ 192 -> 188 % { -> S 106 -> 236 % | -> ÷ 208 -> 252 % } -> n Translation Italy % Italy 224 -> 123 % \ -> # 123 -> 068 % # -> ú 124 -> 072 % @ -> º 074 -> 088 % [ -> ¦ 192 -> 184 % { -> a 224 -> 191 % \ -> t 208 -> 202 % } -> F 090 -> 203 % ] -> T 161 -> 206 % ~ -> 8 106 -> 222 % | -> = 121 -> 239 % ` -> · Translation Norway % Norway 238 -> 106 % ° -> | 252 -> 161 % n -> ~ 161 -> 087 % ~ -> » 124 -> 138 % @ -> - 090 -> 139 % ] -> + 074 -> 140 % [ -> ¦ 224 -> 176 % \ -> + 095 -> 180 % ^ -> _ 121 -> 188 % ` -> S 208 -> 189 % } -> s 192 -> 190 % { -> µ 106 -> 238 % | -> ° 161 -> 252 % ~ -> n Translation Spain % Spain 074 -> 066 % [ -> í 123 -> 068 % # -> ú 124 -> 072 % @ -> º 192 -> 088 % { -> ¦ 090 -> 117 % ] -> + 224 -> 160 % \ -> - 208 -> 191 % } -> t 106 -> 221 % | -> ± Translation Sweden % Sweden 091 -> 069 % $ -> ñ 074 -> 138 % [ -> - 090 -> 139 % ] -> + 124 -> 143 % @ -> + 224 -> 174 % \ -> + 095 -> 180 % ^ -> _ 192 -> 188 % { -> S 208 -> 189 % } -> s 121 -> 203 % ` -> T 106 -> 236 % | -> ÷ 161 -> 252 % ~ -> n Translation SwissFrench % SwissFrench 123 -> 068 % # -> ú 090 -> 072 % ] -> º 161 -> 073 % ~ -> ¿ 074 -> 088 % [ -> ¦ 124 -> 184 % @ -> a 224 -> 191 % \ -> t 208 -> 202 % } -> F 192 -> 203 % { -> T 106 -> 239 % | -> · Translation SwissGerman % SwissGerman 124 -> 072 % @ -> º 074 -> 138 % [ -> - 224 -> 174 % \ -> + 090 -> 180 % ] -> _ 161 -> 183 % ~ -> ¯ 192 -> 188 % { -> S 106 -> 236 % | -> ÷ 208 -> 252 % } -> n Translation DenmarkEBCDIC % Denmark EBCDIC 124 -> 183 % @ -> ¯ 066 -> 252 % í -> n 065 -> 250 % á -> · 224 -> 251 % \ -> v 095 -> 187 % ^ -> p 121 -> 100 % ` -> ¦ 208 -> 235 % } -> ) 192 -> 225 % { -> ƒ 079 -> 234 % ! -> ( 161 -> 115 % ~ -> + Translation FinlandEBCDIC % Finland EBCDIC 091 -> 070 % $ -> Ñ 065 -> 183 % á -> ¯ 066 -> 252 % í -> n 124 -> 204 % @ -> O 224 -> 186 % \ -> G 095 -> 187 % ^ -> p 192 -> 100 % { -> ¦ 208 -> 235 % } -> ) 121 -> 105 % ` -> ¦ 079 -> 120 % ! -> - 161 -> 115 % ~ -> + Translation FranceEBCDIC % France EBCDIC 123 -> 067 % # -> ó 066 -> 072 % í -> º 161 -> 127 % ~ -> " 065 -> 081 % á -> ¬ 124 -> 103 % @ -> + 224 -> 236 % \ -> ÷ 208 -> 104 % } -> + 192 -> 105 % { -> ¦ 079 -> 099 % ! -> ¦ Translation ItalyEBCDIC % Italy EBCDIC 123 -> 067 % # -> ó 124 -> 072 % @ -> º 065 -> 081 % á -> ¬ 192 -> 103 % { -> + 224 -> 236 % \ -> ÷ 208 -> 104 % } -> + 066 -> 105 % í -> ¦ 161 -> 089 % ~ -> ¦ 079 -> 098 % ! -> ¦ 121 -> 099 % ` -> ¦ Translation NorwayEBCDIC % Norway EBCDIC 234 -> 079 % ( -> ! 115 -> 161 % + -> ~ 124 -> 183 % @ -> ¯ 066 -> 252 % í -> n 065 -> 250 % á -> · 224 -> 251 % \ -> v 095 -> 187 % ^ -> p 121 -> 100 % ` -> ¦ 208 -> 235 % } -> ) 192 -> 225 % { -> ƒ 079 -> 234 % ! -> ( 161 -> 115 % ~ -> + Translation SwissFrenchEBCDIC % Swiss French EBCDIC 123 -> 067 % # -> ó 066 -> 072 % í -> º 161 -> 127 % ~ -> " 065 -> 081 % á -> ¬ 124 -> 103 % @ -> + 224 -> 236 % \ -> ÷ 208 -> 104 % } -> + 192 -> 105 % { -> ¦ 079 -> 099 % ! -> ¦ Translation SwissGermanEBCDIC % Swiss German EBCDIC 124 -> 072 % @ -> º 065 -> 183 % á -> ¯ 224 -> 186 % \ -> G 066 -> 187 % í -> p 161 -> 071 % ~ -> ª 192 -> 100 % { -> ¦ 079 -> 120 % ! -> - 208 -> 115 % } -> + Translation SpainEBCDIC % Spain EBCDIC 065 -> 137 % á -> i 123 -> 067 % # -> ó 124 -> 072 % @ -> º 192 -> 081 % { -> ¬ 066 -> 111 % í -> ? 079 -> 220 % ! -> = 208 -> 236 % } -> ÷ 224 -> 157 % \ -> + Translation SwedenEBCDIC % Sweden EBCDIC 091 -> 070 % $ -> Ñ 065 -> 183 % á -> ¯ 066 -> 252 % í -> n 124 -> 204 % @ -> O 224 -> 186 % \ -> G 095 -> 187 % ^ -> p 192 -> 100 % { -> ¦ 208 -> 235 % } -> ) 121 -> 105 % ` -> 079 -> 120 % ! -> - 161 -> 115 % ~ -> + Translation UnitedKingdomEBCDIC % United Kingdom EBCDIC 123 -> 067 % # -> Translation GermanEBCDIC % German EBCDIC 124 -> 072 % @ -> 065 -> 183 % á -> ¯ 224 -> 186 % \ -> G 066 -> 187 % í -> p 161 -> 071 % ~ -> ª 192 -> 100 % { -> ¦ 079 -> 120 % ! -> 208 -> 115 % } -> + %====================================================================== % Transforms % ========== % % A TRANSFORM is a special formatting routine used for populating % VIRTUAL datasets or transforming an update in other ways. % Syntax: % % TRANSFORM <transformname> IN "<patchfiletitle>" % or % COBOL TRANSFORM <transformname> IN "<objecttitle>" % % A transform is a user-written procedure in a patch file that % is compiled into Support (similar to an INTERNAL FORMAT). A % transform has access to both the before- and after-images at % the same time the formatting routine. % % The patch file should declare the transform procedure header % using the DBTransformHead define in DBInterface. Unlike a % format, the procedure return value is DBMTYPE rather than a % boolean. The parameters are UI, BI, AI, Format, and Writer, % which are respectively, the UpdateInfo, before-image, % after-image, formatting routine, and the Accessory-supplied % output routine. % % These transforms are predefined in Support: % ChangedRecordsOnly % Discards records if none of the data items % allowed by the filter are modified. % % ChangedItemsOnly % Discards unmodified data items. The Accessory % receives only the key items and data items that % changed. % % Example: % %* TRANSFORM VIRTUALADDRESS %* IN "PATCH/DATABRIDGE/SAMPLE/SUPPORT/FORMATADDRESS" % % A COBOL transform is a COBOL program that performs % transformations similar to the ALGOL patch file transform % described above. It is slightly more limited due to the % restrictions on parameter types passed to COBOL programs. % See SYMBOL/DATABRIDGE/SAMPLE/COBOLTRANSFORM for an example % of how to write a COBOL transform program. % The COBOL TRANSFORM declaration causes GenFormat to write out % the (unformatted) layouts in a COBOL COPY file called: % % INCLUDE/DATABRIDGE/COBOLLAYOUT/databasename % % The dataset attributes, e.g. structure number, will be written % to: % % INCLUDE/DATABRIDGE/COBOLATTRIBUTES/databasename % % (If you want GenFormat to produce this file for use by % other COBOL programs, e.g. a formatting program, you can declare % a dummy COBOL TRANSFORM that you don't actually use. There is % very little overhead in Support for such a transform.) % % Example: % %* COBOL TRANSFORM MAKEVIRTUALS %* IN "OBJECT/DATABRIDGE/SAMPLE/COBOLTRANSFORM" % % Transforms go here ... %====================================================================== % Formats % ======= % % Option Means Default % -------- ---------------------------- ------- % <type> type of format DISPLAY % FORMAT name of the formatting routine % PREFIX what to put at the beginning of each record Nothing % POSTFIX what to put at the end of each record Nothing % SEPARATOR what to put between each data item Nothing % DECIMALPT decimal point character in numbers Nothing % DATACHECK generate code to check for nulls, invalid TRUE % characters or illegal numbers and overflows % PADDING "fill" character for short records 48"00" % OVERFLOW "fill" character for integer overflows 9999... % NULL "fill" character for NULL values numbers: 0000... % text: Spaces % POSITIVE format of a non-negative number VALUE % NEGATIVE format of a negative number VALUE % UNSIGNED format of an unsigned number VALUE % TEXT format of an alphanumeric item VALUE % TRANSLATE name of the translation table to use for text None % FLOAT format of floating point REAL SCIENTIFIC (11) % Either DECIMAL (w, d) or SCIENTIFIC (w) % TRUE string value to use for true "1" % FALSE string value to use for false "0" % % <Type> Format type % ------- ----------------------------------- % DISPLAY readable formatting % BINARY binary formatting % RAW unformatted % COBOL readable formatting by a generated COBOL program % (Requires the USING FILTER <filtername> clause. % See example below.) % VARYING variable-length, e.g. no trailing spaces, readable % fields % % Code Represents % ----- ----------------------------------- % STRNUM structure number (4 digits) % STRNAME structure name (17 characters) % RECTYPE record type (3 digits) % CHANGECODE change code ('A' add, 'D' delete, 'M' modify) % MODFLAG modifies flag ('1' delete/add was a modify, else '0') % STACKNBR stack number of updating program (4 digits) % MODE "tracking" mode, ('0' extract, '2' normal, etc.) % FORMATLEVEL dataset format update level (4 digits) % AFN audit file number (4 digits) % ABSN audit block serial number (10 digits) % SEG audit file segment number (7 digits) % INX audit block word index (5 digits) % YYYY year (4 digits) % YY year (2 digits) % MM month (2 digits) % DD day (2 digits) % HH hour (2 digits) % MN minute (2 digits) % SS second (2 digits) % % UID unique ID of record as 12 decimal digits* % HEXUID unique ID of record as 12 hexadecimal digits* % PUID unique ID of parent record as 12 decimal digits* % HEXPUID unique ID of parent record as 12 hexadecimal digits* % BIGUID unique ID of record as 15 decimal digits* % BIGPUID unique ID of parent record as 15 decimal digits* % RSN (same as BIGUID) % %... * Note: These UIDs may or may not be present depending on the % type of dataset. If they are present, they will auto- % matically have the 'separator' characters around them. % % BIGUID or RSN is required for unique IDs that are RSNs to avoid % losing significant digits. % % CR carriage return character % LF line feed character % SPACE space character % TAB horizontal tab character % % DATANAME name of the data item % VALUE value of the data item in EBCDIC form. % Type Size (in bytes) in output: % ---- ------------------------- % ALPHA (n) n % NUMBER (n) n % NUMBER (Sn) 1 (sign) + n % NUMBER (n, m) n + 1 (decimal point) % NUMBER (Sn, m) 1 (sign) + n + 1 (decimal point) % REAL 1 (sign) + w [from FLOAT SCIENTIFIC (w) % or FLOAT DECIMAL (w, d)] % REAL (n) 11 % REAL (Sn) 1 (sign) + 11 % REAL (Sn, m) 1 (sign) + 11 + 1 (decimal point) % RECORD TYPE 11 % FIELD (n) 11 % BOOLEAN 1 ('0' is false, '1' is true) % %====================================================================== display format KEYFORMAT % --------- % formatting for key items. Required. prefix ==> SPACE separator SPACE decimalpt . unsigned DATANAME = VALUE positive DATANAME = +VALUE negative DATANAME = -VALUE text DATANAME = "VALUE" boolean DATANAME = VALUE padding SPACE float DECIMAL (12, 4) display format COMMAFORMAT % ----------- % prefix; comma between each data item prefix STRNUM , RECTYPE , CHANGECODE , postfix UID PUID LF separator , decimalpt . positive +VALUE negative -VALUE text "VALUE" padding SPACE float SCIENTIFIC (11) % #.#####E-## %float DECIMAL (12, 2) % #########.## %translate UnitedKingdom %null SPACE %overflow * %true "TRUE " %false "FALSE" display format RSNCOMMA % -------- % prefix; comma between each data item prefix STRNUM , RECTYPE , CHANGECODE , postfix BIGUID BIGPUID LF separator , decimalpt . positive +VALUE negative -VALUE text "VALUE" padding SPACE float SCIENTIFIC (11) % #.#####E-## display format SNAPSHOTCOMMA % ------------- % COMMAFORMAT but no prefix; just the data postfix UID PUID LF separator , decimalpt . positive +VALUE negative -VALUE text "VALUE" padding SPACE %translate UnitedKingdom %float DECIMAL (12, 2) true "1" false "0" %* display format COMMAFORMATQUOTEALL % ------------------- % COMMAFORMAT with quotes around everything %* prefix "STRNUM" , "RECTYPE" , "CHANGECODE" , %* postfix UID PUID LF %* separator , %* decimalpt . %* positive "+VALUE" %* negative "-VALUE" %* unsigned "VALUE" %* text "VALUE" %* boolean "VALUE" %* true "T" %* false "F" %* padding SPACE %* float DECIMAL (12, 2) display format FIXEDFORMAT % ----------- % no delimiters; prefix has structure number, record type, change code prefix STRNUM RECTYPE CHANGECODE postfix UID PUID decimalpt . positive +VALUE negative -VALUE padding SPACE %translate UnitedKingdom %float DECIMAL (12, 2) datacheck TRUE display format SNAPSHOTFIXED % ------------- % FIXEDFORMAT but no prefix; just the data postfix UID PUID decimalpt . positive +VALUE negative -VALUE padding SPACE %translate UnitedKingdom %float DECIMAL (12, 2) display format NameFormat % ---------- % Insert the dataname in front of each data item value. prefix CHANGECODE SPACE STRNAME SPACE separator , unsigned DATANAME = VALUE positive DATANAME = +VALUE negative DATANAME = -VALUE text DATANAME = "VALUE" boolean DATANAME = VALUE padding SPACE binary format BINARYFORMAT % required for DBServer % ------------ %* translate UnitedKingdom % translation for ALPHAs format AUDITLOC % -------- prefix MM/DD/YYYY@HH:MN:SS[AFN,ABSN,INX] CHANGECODE separator , % Note that in a COBOL format you must specify the filter it uses. %* COBOL format COBOLCOMMA USING FILTER EVERYTHING % ---------- %* prefix "STRNAME" , "RECTYPE" , "CHANGECODE" , %* postfix UID PUID LF %* separator , %* decimalpt . %* positive "+VALUE" %* negative "-VALUE" %* unsigned "VALUE" %* text "VALUE" %* padding SPACE %* float decimal (12, 4) %* datacheck FALSE % % A VARYING format has fields that vary in size depending on their % contents. Alpha fields truncate trailing spaces. Numeric fields strip % leading zeroes. The output file should be some type of STREAM file to % allow for output records of different sizes. %* varying format CSV % --- %* prefix STRNUM , RECTYPE , CHANGECODE , %* postfix LF %* separator , %* decimalpt . %* positive VALUE %* negative -VALUE %* text "VALUE" % % External formats % ================ % % EXTERNAL FORMAT <formatname> IN "<librarytitle>" % % The <librarytitle> is the title of an ALGOL library codefile % containing an EXPORTed formatting procedure called <formatname>. % The user must write the library program. Example: % % external format CUSTOMFORMAT % in "OBJECT/LOCAL/FORMATLIB" % % % Internal formats % ================ % % INTERNAL FORMAT <formatname> IN "<patchfiletitle>" % % The <patchfiletitle> is the title of an ALGOL source file % containing a patch for Support that declares a formatting % routine whose name is <formatname>. % % % %====================================================================== % Filters % ======= % % Option Means Default % -------- ---------------------------- ------- % FILTER name of filtering routine Nothing % SELECT specifies dataset name Nothing % DEFAULT default selection expression NONE % $ INCLUDE include ALGOL source file Nothing % % Syntax for "SELECT" option: % % SELECT <filteritems> FROM <dataset> <optional where> <optional using> % % where <filteritems> is: % ALL % %. * (same as ALL) % % <dataitem 1> <dataitem 2> ... % % ALL EXCEPT <dataitem 1> <dataitem 2> ... % % <vf 1>: <dataitem 1> <dataitem 2> ... % <vf 2>: <dataitem 3> <dataitem 4> ... % ELSE: * (or NONE or ALL) % ... (for variable format datasets) % % Dataitems can be GROUPs or elementary items. If the data item % OCCURS, all occurrences will be selected. % % The <optional where> part has the following syntax: % WHERE <booleanexpression> % (if omitted, all records will be selected from the % dataset) % % The <booleanexpression> can specify the type of update. % Syntax: % % UPDATETYPE (<type>) % % where <type> is CREATE, MODIFY, or DELETE. % % Example: % select * from ORDERS % where UpdateType (CREATE) % or UpdateType (MODIFY) % % The <optional using> part has the following syntax: % USING <(sub)set> % % The <(sub)set> specifies the name of a set or subset that will % be used to extract records during a clone. If the subset has a % WHERE clause in the DASDL, GenFormat will automatically append % that expression to the WHERE clause in the SELECT statement. % % Example: % select * from ACCOUNTS % where ACCT-TYPE = 1 % using ACTIVEACCTS % subset of ACCOUNTS % % % Syntax for "DEFAULT" option: % % DEFAULT ALL (select all records for unSELECTed datasets) % DEFAULT ANY (same as ALL) % DEFAULT NONE (do not select any records for unSELECTed datasets) % DEFAULT ALL EXCEPT datasetlist (exclude datasets in list) % DEFAULT UPDATETYPE (<type>) [OR UPDATETYPE (<type>)] % % Relational % Operator Means % --------- ----------------------------------- % = Equal to % ^= Not equal to % > Greater than % >= Greater than or equal to % < Less than % <= Less than or equal to % EQL Equal to % NEQ Not Equal to % GTR Greater than % GEQ Greater than or Equal % LSS Less than % LEQ Less than or Equal % IS Bit-for-bit equal % ISNT Not bit-for-bit equal % % "AND" and "OR" may be used to connect multiple expressions. % "NOT" may be used to reverse the value of an expression. filter DISCARDALL % discard every record % ---------- default NONE % --------------------------------------------------------------------- filter EVERYTHING % keep every record % ---------- default ALL % ----- Examples ------ %* filter ONLYBANK1 % --------- %* default NONE % return records only for the datasets specified in % the SELECT statements %* select * from BANK where BANK-ID = 1; %* select * from BRANCH where BANK-ID = 1; %* select * from CUSTOMER where BANK-ID = 1; % --------------------------------------------------------------------- % %* filter EXAMPLEFILTER % ------------- %* default ALL % return all records for datasets that do not have %* % a SELECT statement %* select * from BRANCH where BRANCH-ID = 2 %* and BRANCH-NAM = "SOUTH MANHATTAN"; %* select * from TELLER where BRANCH-ID = 2 and TL-CSH-OUT > 99.99; %* select * from ACCOUNT where FALSE; % no records at all %* select * from L1 where DS-NAME > "a" using L1-SS2; % --------------------------------------------------------------------- % %* filter CERTAINFIELDS % ------------- %* default NONE % don't return any records for datasets that do %* % not have a SELECT statement %* select BRANCH-ID BRANCH-AD1 %* from BRANCH %* where BRANCH-ID > 1 %* and BRANCH-NAM = "SOUTH MANHATTAN" %* and BRANCH-AD1 NEQ " "; %* select FS-NAME from FUNNY-STUFF where FS-2; % FS-2 is a BOOLEAN % ACCOUNT is a variable-format dataset %* select 1: AC-TYPE AC-NUMBER CUST-ID AC-BALANCE %* BRANCH-ID AC-HLD-AMT %* 3: ac-number AC-TYPE % lowercase data item OK %* 2: ALL %* 4: ALL EXCEPT AC-BALANCE %* 0: AC-NUMBER AC-DT-CLSE %* else: none %* from ACCOUNT where BANK-ID = 1; %* select MONTH, BANK-ID from TRIALBALANCES; % --------------------------------------------------------------------- % %* filter WAREHOUSE % --------- % Discard any deletes, but keep creates and modifies %* select * from HISTORY %* where PROC-DATE >= 000101 %* and not UpdateType (Delete); %* default all except TRIALBALANCES, FUNNY-STUFF, SHORT-VF % --------------------------------------------------------------------- % %* filter SeparateAddress % --------------- % Use this filter in conjunction with COBOLTRANSFORM to take address % lines out of the BANK and CUSTOMER datasets and put them in the % ADDRESS virtual dataset. % %* default all %* select all except BANK-ADDR1 BANK-ADDR2 BR-CITY BR-STATE BR-ZIP %* from BANK; %* select all except CUST-LINES CUST-ADDR from CUSTOMER; % % --------------------------------------------------------------------- % % Put additional filters here ... % % --------------------------------------------------------------------- % % External filters % ================ % % EXTERNAL FILTER <filtername> IN "<librarytitle>" % % The <librarytitle> is the title of an ALGOL library codefile % containing an EXPORTed filtering procedure called <filtername>. % The user must write the library program. Example: % %% external filter CUSTOMFILTER in "OBJECT/LOCAL/FILTERLIB" % % --------------------------------------------------------------------- % % Internal filters % ================ % % INTERNAL FILTER <filtername> IN "<patchfiletitle>" % % The <patchfiletitle> is the title of an ALGOL source file % containing a patch for Support that declares a filtering % routine whose name is <filtername>. Example: % %% internal filter CustomSelection %% in "PATCH/DATABRIDGE/SUPPORT/LOCALFILTERING" % % --------------------------------------------------------------------- % % Error Manager % ============= % % ERROR MANAGER <errormanagername> IN "<patchfiletitle>" % % The <patchfiletitle> is the title of an ALGOL source file containing % an error handling entry point called <errormanagername> that will % replace the DBErrorManager entry point in Support. This entry point % can analyze an error and log it, display it, etc., and its return % value indicates whether the Accessory should continue processing or % terminate. % % The entry point can be declared with the DBErrorManagerHead define % declared in DBInterface. The patch file can contain declarations % global to the error manager procedure that will persist until % Support terminates. Example: % %* Error Manager ErrorHandler %* in "PATCH/DATABRIDGE/SAMPLE/SUPPORT/ERRORHANDLER" % % --------------------------------------------------------------------- % % Startup % ======= % % STARTUP IN "<patchfiletitle>" % % The <patchfiletitle> is the title of an ALGOL source file % containing a patch for Support that contains user-written code that % is to be executed when the Support library is initializing *before* % it freezes. The contents of the patchfile is inserted into a % procedure called CustomStartup. It may contain declarations as well % as statements. Any variables declared in the patchfile will be % discarded when CustomStartup exits unless they are declared OWN. % Example: % %* Startup in "PATCH/DATABRIDGE/SAMPLE/SUPPORT/STARTUP" % % --------------------------------------------------------------------- % % Shutdown % ======== % % SHUTDOWN IN "<patchfiletitle>" % % The <patchfiletitle> is the title of an ALGOL source file % containing a patch for Support that contains user-written code that % is to be executed after the Support library thaws. The contents of % the patchfile is inserted into a procedure called CustomShutdown. It % may contain declarations as well as statements. Example: % %* Shutdown in "PATCH/DATABRIDGE/SAMPLE/SUPPORT/SHUTDOWN" % % =================== End of GenFormat input ========================== | ||
|