Previous Topic: Security ProtectionNext Topic: Incorporating Verification into LIB/CCF


Source to Load Module Verification

To positively trace the phase or load module to the correct source member version, use the CA Librarian Source-Load Audit Trail (SLAT) variables. These variables refer to member control information such as the member name, programmer name, date and time last updated, level number, and master file data set name. They are entered into the source code (or the compilation file) as literals using the facilities of the particular programming language. CA Librarian dynamically substitutes them at compile or assembly time.

For example, a COBOL program might contain the SLAT variables demonstrated in the following example:

01  SLAT-VARIABLE-AREA.
    05 FILLER          PIC X(16) VALUE ‘SLAT VARS START:’.
    05 SLAT-DATEUPD    PIC X(8)  VALUE ‘¢DATEUPD’.
    05 SLAT-TIMEUPD    PIC X(8)  VALUE ‘¢TIMEUPD’.
    05 SLAT-PROGRAMMER PIC X(15) VALUE ‘¢PROGRAMMERNAME’.
    05 SLAT-MODNAME    PIC X(8)  VALUE ‘¢MODNAME’.
    05 SLAT-LEVEL-NO   PIC X(5)  VALUE ‘¢LVNO’.
    05 SLAT-UPDATE-NO  PIC X(5)  VALUE ‘¢UPNO’.
    05 SLAT-DSN        PIC X(44)                            
       VALUE ‘¢DATA-SET-NAME-FOR-THE-LIBRARIAN-MASTER-FILE’.
    05 FILLER          PIC X(13) VALUE ‘SLAT VARS END’.

The variables are substituted with the actual member information at the time of the compile. The substituted values become part of the object module and ultimately the load module or phase. A pre-coded Assembler example is contained in a member named VARIABLE on the System Services file, which can be included in Assembler programs as is. See the Batch Command Reference Guide for details on the Source-Load Audit Trail variables

There are two approaches to using the SLAT variables.

All of the above mentioned exits (LIBREXIT, LIBDEXIT, IEXSLAT, and IEXDSLAT) provide the SLAT variables in a programming language specific format. For example, for COBOL programs, the exits provide the SLAT variables as VALUE clauses. For Assembler programs, the exits provide the SLAT variables as define constants (DCs). For the exit to determine the programming language that the member is written in, the member must have a three-character CA Librarian language (assigned by the CA Librarian ‑LANG control statement) that matches a language in the exit’s language table.

As distributed, the exits support COBOL, PLI, and Assembler programs and contain a modifiable language table so that you can change existing languages or add new ones. See the System Services Guide for details on each exit.

Finally, a program cross checks the load module or phase to the source member and verifies that they match. This program (LIBRSCAN for z/OS and OS/390, LIBDSCAN for VSE/ESA) requires a specific format for the SLAT variables, which the VARIABLE member or the input/output exit programs provide. If your load modules or phases already contain the SLAT variables in a different format, you can use LIBRSCAN/LIBDSCAN by simply modifying the DSECT that maps the format of the SLAT variables. Otherwise, you might find it necessary to modify the program source itself.

The source code for these assembler programs (IEXSLAT, IEXDSLAT, LIBREXIT, LIBDEXIT, LIBRSCAN and LIBDSCAN) are located on the User Contributed Routines (UCR) target library. See the System Services Guide for details on installing and using these programs. The following section provides information on incorporating these programs into LIB/CCF.