Assembler Copy Code

#### Search Results

Search

# Assembler Copy Code

The function Generate Assembler Copy Code generates a record buffer for use in Assembler programs based on a Predict file object.

In addition, an Adabas format buffer can also be generated if required for files of the following types:

- Adabas file (file type A) with parameter Adabas SQL usage = N

- Adabas userview (file type U)

This document covers the following topics:

- Calling the Function: Generate Assembler Copy Code

- Parameters for Assembler Copy Code

- Generate Assembler Copy Code in Batch Mode

- Names in Assembler Copy Code

- Field Format and Assembler Copy Code

- Sample Output for Assembler Copy Code

## Calling the Function: Generate Assembler Copy Code

The Generate Assembler Copy Code screen is displayed with function code G and object code BA in a Predict main menu or with the command `GENERATE BAL` or `GENERATE ASSEMBLER`.

    09:43:39             *****  P R E D I C T  *****             2007-05-31
    Plan   0              - Generate ASSEMBLER Copy Code -

    File ID ...................*

    Save as member .............                Save in library .... BALLIB
    Overwrite option ........... Y  (Y,N)       Op. system member ..
    Punch / output ............* N

    List generated code ........ Y  (Y,N)       List offsets ......* N
    Generate format buffer ....* N              Adabas version ....* I7

    As DSECT ................... N  (Y,N)       Field name prefix ..
    With DC or DS .............* DC             Field name suffix ..
    Nr. of abstract lines ...... 4  (0-16)      Validate ........... *
    Generate initial value ..... N  (Y,N)       Truncation ........* R
    Align .....................* N              With EQUs .......... Y (Y,N)
    DSECT name .................                Counter length ..... 1 (1,2)
    Format buffer name .........

    Command ===>
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Next  Stop  Last  LnkEl Flip  Print Impl  AdmFi SelFi Prof  Main

## Parameters for Assembler Copy Code

Values for fields which have been locked by your data dictionary administrator cannot be overwritten. These fields are skipped when positioning the cursor with the TAB key. See Generation Defaults.

Presettings
The parameter below can be changed in the Modify BAL Defaults screen. See Generation Defaults.
Library system | Library system for which the generated code is punched. Determines which additional cards need to be punched. An operating system member must be entered for the additional cards to be generated. See Parameters Specifying the Form of Output for more information.
Parameters
The parameters Save as member, Save in library, Overwrite option, Op. system member, Punch/output, Workfile name and List generated code are described in the section Parameters Specifying the Form of Output.
File ID | ID of the Predict file object from which the definitions are to be generated. Enter an asterisk to display a selection screen. Alternatively, use an asterisk as a wildcard. For example, enter A* to display IDs beginning with A only.
List offsets |
Y | Include the offset of each item in the record buffer structure (relative to the beginning of the structure) in decimal and hexadecimal formats as a comment. The total length of each buffer is also included.
P | Include the absolute position (offset+1) as a comment.
L | Include the total lengths of the record buffer and the format buffer as a comment.
V | Only allowed if parameters As DSECT=N and With DC or DS=DC. The file number and the calculated lengths of the record buffer and the format buffer are to be generated as constants in the copy code. The name of the file number constant is the record buffer name with N as prefix. The name of each length constant is the appropriate buffer name with L as prefix. Each name is prefixed, suffixed, validated and truncated in the same way as any other field name.
N | No offset.
Generate format buffer |
Format buffer generation for Assembler copy code is only allowed if parameters As DSECT=N and With DC or DS=DC. The contents of the format buffer will correspond exactly to the contents of the record buffer. Only valid for files of type A (with parameter Adabas SQL usage set to N) or for files of type U.
Valid values:
Y | Adabas format buffer is to be generated. Adabas groups, standard formats and lengths are used whenever possible. The resulting format buffers are then as short as possible.
F | Full format buffer is to be generated. Length and format of Adabas fields are included.
N | No format buffer is to be generated.
Note If you are generating for a WANG environment, set this parameter to F or N.
Adabas version | The version of Adabas for which the copy code is to be generated. Enter an asterisk for valid values or see table in the section Adabas Version.
As DSECT | The effect of this parameter depends on the parameter DSECT name. See table below:
As DSECT | DSECT name | Copy Code Generated
--- | --- | ---
Y | specified | <DSECT name> DSECT
Y | blank | <File-ID> DSECT
N | specified | <DSECT name> DS OCLnnn Note nnn=Length of the record buffer structure
N | blank | Only entries for fields are generated
N | *(asterisk) | <File-ID> DS OCLnnn Note nnn=Length of the record buffer structure
Field name prefix | The prefix to be used for each field name generated.
With DC or DS |
DC | Assembler DC (define constant) instruction is to be used. If AS DSECT=Y, this parameter must be set to DS.
DS | Assembler DS (define storage) instruction is to be used.
Field name suffix | The suffix to be used for each field name generated.
Nr. of abstract lines | The number of Predict abstract lines per field to be included in the generated code.
Validate |
Determines how invalid characters are handled.
blank | Invalid characters in a field name will result in an error message but will not be modified.
rep.char | Invalid characters in a field name are replaced by this character. Valid replace characters: letters A-Z, digits 0-9, $, § and #.
* | Invalid characters in a field name are deleted.
Generate initial value |
This option takes effect only when With DC or DS=DC and As DSECT is set to N.
N | No initialization.
Y | Statements are generated to initialize the structure with the value specified for Init value in the corresponding field object in Predict. Fields with no value for Init value are initialized with zeros or blanks. Aligned 8-digit fields with format B or I are not initialized. In a PE group with the 3GL specification Gr.structur set to blank, only the first occurrence of each field is initialized.
Truncation |
Specifies which characters are deleted if a generated field name is too long:
L | truncate from the left
R | truncate from the right
M | truncate from the middle
A warning is given if field names are truncated.
Align |
Determines which fields are to be aligned. Fields are aligned on the boundary shown in the table in the section Field Format and Assembler Copy Code.
Y | All appropriate fields are aligned.
N | No fields are aligned.
S | Fields are aligned only if the corresponding Predict field object has the 3GL specification Synchronized=S.
With EQUs |
Y | EQU statements are to be generated for fields of length 1 whose format is not P and comment lines are to be generated for other fields, using any condition names defined as attributes of the Predict field objects. These names are prefixed, suffixed, validated and truncated in the same way as field names. For fields of format L where no condition name was specified, a condition name is generated by concatenating the field name "Example" to the prefix N. In this case the following statement is generated: `NEXAMPLE EQU X'00'`.
DSECT name | Specifies the name of the record buffer in the generated structure. The effect of this parameter depends on parameter AS DSECT. See above in this table.
Counter length | Length of additional counter fields. Valid values: 1, 2
Format buffer name | Specifies the name of the format buffer in the generated structure. If omitted, the file ID prefixed by F is used.

## Generate Assembler Copy Code in Batch Mode

Command: `GENERATE ASSEMBLER`

Enter parameters on next line in positional or keyword form. File ID is obligatory, all other parameters are optional.

Field | Keyword | Position
--- | --- | ---
File ID | FILE-ID | 1
Save as member | MEM | 2
Save in library | LIB | 3
Overwrite option | REPLACE | 4
Op. system member | OS-MEMBER | 5
AS DSECT | DSECT | 6
Field name prefix | PREFIX | 7
With DC or DS | DC-DS | 8
Field name suffix | SUFFIX | 9
Nr. of abstract lines | NR | 10
Generate initial value | INIT | 11
Validate | VALIDATION | 12
Generate format buffer | FORMAT-BUFFER | 13
Truncation | TRUNCATION | 14
List offsets | OFFSET | 15
List generated code | LIST | 16
Punch / output | PUNCH | 17
DSECT name | RECORD-BUFFER-NAME | 18
Format buffer name | FORMAT-BUFFER-NAME | 19
Align | SYNC | 20
With EQUs | EQU | 21
Adabas version | ADA-VER | 22
Counter length | COUNTER-LENGTH | 23
Workfile name (see note below) |  | 24
If you are working with Entire System Server
- DB-ID | NP-DBID | 25
- Data set | NP-DSNAME | 26
- Volume | NP-VOLSER | 27
- Library | NP-LIB | 28
- Sublibrary | NP-SUBLIB | 29
- Member type | NP-MEMTYPE | 30
- VSAM catalog | NP-VSAMCAT | 31

If a parameter is not specified, the default value is taken.

Note
You cannot specify a value other than blank (' ') for WORKFILE-NAME on mainframes.

Parameters `NP-LIB`, `NP-SUBLIB` and `NP-MEMTYPE` must be specified if the generated code is written to workfile 1 (Punch/output=Y) and Library system=3.

## Names in Assembler Copy Code

The following rules apply to the generation of names for Assembler copy code.

- Alpha characters in Predict object IDs, such as file and field IDs, are converted to upper-case.

- Each field name (label) used in Assembler copy code is taken from the corresponding Predict field object: either the field name synonym for Assembler or, if none exists, the Predict field ID.

- All field names and any condition names are prefixed, suffixed, validated and - if necessary - truncated to 8 characters according to the parameter settings. For example, with Field name prefix set to JUN, Field name suffix to *86, Validate to § and Truncation to R two fields JUNCDAY§ and JUNDAY§8 are generated for a field of type MC called DAY.

- If a resulting field name is not unique within the entire file structure, an error message is given.

- Any DSECT name or format buffer name does not receive the field name prefix and suffix. The value supplied may not contain invalid characters.

- If the file ID is taken as default DSECT name or, with the prefix F, as default format buffer name, it is validated and if necessary truncated.

### Assembler Names for Counter Fields - MC or PC

Before each field of type MC or PC, a counter field is generated automatically in the copy code, with a name created from the name of the MC or PC field prefixed by C. For example, a Predict field object DAY with no field name synonym for Assembler and with type MC will generate two fields with the names CDAY and DAY.

### Assembler Names for Logical Fields - L

If no condition name is defined for a logical field (format L), the field name prefixed by N is used for the EQU statement.

### Assembler Names for Fields of Type AV

For fields of format AV, a group is generated where groupname=fieldname. The group contains a length field and a text field prefixed with L and T respectively. See second table in the section Field Format and Assembler Copy Code.

### Assembler Names for Additionally Generated Indicator Fields

An additional indicator field prefixed with S is generated in the following cases:

- a field is defined with Suppression option set to U (null allowed)

- a field of a file of type A, U or B is defined with Suppression option set to R (not null)

Note
For Adabas Fields, the additional indicator field is only generated for the following Adabas versions:

- I3 or above

- U1 or above

- V4 or above.

## Field Format and Assembler Copy Code

Fields in the Assembler copy code have a clause determined by the following factors:

- length and format of the corresponding Predict field object

- file type of the file containing the field

Predict Format | File Type | PRD Length | Alignment Boundary | Assembler Clause | (if aligned) | Note
--- | --- | --- | --- | --- | --- | ---
B |  | 1 |  | XL1 |  |
l =3,5,6,7 |  | XLl |  |
I |  | 1 |  | XL1 |  |
B/I |  | 2 | 2 | XL2 | H |
4 | 4 | XL4 | FL4 |
8 | 4 | XL8 | FL8 |
B |  | l=>9 |  | PIC X(l) |  |
F |  | 4 | 4 | CL4 | E |
8 | 8 | CL8 | D |
N/U NS/US (nn+m<17) |  | nn.m |  | ZLl |  | l=nn+m
N/U NS/US (nn+m>16) |  | nn.m |  | CLl |  | l=nn+m
P/PS |  | nn.m |  | PLl |  | l=(nn+m+2) /2
D | D, E |  |  | CL10 |  |
other |  |  | PL4 |  |
T | D, E |  |  | CL8 |  |
other |  |  | PL7 |  |
L |  |  |  | XL1 |  |
G |  | n |  | CLm |  | m=2*n
GL |  | n |  | CLm |  | m=2*n
GV |  | n |  | CLm |  | m=2*n
LO | D, E |  | 4 | XL4 | FL4 |

The clause XLn is normally generated for B formats. There are two exceptions to this rule:

- parameter Align is set to Y, or

- parameter Align is set to S and the field is defined in Predict as Synchronized.

The clause H or FL4 or FL8 is normally generated for I formats. The exception to this rule is when the parameter Align is set to N and the field does not start at a "synchronized" address.

An indicator or length field is generated like a B2 field. A counter field is also generated like a B2 field if Counter length = 2. If Counter length = 1, the clause XL1 is generated.

A numerical format field with a length > 17 is treated in Assembler copy code as alphanumeric format field. No INIT VALUE can be generated for these fields and a warning is given.

A DB2 large object is generated as locator like an I4 field.

Note
When generating Assembler copy code for DB2 tables and views, format NS or US is converted to Assembler format PL. Any redefinitions that exist for this field are skipped.

File Type in Predict | Predict Format | Length | Assembler Clause | Note
--- | --- | --- | --- | ---
D, E | A, AL | n | CLn |
AV | Two-level group is generated: Fieldname DS CLm FieldnameL Dx yyy FieldnameT Dx CLn | m = n + 2 Dx is either DS or DC, depending on parameter With DC or DS. yyy is either XL2 or H, like a B2 field.
A,U,B | A | n | CLn |
AV | Two-level group is generated. See above. |

## Sample Output for Assembler Copy Code

    File ID .. GENERATION-EXAMPLE

    **********************************************************************
    *    THIS RECORD-BUFFER LAYOUT WAS GENERATED BY PREDICT
    *         FOR FILE: GENERATION-EXAMPLE
    *               ON: 2007-05-31 STARTING AT 13:27:40
    *    FILE COMMENTS: Example file for the
    *                   PREDICT generation subsystem
    *                   ..
    **********************************************************************
             DS    0D
    GROUP1   DS    0CL99
    ELN9V5   DC    ZL14'0'        ELE-N-9V5
    GRINGR   DS    0CL30
    ELEB4    DC    FL4'0'         ELE-B-4
    *                     CONDITION NAMES:
    *                     INIT-ELE-B-4=00001000
    *                     COND-ELE-B-4-V-1=FFFFFFFF
    ELPS52   DC    PL4'0'         ELE-PS-5V2
    MUB4     DC    5FL4'0'        MU-B-4
             ORG   MUB4
    MURB7    DC    XL7'0'         MU-RED-B-7
    MURB13   DC    ZL13'0'        MU-RED-US-13
             ORG   MUB4
    MURB8    DC    XL8'0'         MU-RED-B-8
    *                     CONDITION NAMES:
    *                     MU-RED-B-8-COND1=111111
             DS    CL12
    ELEA42   DC    CL42' '        ELE-A-42
    *                     CONDITION NAMES:
    *                     COND-NAME-START=COND-START
    *                     *THRU=COND-ZEND

    ELEF8    DC    D'0'           ELE-F-8
    ELEB3    DC    XL3'0'         ELE-B-3
    CPCOCC7  DC    XL1'0'         CNT OF PC-OCC-7
    PCOCC7   DS    0CL76
    PCNS7V3  DC    ZL10'0'        PC-ELE-DE-NS-7V3
    CPCMCPS  DC    XL1'0'         CNT OF PC-MC-PS-6V1
    PCMCPS   DC    11PL4'0'       PC-MC-PS-6V1
    PCGR     DS    0CL17
    BALI2    DC    H'0'           PC-ELE-I-2
    PCPS20V7 DC    PL14'0'        PC-PS-20V7
    BALF4    DC    E'0'           PC-ELE-F-4
             DS    6CL76
    ELED     DC    PL4'0'         ELE-D
    ELET     DC    PL7'0'         ELE-T
    ELEL     DC    XL1'0'         ELE-L
    NELEL    EQU   X'00'
    **********************************************************************
    *    THIS FORMAT-BUFFER WAS GENERATED BY PREDICT
    *         FOR FILE: GENERATION-EXAMPLE
    *               ON: 2007-05-31 STARTING AT 13:27:40
    **********************************************************************
    FGENERAT DS    0CL295
    * >>> DIC1809 WARNING: FIELDNAME(S) TRUNCATED
             DC    CL50'AB,2X,AD,AE,AF1-5,AG,2X,AH,AI,ALC,AM1,AN1C,2,AN1(1'
             DC    CL50'-11),1X,AP1,AQ1,AR1,AM2,AN2C,2,AN2(1-11),1X,AP2,AQ'
             DC    CL50'2,AR2,AM3,AN3C,2,AN3(1-11),1X,AP3,AQ3,AR3,AM4,AN4C'
             DC    CL50',2,AN4(1-11),1X,AP4,AQ4,AR4,AM5,AN5C,2,AN5(1-11),1'
             DC    CL50'X,AP5,AQ5,AR5,AM6,AN6C,2,AN6(1-11),1X,AP6,AQ6,AR6,'
             DC    CL45'AM7,AN7C,2,AN7(1-11),1X,AP7,AQ7,AR7,AS,AT,AU.'
    **********************************************************************

    DIC1800 SUMMARY:    25 FIELD(S) PROCESSED
    DIC1809 WARNING:     1 FIELDNAME(S) TRUNCATED
    DIC1819 MESSAGE:    11 SLACK BYTE(S) GENERATED
    DIC1847 MESSAGE:     3 FIELD(S) SKIPPED FOR RECORDBUFFER STRUCTURE

### On this page

- Calling the Function: Generate Assembler Copy Code
- Parameters for Assembler Copy Code
- Generate Assembler Copy Code in Batch Mode
- Names in Assembler Copy Code
- Field Format and Assembler Copy Code
- Sample Output for Assembler Copy Code