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 ==========================