Previous Topic: 9.2.5 Data SummarizationNext Topic: 10. MODIFICATION


9.2.6 Assembly Language Program Flow

The assembly language programs (see list of routines in
Section 10.3) reduce IMS log data to produce IMS transaction
records.

PART 1

  - Initialize the program.  Get the call parameter and test
    its contents.  Decode the IMSOPS TABLES statement for
    table sizes, DDNAME, and IMSID.  Check the presence of
    the DD statements in the execution JCL by doing a RDJFCB
    on the input and output file DCBs just identified.  If
    anything is wrong with the format of the DDNAME passed or
    if the DD statements are not present, generate abend code
    0001.

    Establish the ESTAE exit for the program's abnormal
    termination and snap dump routine.

    Establish the interface with SAS through an address
    displacement in the input DCB.  Get storage for the
    working tables and initialize the tables.  Open the
    suspend input file.  Read transaction records from the
    suspend input file into the working Transaction Table at
    one entry per transaction record read.  Close the suspend
    input file.

PART 2

  - Process the IMS log input.  Get a record from the input
    file.  Decide, by translating the IMS log record type, if
    the record should be processed.  Skip records CA MICS
    does not process.  Records are processed by routines that
    bear the name LOGxx, where xx is the hexadecimal value of
    the IMS log record type, or by the routine COPYREC, which
    passes the log record directly to SAS for subsequent
    processing.

    Pass control to and from SAS using the routine called
    FROMSAS when SAS requests a record; the routine called
    TOSAS is entered from other parts of the program when a
    record is passed to SAS.  These routines handle such
    functions as register save/restore, DCB read address
    pointer switching, and routine internal calling sequence
    maintenance.

PART 3

 - Individual record type processing routines.

PART 4

 - Service routines.

PART 5

  - IMS log input end-of-file processing routine.  Either
    pass the entries from the working Transaction Table to
    the SAS logic as transaction record images or write the
    records to the suspend output file as suspended
    transactions.

    Decision logic is:

     o Entries go to the summary log output file if
       accounting apportionment has been done (code A in the
       processed records mask), or if the entry is more than
       one day old (the Julian date of the record that caused
       the last change of mask status is more than one and
       less than the Julian date of the last mask changing
       record of the current run).

     o All entries go to the suspend file if they do not meet
       the above summary log output criteria.

    The transaction table entries are processed through the
    old-to-new chain.  This method automatically preserves
    the aging of table entries when suspended records are
    input to the following processing cycle.

**********************************************************
*                                                        *
* IMS Log Data Reduction Utility Program (IMSLOGV6)      *
* Transaction Record Format (Full-Function X'FA00')      *
*                                                        *
**********************************************************

-------- ---------------- -----------------------------------
Name     Format           Contents
-------- ---------------- -----------------------------------
FFTRAN   DSECT
TRANPFX  DS    0F         Start of Record Prefix
TRANTT   DS    XL2        Record Transaction Type
TRANLV   DS    XL1        Record Log Utility Version
TRANFV   DS    XL1        Record File Services Version
         DS    XL4        Reserved
TRANENT  DS    0F         Start of Record Definition
TRANCDS  DS    CL8        Transaction Code
TRANLTRM DS    CL8        Logical Terminal - Origination
TRANUSER DS    CL8        User ID
TRANMID  DS    CL8        Message Input Descriptor
TRANNODE DS    0CL8       VTAM Node
TRANLINE DS    F          .. Physical Line Number
TRANPTRM DS    F          .. Physical Terminal Number
*
TRANUOW  DS    0CL34      Unit Of Work ID
TRANUOWS DS    0CL32      Unit Of Work ID for Locate
TRANUOWO DS    0CL16      Originating System
TRANORID DS    CL8        Originating System - IMSID
TRANORTK DS    CL8        Originating System - Store Clock
TRANUOWP DS    0CL16      Processing System
TRANPRID DS    CL8        Processing System - IMSID
TRANPRTK DS    CL8        Processing System - Store Clock
TRANUOWF DS    0CL2       Unit of Work ID Flags
TRANFLG1 DS    XL1        Unit of Work Flag Byte 1
TRANF1PT EQU   X'80'      Message Associated with CQSPUT
TRANF1RD EQU   X'40'      Message Associated with CQSREAD
TRANFLG2 DS    XL1        Unit of Work Flag Byte 2
TRANF2DL EQU   X'80'      Message Associated with CQSDEL
TRANF2MV EQU   X'40'      Message Associated with CQSMOVE
TRANUOWL EQU   *-TRANUOW  L' Unit Of Work ID
*
TRANMQUE DS    CL1        IMS Message Queueing
TRANMQGQ EQU   C'G'       .. Global Queues
TRANMQLQ EQU   C'L'       .. Local Queues
TRANSQPL DS    CL1        Shared Queues Processing Location
TRANPLLQ EQU   C' '       .. No Shared Message Queues
TRANPLFE EQU   C'F'       .. Front-End Location
TRANPLLA EQU   C'L'       .. Local-Affinity Location
TRANPLPR EQU   C'P'       .. Process Location
TRANPLRS EQU   C'R'       .. Response Location
TRANPLLS EQU   C'S'       .. Local-Select Location
*
TRANIDRR DS    XL4        Inbound Device Relative Record
TRANDRRN DS    XL4        Outbound Device Relative Record
*
TRANMASK DS    0CL8       FF Byte Mask of Records Processed
TRANMRCV DS    CL1        .. I - 01  Record Processed
TRANMIEQ DS    CL1        .. Q - 35  Record Processed
TRANMSCH DS    CL1        .. S - 08  Record Processed
TRANMGUE DS    CL1        .. G - 31  Record Processed
TRANMSND DS    CL1        .. O - 03  Record Processed
TRANMOEQ DS    CL1        .. E - 35  Record Processed
TRANMDEQ DS    CL1        .. D - 36  Record Processed
TRANMACT DS    CL1        .. A - 07  Record Processed
*
TRANSEQ  DS    0F         Transaction Set Sequencer
TRANPRFO DS    H          Output Number (reset for GU)
TRANPRFI DS    H          Number of Pgm-Pgm Switches
*
TRANMTYP DS    CL1        Message Type Qualifier
TRANMTRC EQU   C'R'       .. Message is Recoverable
TRANMTNR EQU   C'N'       .. Message is Non-recoverable
TRANFSTA DS    XL1        Field Status Indicators
TRANFSLV EQU   X'80'      .. LTERM Field Is Valid
TRANFSTV EQU   X'40'      .. TRANSACT Field Is Valid
TRANFSNV EQU   X'20'      .. VTAMNODE Field Is Valid
TRANFSUV EQU   X'10'      .. USERID Field Is Valid
*        EQU   X'08'      .. Reserved
*        EQU   X'04'      .. Reserved
*        EQU   X'02'      .. Reserved
*        EQU   X'01'      .. Reserved
TRANWFI  DS    CL1        WFI AutoFlush Indicator
TRANWFIA EQU   C'W'       .. Transaction AutoFlushed
TRANSTAT DS    XL1        Transaction Message Queue Status
TRANSTIN EQU   X'80'      .. Message Queue Input Status
TRANSTOT EQU   X'40'      .. Message Queue Output Status
TRANSTRB EQU   X'20'      .. Message Queue Rollback Status
*        EQU   X'10'      .. Reserved
*        EQU   X'08'      .. Reserved
*        EQU   X'04'      .. Reserved
*        EQU   X'02'      .. Reserved
*        EQU   X'01'      .. Reserved
TRANORG  DS    CL1        Origination Flag
TRANORGC EQU   C'C'       .. Origin is CNT
TRANORGF EQU   C'F'       .. Origin is Format
TRANORGN EQU   C'N'       .. Origin is Non-recoverable
TRANORGS EQU   C'S'       .. Origin is SMB
TRANDST  DS    CL1        Destination Flag
TRANDSTC EQU   C'C'       .. Destination is CNT
TRANDSTF EQU   C'F'       .. Destination is Format
TRANDSTN EQU   C'N'       .. Destination is Non-recoverable
TRANDSTS EQU   C'S'       .. Destination is SMB
TRANMSC  DS    CL1        Multiple System Couple Flag
TRANMSCY EQU   C'Y'       .. Orig/Dest are different
TRANMSCL EQU   C'L'       .. MSC with local execute
TRANLU6  DS    CL1        LU6 Segment Flag
TRANLU6Y EQU   C'Y'       .. Segment is present
TRANPSPT DS    CL8        Pgm-Pgm Switch Parent Trancode
TRANPSCT DS    CL8        Pgm-Pgm Switch Child Trancode
*
TRAN01TS DS    0CL12      Message Arrival DateTime Stamp
TRAN01DT DS    CL4        .. Message Arrival Date (01)
TRAN01TM DS    CL8        .. Message Arrival Time (01)
*
TRAN35IN DS    0CL12      Message Enqueue DateTime Stamp
TRAN35D1 DS    CL4        .. Message Enqueue Date (35 In)
TRAN35T1 DS    CL8        .. Message Enqueue Time (35 In)
*
TRAN08TS DS    0CL12      Application Schedule DateTime Stamp
TRAN08DT DS    CL4        .. Appl Schedule Date (08)
TRAN08TM DS    CL8        .. Appl Schedule Time (08)
*
TRAN31IN DS    0CL12      DLI Caller DateTime Stamp (31 Out)
TRAN31D1 DS    CL4        .. DLI Caller Date (31 Out)
TRAN31T1 DS    CL8        .. DLI Caller Time (31 Out)
*
TRAN03TS DS    0CL12      Message Output DateTime Stamp
TRAN03DT DS    CL4        .. Message Output Date (03)
TRAN03TM DS    CL8        .. Message Output Time (03)
*
TRAN35OT DS    0CL12      Originating Tran DateTime Stamp
TRAN35D2 DS    CL4        .. Originating Tran Date (35 In)
TRAN35T2 DS    CL8        .. Originating Tran Time (35 In)
*
TRAN07TS DS    0CL12      Application End DateTime Stamp
TRAN07DT DS    CL4        .. Application End Date (07/31 Out)
TRAN07TM DS    CL8        .. Application End Time (07/31 Out)
*
TRAN31OT DS    0CL12      Comm Caller DateTime Stamp (31 Out)
TRAN31D2 DS    CL4        .. Comm Caller Date (31 Out)
TRAN31T2 DS    CL8        .. Comm Caller Time (31 Out)
*
TRAN36TS DS    0CL12      Message Dequeue DateTime Stamp
TRAN36DT DS    CL4        .. Message Dequeue Date (36)
TRAN36TM DS    CL8        .. Message Dequeue Time (36)
*
TRANLATS DS    0CL12      Last Activity DateTime Stamp
TRANLADT DS    CL4        .. Last Activity Date
TRANLATM DS    CL8        .. Last Activity Time
*
TRANSQ6T DS    F          Subqueue 6 Residency Time (0.1 Sec)
TRANSQ6A DS    F          Accumulated SUBQ 6 Time (0.1 Sec)
*
TRANBKTS DS    0F         Resource Usage Buckets
TRAN7CPU DS    F          .. CPU TIME
TRAN7MGU DS    F          .. MSG GU
TRAN7MGN DS    F          .. MSG GN
TRAN7MIS DS    F          .. MSG ISRTS
TRAN7MPG DS    F          .. MSG DLETS
TRAN7DG1 DS    F          .. DB GU
TRAN7DG2 DS    F          .. DB GN
TRAN7DG3 DS    F          .. DB GNP
TRAN7DG4 DS    F          .. DB GHU
TRAN7DG5 DS    F          .. DB GHN
TRAN7DG6 DS    F          .. DB GHNP
TRAN7DIS DS    F          .. DB INSERTS
TRAN7DDL DS    F          .. DB DELETES
TRAN7DRP DS    F          .. DB REPLACES
TRANBKTL EQU   *-TRANBKTS L' Resource Usage Buckets
*
TRANINSG DS    H          Input Message Segment Count
TRANOUSG DS    H          Output Message Segment Count
TRANINCH DS    F          Input Message Character Count
TRANOUCH DS    F          Output Message Character Count
TRANBMPC DS    F          BMP Type Transaction Count
TRANABND DS    0XL4       Transaction ABEND Code
TRANAFLG DS    XL1        .. ABEND Flag Byte
TRANAFAB EQU   X'80'      .. .. Application ABEND'ed
TRANAFBF EQU   X'40'      .. .. Dynamic Backout Failed
TRANACDE DS    XL3        .. ABEND Code (System Format)
TRANRESP DS    F          Transaction Response Time (.01 Sec)
*
TRANKEY  DS    0CL10      Transaction Key Information
TRANSYS  DS    CL8        .. OrgSysId/IMSID
TRANIMS  DS    CL2        .. IMS Version
*
TRANAPOT DS    CL1        APPC/OTMA Transaction Indicator
TRANAPPC EQU   C'A'       .. Transaction is APPC
TRANOTMA EQU   C'O'       .. Transaction is OTMA
TRANPRTY DS    CL1        Transaction Priority (From 07)
TRANCLAS DS    CL1        Transaction Class (From 07)
TRANTYPE DS    CL1        Transaction Type (From 07)
TRANPST  DS    H          PST Number
TRANMMSG DS    H          Transaction Sequence Number
TRANPTSQ DS    H          Message Sequence Number
*
TRANPSB  DS    CL8        PSB Name
TRANJOB  DS    CL8        Dependent Region Jobname
TRANSTEP DS    CL8        Dependent Region Stepname
TRANDLTM DS    CL8        Logical Terminal - Destination
TRANMOD  DS    CL8        Message Output Descriptor
*
TRANFPMK DS    0CL10      FP Byte Mask of Records Processed
TRANFM01 DS    CL1        .. 5901 Record Processed
TRANFM03 DS    CL1        .. 5903 Record Processed
TRANFM50 DS    CL1        .. 5950 Record Processed
TRANFM55 DS    CL1        .. 5955 Record Processed
TRANFM36 DS    CL1        .. 5936 Record Processed
TRANFM37 DS    CL1        .. 5937 Record Processed
TRANFM38 DS    CL1        .. 5938 Record Processed
TRANFM53 DS    CL1        .. 5953 Record Processed
TRANFM11 DS    CL1        .. 5911 Record Processed
TRANFM16 DS    CL1        .. 5916 Record Processed
         DS    XL2        Reserved
TRANFP50 DS    F          K' 5950 Records
TRANFPDC DS    F          K' DEDB Calls
TRANFPDR DS    F          K' DEDB Read Operations
TRANFPMS DS    F          K' MSDB Calls
TRANFPOF DS    F          K' Overflow Buffers Used
TRANFPUW DS    F          K' UOW Contentions
TRANFPBF DS    F          K' Waits for DEDB Buffers
TRANFPOB DS    H          N' Buffer Latch Waits
TRANFPRT DS    XL1        Fastpath Region Type
         DS    XL1        Reserved
TRANFPIO DS    F          K' STIO (from 5953)
TRANFP55 DS    F          K' 5955 Records
TRANFPFL DS    XL1        Sync Point Failure Reason Code
TRANFPMM DS    CL1        Mixed-Mode Transaction Indicator
TRANMM   EQU   C'M'       .. Transaction is Mixed-Mode
TRANFSCH DS    CL1        False Schedule Indicator
TRANFS   EQU   C'F'       .. Transaction is False Schedule
TRANFLGS DS    XL1        Tran Element Flags
TRANONGQ EQU   X'80'      .. Element is on Global Queue
TRANOFGQ EQU   FF-TRANONGQ.. Remove from Global Queue
TRANONLQ EQU   X'40'      .. Element is on Local Queue
TRANONSQ EQU   X'20'      .. Element is on Staging Queue
TRANONMQ EQU   X'10'      .. Element is on Message Queue
TRANENQB EQU   X'08'      .. LU62 Enqueue Bypassed (No 35/36)
TRANLATE EQU   X'04'      .. Late 03 rec (arrived after 07)
*        EQU   X'02'      .. Reserved
*        EQU   X'01'      .. Reserved
TRANLOGR DS    F          Log record initiating FF element
TRANNCKP DS    F          N' Checkpoints/Syncpoints
TRANMLKH DS    F          Max(Locks Held) between CPs
TRANTLKH DS    F          Sum(Locks Held) for all CPs
TRANRTID DS    0CL16      Recovery Token ID
TRANRKEY DS    0CL12      Recovery Token - Search Key
TRANIID  DS    CL8        Recovery Token - IMSID
TRANSCH  DS    F          Recovery Token - Schedule Number
TRANCOM  DS    F          Recovery Token - Commit Number
TRANRTL  EQU   *-TRANRTID L' Recovery Token
*
TRANSTCK DS    XL8        Standard Suffix Store Clock
TRANSEQN DS    XL8        Standard Suffix Sequence Number
*
TRANRECL EQU   *-FFTRAN   L' FA00 Tran Record