*DECK DLFP
PRGM DLFP;                   # POST PROCESSOR FOR ZZZZZDN FILE FROM NAM#
*IF DEF,IMS 
 #
*     DDDDDDDD    LL          FFFFFFFFFF  PPPPPPPP
*     DDDDDDDDD   LL          FFFFFFFFFF  PPPPPPPPP 
*     DD      DD  LL          FF          PP      PP
*     DD      DD  LL          FF          PP      PP
*     DD      DD  LL          FFFFFFFF    PPPPPPPPP 
*     DD      DD  LL          FFFFFFFF    PPPPPPPP
*     DD      DD  LL          FF          PP
*     DD      DD  LL          FF          PP
*     DDDDDDDDD   LLLLLLLLLL  FF          PP
*     DDDDDDDD    LLLLLLLLLL  FF          PP
* 
* 
*     DLFP IS A NETWORK PRODUCTS UTILITY PROGRAM.  IT IS USED TO LIST 
*     THE CONTENT OF THE LOG FILE FROM NIP (ZZZZZDN) AND THE DEBUG TRACE
*     FILE FROM AIP, ALSO NAMED ZZZZZDN.  IT IS POSSIBLE TO REQUEST DLFP
*     TO ANALYSE THE LOG FILE BY SPECIFYING THAT ONLY A CERTAIN SET OF
*     MESSAGES BE SELECTED FOR OUTPUT.  THAT IS DONE BY DIRECTIVES IN THE 
*     DIRECTIVE FILE INPUT BY NIP.  ERROR MESSAGES ARE OUTPUT TO LOCAL
*     DAYFILE OR OUTPUT FILE IF ERROR CONDITIONS ARE ENCOUNTERED.  THE
*     ERROR CONDITION CAN BE A BAD PROGRAM CALL CARD OR, A BAD DIRECTIVE, 
*     OR CAN BE A BAD LOG FILE. 
* 
*         FORMAT OF THE PROGRAM CALL CARD IS
* 
*         DLFP [,P1] [,P2] [,P3] [,P4] [,P5] .
* 
*         P1, P2, P3, P4, P5 CAN BE ONE OF THE FOLLOWING: 
* 
*         1.    I = 0        NO INPUT DIRECTIVE FILE
*               I = FILEN    FILEN IS THE NAME OF THE INPUT DIRECTIVE 
*                            FILE.
*               OMITTED      INPUT IS THE NAME OF THE INPUT 
* 
*         2.    B = FILEN    FILEN IS THE NAME OF THE LOG FILE. 
*               OMITTED      ZZZZZDN IS THE NAME OF THE LOG FILE
* 
*         3.    L = FILEN    FILEN IS THE NAME OF THE OUTPUT FILE NAME
*               OMITTED      OUTPUT IS THE NAME OF THE OUTPUT FILE. 
* 
*         4.    N = FILEN    NEW DEBUG LOG FILE GENERATED WITH
*                            FILE NAME = FILEN ACCORDING TO THE 
*                            SELECTION DIRECTIVES. NORMAL OUTPUT
*                            WILL NOT BE PRODUCED.
*               OMITTED      NORMAL OUTPUT PRODUCED.
* 
*         5.    D            IGNORED ERRORS 
*               OMITTED      DO NOT IGNORE ERRORS 
* 
*     DLFP READS THE INPUT DIRECTIVE FILE IF AVAILABLE FOR DIRECTIONS.
*     FOR A NIP LOG FILE, ONLY ON DIRECTIVE (CN) IS VALID, WHILE ALL
*     DIRECTIVES LISTED BELOW ARE AVAILABLE FOR AN AIP LOG FILE.
* 
*         DIRECTION  VALUE
*         KEYWORD    POSSIBLE     ACTION
* 
*         B                       SPECIFIES A SEARCH FOR MESSAGES WITH
*                                 THE USER BREAK FLAG SET IN THE APPLI- 
*                                 ATION BLOCK HEADER. 
* 
*         BD=      YYMMDD         SPECIFIED A SEARCH FOR MESSAGES WHICH 
*                                 WERE LOGGED ON OR AFTER THIS DATE.
*                                 MESSAGES BEFORE THIS DATE ARE NOT OUT-
*                                 PUT.  YY IS THE RIGHTMOST 2 DIGITS OF 
*                                 THE YEAR, MM IS THE MONTH, AND DD IS
*                                 THE DAY OF THE MONTH TO BEGIN 
*                                 SEARCHING.
* 
*         BT=      HHMMSS         SPECIFIES A SEARCH FOR MESSAGES WHICH 
*                                 WERE LOGGED ON OR AFTER THIS TIME.
*                                 MESSAGES BEFORE THIS TIME ARE NOT 
*                                 OUTPUT.  NOTE THAT IF THE DEBUG LOG 
*                                 FILE CONTAINS MORE THAN ONE DAY'S 
*                                 MESSAGES, SEARCHING WILL BEGIN AFTER
*                                 THE FIRST OCCURRENCE OF THIS TIME IF
*                                 BD IS NOT SPECIFIED.  HH IS THE HOUR, 
*                                 MM IS THE MINUTE, AND SS IS THE 
*                                 SECOND TO BEGIN SEARCHING.
* 
*         CN=      N              SPECIFIES A SEARCH FOR MESSAGES ON THE
*                                 CONNECTION NUMBER N.  ALL SYNCHRONOUS 
*                                 AND ASYNCHRONOUS SUPERVISORY MESSAGES 
*                                 AND DATA BLOCKS ON CONNECTION NUMBER
*                                 N ARE OUTPUT. 
* 
*         E                       SPECIFIES SCAN FOR ERROR BIT SET IN 
*                                 THE SUPERVISORY MESSAGE.
* 
*         ED=      YYMMDD         SPECIFIES THAT MESSAGES ON OR AFTER 
*                                 THIS DATE ARE NOT TO BE OUTPUT.  YY IS
*                                 THE RIGHTMOST 2 DIGITS OF THE YEAR, 
*                                 MM IS THE MONTH, AND DD IS THE DAY OF 
*                                 THE MONTH TO END SEARCHING. 
* 
*         ET=      HHMMSS         SPECIFIES THAT MESSAGES ON OR AFTER 
*                                 THIS TIME ARE NOT TO BE OUTPUT.  NOTE 
*                                 THAT IF THE DEBUG LOG FILE CONTAINS 
*                                 MORE THAN ONE DAY'S MESSAGES, SEARCHING 
*                                 WILL TERMINATE AFTER THE FIRST
*                                 OCCURRENCE OF THIS TIME ED IS NOT 
*                                 SPECIFIED.  HH IS THE HOUR, MM IS 
*                                 THE MINUTE, AND SS IS THE SECOND TO 
*                                 END SEARCHING.
* 
*         LE=      N              SPECIFIES MAX LENGTH OF EACH MESSAGE
*                                 TO BE OUTPUT IN THE CM WORDS. 1 @ N @ 
*                                 410 (DEFAULT=10)
* 
*         F                       SPECIFIES SCAN FOR A MESSAGE(S) WITH
*                                 THE NO FORMAT EFFECTOR BIT SET IN 
*                                 APPLICATION BLOCK HEADER. 
* 
*         N                       WHEN SPECIFIED, ALL NETLOG ENTRIES
*                                 IN THE DEBUG LOG FILE ARE IGNORED 
*                                 ON THE OUTPUT.
* 
*         NM=      N              SPECIFIED THAT ONLY N MESSAGES WILL 
*                                 BE OUTPUT.
* 
*         P                       SPECIFIES SCAN FOR MESSAGE(S) WITH THE
*                                 PARITY ERROR FLAG BIT SET APPLICATION 
*                                 BLOCK HEADER. 
* 
*         PF=      SYMBOL         SPECIFIES A SEARCH FOR SUPERVISORY
*                                 MESSAGES WITH PFC EQUAL TO SYMBOL.
*                                 SYMBOL MUST BE A VALID PFC (DEFINED 
*                                 IN APPENDIX F OF NAM RM). 
* 
*         PS=      SYMBOL         SPECIFES A SEARCH FOR A MESSAGE WITH
*                                 PFC/SFC EQUAL TO SYMBOL.  SYMBOL MUST 
*                                 BE A VALID SFC (DEFINED IN
*                                 APPENDIX F OF NAM REFERENCE MANUAL) 
* 
*         R                       SPECIFIES A SEARCH FOR MESSAGES WITH
*                                 THE RESPONSE BIT SET IN A SUPERVISORY 
*                                 MESSAGE.
* 
*         SM=      N              SPECIFIES THAT NO MESSAGES WILL BE
*                                 OUTPUT UNTIL AFTER THE NTH MESSAGE, 
*                                 WHICH SATISFIES ALL THE OTHER KEYWORD 
*                                 OPTIONS, HAD BEEN FOUND.
* 
*         T                       SPECIFIES A SEARCH FOR MESSAGES WITH
*                                 THE TRUNCATED DATA BIT SET IN THE 
*                                 APPLICATION BLOCK HEADER. 
* 
*         U                       SPECIFIES SCAN FOR MESSAGE(S) WITH
*                                 THE INPUT BLOCK UNDELIVERABLE (IBU) 
*                                 BIT SET IN THE APPLICATION BLOCK
*                                 HEADER. 
* 
*         X                       SPECIFIES A SEARCH FOR MESSAGE(S) WITH
*                                 THE TRANSPARENT BIT SET IN APPLICATION
*                                 BLOCK HEADER. 
* 
*     THE SAME KEYWORD CAN APPEAR MORE THAN ONCE IN A DIRECTIVE RECORD. 
*     IF THERE IS A VALUE ASSOCIATED WITH THIS KEYWORD, THE VALUE IN THE
*     LAST OCCURRENCE OF THE KEYWORD WILL BE THE ONE USED FOR THE 
*     SEARCH. 
* 
 #
*ENDIF
CONTROL PRESET; 
# * * * * * * * * * * * * * * * --- CRCOM --- * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   CRCOM
*     COPYRIGHT INFORMATION 
 #
*ENDIF
*CALL CRCOM 
#* * * * * * * * * * * * * * *  --- CYBERDEFS --- * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   CYBERDEFS
*     COMMON DEFS TO DEFNE CYBER MACHINES CHARACTERISTICS.
 #
*ENDIF
*CALL CYBERDEFS 
# * * * * * * * * * * * * * * * --- ARGERR --- * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   ARGERR 
*     COMMON DECK CONTAINING ALL ERROR MESSAGES ISSUED BY 
*     DLARG.
 #
*ENDIF
*CALL ARGERR
# * * * * * * * * * * * *  * --- ARGTBL --- * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   ARGTBL 
*     COMMON BLOCK TO PASS INPUTS FROM PROGRAM CALL CARD
*     TO VARIOUS MODULES IN DLFP. 
 #
*ENDIF
*CALL ARGTBL
# * * * * * * * * * * * * --- AWLDEFS --- * * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   AWLDEFS
*     MISCELLANEOUS DEFINITIONS USED BY DLFP. 
 #
*ENDIF
*CALL AWLDEFS 
# * * * * * * * * * * * * --- DEQCOM --- * * * * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   DEQCOM 
*     COMMON DECK CONTAINING DEFINITIONS USED BY DLFP.
 #
*ENDIF
*CALL DEQCOM
# * * * * * * * * * * * * --- DIERR --- * * * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   DIERR
*     COMMON DECK CONTAINING ERROR CODES AND ERROR MESSAGES 
*     USED BY DLDIRP. 
 #
*ENDIF
*CALL DIERR 
# * * * * * * * * * * * * --- DIRTBL --- * * * * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   DIRTBL 
*     COMMON BLOCK SAVING SELECTED VALUES FOR DIRECTIVE 
* 
*        THE TABLE DIRTBL RECEIVES THE VALUES OF THE INPUT DIRECTIVES.
*        IF A DIRECTIVE HAS NOT BEEN SELECTED, THEN A ZERO VALUE
*        IS PLACED IN THE TABLE SELECTED DIRECTIVES HAVE THE FOLLOWING
*        FORMAT:  
*                                    4
*         0                          2
*        I--------------------------I-----------------I 
*        I                          I                 I 
*        I         DIRVALU          I    DIRID        I 
*        I                          I                 I 
*        I--------------------------I-----------------I 
* 
*        DIRVALU - VALUE OF THE DIRECTIVE 
*        DIRID - IDENTIFICATION CODE FOR THE SELECTED DIRECTIVES
* 
*        THE IDENTIFICATION CODES HAVE BEEN GROUPED FOR EFFICIENCY
*        ACCORDING TO THE TYPE OF INFORMATION TO BE READ FROM THE 
*        ZZZZZDN FILE. THE PROCEDURE DLREP COPIES NON-ZERO VALUES 
*        INTO THREE CONDENSED TABLES SO THAT ALL DIRECTIVES WILL
*        NOT HAVE TO BE EXAMINED FOR EVERY MESSAGE. 
*        NOTE THAT SINCE DLREP COPIES A RANGE OF VALUES TO EACH 
*        TABLE, THE DIRECTIVE GROUPINGS MUST REMAIN INTACT. THE 
*        CN DIRECTIVE IS USED IN TWO TABLES. A CHANGE IN THE ID$
*        VALUE MUST ALSO CHANGE THE CORRESPONDING SWITCH DEFINITIONS
*        IN PROCEDURES DLABH,DLMSG,DLNBH,DLSM.
* 
 #
*ENDIF
*CALL DIRDEFS 
*CALL DIRTBL
# * * * * * * * * * * * * --- DIRTBLH --- * * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   DIRTBLH
*     SUBSET OF DIRECTIVE VALUE TABLE FOR HEADER PROCESSING 
* 
*        DIRTBLH IS A SUBSET OF DIRTBL CREATED BY THE PROCEDURE 
*        DLREP FOR USE BY DLABH FOR AN APPLICATION ZZZZZDN FILE 
*        OF FOR USE BY DLNBH FOR A NIP ZZZZZDN FILE. DLABH AND
*        DLNBH ARE NOT CALLED IF THERE ARE NO DIRECTIVES IN 
*        DIRTBLH (DIRNUMH EQ 0). ONLY APPLICATION BLOCK HEADERS 
*        MAY BE EXAMINED FOR CONNECTION NUMBER (CN) AND/OR THE
*        DATA BLOCK CLARIFIER BITS BREAK FLAG(B), CANCEL FLAG(C), 
*        NO FORMAT EFFECTOR FLAG(F), PARITY ERROR FLAG(P),
*        TRUNCATED DATA FLAG(T), UNDELIVERABLE INPUT BLOCK(U),
*        OR TRANSPARENT BIT(X). THE NETWORK BLOCK HEADER MAY BE 
*        EXAMINED FOR DESTINATION NODE(DN), SOURCE NODE(SN),
*        CONNECTION NUMBER(CN), AND/OR THE BITS CANCEL FLAG(C), 
*        NO FORMAT EFFECTOR FLAG(F), PARITY ERROR FLAG(P), OR 
*        TRUNCATED DATA FLAG(T).
* 
 #
*ENDIF
*CALL DIRTBLH 
# * * * * * * * * * * * * --- DIRTBLM --- * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   DIRTBLM
*     SUBSET OF DIRECTIVE VALUE TABLE FOR DATA MESSAGE PROCESSING 
* 
*        DIRTBLM IS A SUBSET OF DIRTBL CREATED BY DLREP FOR 
*        USE BY DLMSG. DLMSG IS NOT CALLED IF THERE ARE NO
*        DIRECTIVES IN DIRTBLM (DIRNUMM EQ 0). IF SELECTED, 
*        NUMBER OF ENTRIES WRITTEN TO OUTPUT(NM), BEGINNING 
*        TIME(BT), ENDING TIME(ET), AND NETLOG ENTRIES
*        NOT SELECTED (N) DIRECTIVES WILL BE
*        EXAMINED FOR EACH MESSAGE ON THE ZZZZZDN FILE. 
*        BT DIRECTIVE MUST BE THE LAST ENTRY IN THE DIRTBLM TABLE 
* 
 #
*ENDIF
*CALL DIRTBLM 
# * * * * * * * * * * * * --- DIRTBLS --- * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   DIRTBLS
*     SUBSET OF DIRECTIVE VALUE TABLE FOR SUPERVISORY MESSAGE 
*     PROCESSING
* 
*        DIRTBLS IS A SUBSET OF DIRTBL CREATED BY DLREP FOR USE 
*        BY DLSM. DLSM IS NOT CALLED BY DLSCAN IF THERE ARE NO
*        ENTRIES IN DIRTBLS (DIRNUMS EQ 0). IF SELECTED, THE
*        ERROR BIT(E), RESPONSE BIT(R), CONNECTION NUMBER(CN),
*        PFC(PF), OR PFCSFC(PS) FIELDS ARE EXAMINED.
* 
 #
*ENDIF
*CALL DIRTBLS 
# * * * * * * * * * * * * --- DLONEL --- * * * * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   DLONEL 
*     COMMON BLOCK CONTAINING THE FORMAT FOR ONE BLANK LINE 
 #
*ENDIF
*CALL DLONEL
# * * * * * * * * * * * * --- DLNOD --- * * * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   DLNOD
*     ARRAY TO STORE NUMBER OF DAYS IN EACH MONTH 
 #
*ENDIF
*CALL DLNOD 
# * * * * * * * * * * * * --- DLTLC --- * * * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   DLTLC
*     TEXT LENGTH IN CHARACTERS OF SELECTED MESSAGE 
 #
*ENDIF
*CALL DLTLC 
*CALL DRHDIMS 
*CALL DRHDR 
# * * * * * * * * * * * * --- ERRMSG --- * * * * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   ERRMSG 
*     COMMON BLOCK CONTAINING ALL ERROR OR INFORMATIVE MESSAGES 
*     USED IN DLFP. 
 #
*ENDIF
*CALL ERRMSG
# * * * * * * * * * * * * * * --- FETDEFS --- * * * * * * * * * *  * * #
*IF DEF,IMS 
 #
* 
* DC   FETDEFS
*     BASED ARRAY TO DEFINE DIFFERENT FIELDS IN FET AREA
* 
*        WORD 0 
*                                        4      5   5 5 5  5
*         0                              2      0   1 5 6  9
*        I------------------------------I------I---I-I---I--I 
*        I                              I      I   I I   I  I 
*        I         FETNAM               I      IEOII IEORI  I 
*        I                              I      I   I I   I  I 
*        I------------------------------I------I---I-I---I--I 
* 
*        FETNAM - FILE NAME 
*        EOI    - END OF INFORMATION FLAG 
*        EOR    - END OF RECORD OR END OF FILE FLAG 
* 
*        WORD 1 
*                                 4                5
*                                        4                5 
*         0                              2                9 
*        I------------------------------I------------------I
*        I                              I                  I
*        I                              I     FET1ST       I
*        I                              I                  I
*        I------------------------------I------------------I
* 
*        FET1ST - FET FIRST POINTER 
* 
*        WORD 2 
*                                       4                  5
*         0                             2                  9
*        I-----------------------------I--------------------I 
*        I                             I                    I 
*        I                             I     FETIN          I 
*        I                             I                    I 
*        I-----------------------------I--------------------I 
* 
*        FETIN - FET IN POINTER 
* 
*        WORD 3 
*                                       4                  5
*         0                             2                  9
*        I-----------------------------I--------------------I 
*        I                             I                    I 
*        I                             I     FETOUT         I 
*        I                             I                    I 
*        I-----------------------------I--------------------I 
* 
*        FETOUT - FET OUT POINTER 
* 
*        WORD 4 
*                                       4                  5
*         0                             2                  9
*        I-----------------------------I--------------------I 
*        I                             I                    I 
*        I                             I     FETLMT        I
*        I                             I                    I 
*        I-----------------------------I--------------------I 
* 
*        FETLMT - FET LIMIT POINTER 
* 
 #
*ENDIF
*CALL FETDEFS 
# * * * * * * * * * * * * * * --- ICIOBB --- * * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   ICIOBB 
*     COMMON BLOCK RESERVING SPACE FOR DIRECTIVE FILE CIO BUFFER
 #
*ENDIF
*CALL ICIOBB
# * * * * * * * * * * * * * --- IFETB --- * * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   IFETB
*     COMMON BLOCK RESERVING SPACE FOR FET AREA OF DIRECTIVE FILE 
 #
*ENDIF
*CALL IFETB 
# * * * * * * * * * * * * * --- MISCOM --- * * * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   MISCOM 
*     COMMON DECK HOLDING DEFINITIONS FOR DIFFERENT CHARACTER TYPES 
 #
*ENDIF
*CALL MISCOM
# * * * * * * * * * * * * * --- MISDEF --- * * * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   MISDEF 
*     MISCELLANEOUS DEFINITIONS USED BY NIP AND DLFP. 
 #
*ENDIF
*CALL MISDEF
# * * * * * * * * * * * * * --- MISDEFX --- * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   MISDEFX
*     MISCELLANEOUS DEFINITIONS 
 #
*ENDIF
*CALL MISDEFX 
# * * * * * * * * * * * * --- MISRES --- * * * * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   MISRES 
*     COMMON BLOCK TO HOLD NIP RESPONSE TIME AVERAGES FOR EACH
*     CONNECTION
* 
*        WORD 0 
*                                                          5
*         0      1       2                                 9
*        I------I-------I-----------------------------------I 
*        I      I       I                                   I 
*        I INPF I EXTF  I           CNCTR                   I 
*        I      I       I                                   I 
*        I------I-----I-------------------------------------I 
* 
*        INPF - INPUT BLOCK EXISTS FLAG 
*        EXTF - CONNECTION NUMBER EXISTS FLAG 
*        CNCTR - NUMBER OF RESPONSES
* 
*        WORD 1 
* 
*        CNSUM - ACCUMULATOR
* 
*        WORD 2 
* 
*        CNINPTM - INPUT BLOCK CLOCK TIME 
* 
 #
*ENDIF
*CALL MISRES
*CALL NCIOBB
*CALL NFETB 
*CALL NHIMS 
*CALL NHEADER 
# * * * * * * * * * * * --- NP$NWNC --- * * * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* DC  NP$NWNC 
*     COMMON BLOCK TO HOLD COEFFICIENTS FOR EQUATIONS TO CALCULATE
*     THE NUMBER OF WORDS AND CHARACTES IN A DATA BLOCK 
 #
*ENDIF
*CALL NP$NWN1 
# * * * * * * * * * * * * * * * --- OCIOBB --- * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   OCIOBB 
*     COMMON BLOCK TO HOLD THE CIO BUFFER FOR OUTPUT FILE 
 #
*ENDIF
*CALL OCIOBB
# * * * * * * * * * * * * * * --- OFETB --- * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   OFETB
*     COMMON BLOCK TO HOLD THE FET AREA FOR OUTPUT FILE 
 #
*ENDIF
*CALL OFETB 
# * * * * * * * * * * * * * * * --- OUTCDA --- * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   OUTCDA 
*     COMMON DECK FOR OUTPUT REPORT AS USED IN DLREP AND ITS
*     SUBORDINATE ROUTINES. 
 #
*ENDIF
*CALL OUTCDA
# * * * * * * * * * * * * * * * --- SYSDATEX --- * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   SYSDATEX 
*     COMMON BLOCK TO STORE CURRENT DATE FROM SYSTEM
* 
*                                                          5
*         0         6                                      9
*        I---------I----------------------------------------I 
*        I         I                                        I 
*        I         I            YYMMDD                      I 
*        I         I                                        I 
*        I---------I----------------------------------------I 
* 
*        YYMMDD - CURRENT DATE
* 
 #
*ENDIF
*CALL SYSDATEX
# * * * * * * * * * * * * * * * --- VDDIR --- * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   VDDIR
*     COMMON BLOCK OF VALID DIRECTIVE KEYWORDS. 
* 
*        VDDR ENTRIES HAVE THE FOLLOWING FORMAT:  
* 
*                                       4                  5
*         0                             2                  9
*        I-----------------------------I--------------------I 
*        I                             I                    I 
*        I        VDENTR               I VDLEN              I 
*        I                             I                    I 
*        I-----------------------------I--------------------I 
* 
*        VDENTR - THE DISPLAY CODE VALUE OF A VALID ENTRY 
*        VDLEN  - =3, FOR TWO LETTER INPUT DIRECTIVES 
*                 =1, FOR ONE LETTER INPUT DIRECTIVES 
* 
 #
*ENDIF
*CALL VDDIR 
# * * * * * * * * * * * * * * * --- VDPARM --- * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   VDPARM 
*     COMMON BLOCK TO LIST ALL VALID PARAMETERS FROM PRGM CALL CARD 
 #
*ENDIF
*CALL VDPARM
# * * * * * * * * * * * * * * * --- WRDPAIR --- * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   WRDPAIR
*     COMMON BLOCK CONTAINING PARAMETERS USED BY DLDIS ROUTINE. 
 #
*ENDIF
*CALL WRDPAIR 
# * * * * * * * * * * * * * * --- ZCIOBB --- * * * * * * * * * * * * * #
*IF DEF,IMS 
 #
* 
* DC   ZCIOBB 
*     COMMON BLOCK TO HOLD CIO BUFFER AREA FOR ZZZZZDN FILE 
 #
*ENDIF
*CALL ZCIOBB
# * * * * * * * * * * * * * --- ZFETB --- * * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   ZFETB
*     COMMON BLOCK TO HOLD FET AREA FOR THE ZZZZZDN FILE
 #
*ENDIF
*CALL ZFETB 
# * * * * * * * * * * * * * * --- ZHRCD --- * * * * * * * * * * * * * *#
*IF DEF,IMS 
 #
* 
* DC   ZHRCD
*     COMMON BLOCK HOLDING TEMPLATE FOR THE HEADER RECORD OF ZZZZZDN
*     FILE. 
*     INTERNAL FORMAT OF ZZZZZDN -
* 
*     HEADER WORD 0 - 
* W   7 
*                                   4 
*      0                            2 
*     I----------------------------I
*     I                            I
*     I        NIP                 I
*     I                            I
*     I----------------------------I
* 
*     WHERE 
*     THE LEFTMOST 42 BITS CONTAINS DISPLAY CODE LITERALS NIP WITH
*     ZERO FILL.
* 
*     HEADER WORD 1 - 
* W   7 
*                            2
*      0                     4
*     I----------------------I-----------------------I
*     I                     I                       I 
*     I      SECONDS        I       MILLISECONDS    I 
*     I                     I                       I 
*     I---------------------I-----------------------I 
* 
*     WHERE 
* 
* 
*       SECONDS      = ELAPSED TIME SINCE DEADSTART IN SECS.
*       MILLISECONDS = ELAPSED TIME SINCE DEADSTART IN MILLISECONDS.
* 
*     HEADER WORD 2 - 
* 
* W   7 
*                 1     2      3     4      5 
*           6     8     4      6     2      4 
*     I----I-----I-----I------I-----I------I-----I
*     I    I     I     I      I     I      I     I
*     I    I HH  I  .  I  MM  I  .  I  SS  I  .  I
*     I    I     I     I      I     I      I     I
*     I----I-----I-----I------I-----I------I-----I
* 
* 
*     WHERE 
* 
*       HH    = HOUR IN DISPLAY CODE. 
*       MM    = MINUTE IN DISPLAY CODE. 
*       SS    = SECONDS IN DISPLAY CODE.
* 
* 
*     HEADER WORD 3 - 
* W   7 
*                  1     2      3     4      5
*           6      8     4      6     2      4
*     I----I------I-----I------I-----I------I-----I 
*     I    I      I     I      I     I      I     I 
*     I    I  YY  I  /  I  MM  I  /  I  DD  I  /  I 
*     I    I      I     I      I     I      I     I 
*     I----I------I-----I------I-----I------I-----I 
* 
* 
*     WHERE 
* 
*       YY    = YEAR IN DISPLAY CODE. 
*               EG. 1978 WILL BE EXPRESSED AS 4243B.
*       MM    = MONTH IN DISPLAY CODE.
*       DD    = DATE OF THE MONTH IN DISPLAY CODE.
* 
* 
*     THE HEADER RECORD IS FOLLOWED BY INDIVIDUAL ZZZZZDN ENTRY 
*     CONTAINING AN INBOUND OR OUTBOUND MESSAGE.
*     INTERNAL FORMAT OF EACH ZZZZZDN ENTRY - 
* 
* 
*     WORD 0 -
* 
* W   7 
*                            2
*      0                     4
*     I---------------------I-----------------------I 
*     I                     I                       I 
*     I      SECONDS        I       MILLISECONDS    I 
*     I                     I                       I 
*     I---------------------I-----------------------I 
* 
*     WHERE 
* 
* 
*       SECONDS      = ELAPSED TIME SINCE DEADSTART IN SECS.
*       MILLISECONDS = ELAPSED TIME SINCE DEADSTART IN MILLISECONDS.
* 
* 
*     WORD 1 -
* 
* W   7 
*                          2
*                 6        3
*     I----------I----------I 
*     I          I          I 
*     I  BPIPID  I  BPIPBS  I 
*     I          I          I 
*     I----------I----------I 
* 
* 
*     WHERE 
* 
*       BPIPID     = BLOCK ID.
*                    14 FOR INBOUND, 15 FOR OUTBOUND. 
*       BPIPBS     = BLOCK SIZE. SIZE OF ZZZZZDN ENTRY MINUS ONE. 
* 
* 
*     WORD 2 -
* 
* W   5 
*            1  2     2     2  3     4     4 4
*     0   8  6  4     5     8  2     0     4 8
*     I--I--I--I-----I-----I--I-----I-----I-I--I
*     IDNISNICNINHPRIINHBSNIBTINHDBCINHACTIBICCI
*     I--I--I--I-----I-----I--I-----I-----I-I--I
* 
*     SEE NHEADER FOR EXPLANATION OF THE ABOVE FIELDS.
*     MESSAGE TEXT WILL FOLLOW THIS WORD. 
* 
 #
*ENDIF
*CALL ZHRCD 
  
*IF DEF,IMS 
 #
*1DC  DLFP
* 
*     1. PROC NAME           AUTHOR              DATE.
*        DLFP                P.C.TAM             78/09/15 
* 
*     2. FUNCTIONAL DESCRIPTION.
*        MAIN PROGRAM.
*        CALL DLARG TO PROCESS ARGUMENT FROM PROGRAM CALL CARD, 
*        CALL DLDIRP TO SCAN DIRECTIVES 
*        CALL DLREP TO GENERATE OUTPUT
* 
*     3. METHOD USED. 
*        SAME AS 2. 
* 
*     4. ENTRY PARAMETERS.
*        NONE.
* 
*     5. EXIT PARAMETERS. 
*        NONE.
* 
*     6. COMMON DECKS CALLED. 
*        CRCOM     CYBERDEFS ARGERR    ARGTBL    AWLDEFS
*        DEQCOM    DIERR     DIRTBL    DIRTBLH   DIRTBLM
*        DIRTBLS   DLONEL    DLNOD     DLTLC     DRHDR
*        ERRMSG    FETDEFS   ICIOBB    IFETB     MISCOM 
*        MISDEF    MISDEFX   MISRES    NCIOBB    NFETB
*        NHEADER   OCIOBB    OFETB     OUTCDA    SYSDATEX 
*        VDDIR     VDPARM    WRDPAIR   ZCIOBB    ZFETB
*        ZHRCD
* 
*     7. ROUTINES CALLED. 
*        DLABEND             ABORT MAIN LINE
*        DLARG               PROCESS ARGUMENTS FROM PROGRAM CALL CARD 
*        DLDT                GET CURRENT DATE 
*        DLDIRP              SCAN DIRECTIVE FILE
*        DLDFM               LOG DAYFILE MESSAGE
*        DLENDPR             TERMINATION PROCESSING 
*        DLINT               INITIATE READ/WRITE ON FILE
*        DLOPEN              OPEN FILE
*        DLPSIN              BUBBLE SORT VALUES OF PFC/SFC
*        DLRDW               READ A RECORD FROM FILE
*        DLRECL              WAIT FOR EVENT COMPLETION
*        DLREP               REPORT GENERATOR 
*        DLRWD               REWIND FILE BACK TO BOI
* 
*     8. DAYFILE MESSGES. 
*        NONE.
* 
 #
*ENDIF
# 
      EXTERNAL VARIABLES
# 
      XREF
        BEGIN 
        PROC DLABEND;        # ABORT MAIN LINE                         #
        PROC DLARG;          # SCAN FOR PARAMETERS IN PROGRAM CALL     #
        PROC DLCLOSE;        # CLOSE FILE                              #
        PROC DLDT;           # GET CURRENT DATE                        #
        PROC DLDIRP;         # SCAN DIRECTIVE FILE                     #
        PROC DLDFM;          # LOG DAYFILE MESSAGE PROCESSOR           #
        PROC DLENDPR;        # TERMINATION PROCESSING                  #
        PROC DLINT;          # INITIATE READ/WRITE ON FILE             #
        PROC DLOPEN;         # OPEN FILE                               #
        PROC DLPSIN;         # BUBBLE SORT VALUES OF PFC/SFC           #
        PROC DLRDW;          # READ RECORD FROM FILE                   #
        PROC DLRECL;         # WAIT FOR EVENT COMPLETION               #
        PROC DLREP;          # OUTPUT FILE GENERATOR                   #
        PROC DLRWD;          # REWIND FILE TO BOI                      #
        END 
  
# 
      LOCAL VARIABLES 
# 
      ITEM
      ERRCODE I,             # ERROR RETURN CODE FROM SUBMODULES       #
      RSIZE  I,              # REAL RECORD SIZE                        #
      I      I,              # TEMPORARY VARIABLE                      #
      UNPTR B,               # FLAG FOR DLDIRP MODULE                  #
      IEOF   B = FALSE;      # END OF FILE FLAG                        #
      BASED ARRAY PRODID[0:0] S(1); 
        BEGIN 
        ITEM PROD$ID C(00,00,03); 
        END 
#**********************************************************************#
      BEGIN 
# 
      SCAN PARAMETERS TO DETERMINE INPUT, OUTPUT, AND DIRECTIVE 
      FILE NAMES
# 
      NTOFF = FALSE;
      DLARG;                 # PROCESS CONTROL CARD PARAMETERS         #
      DLPSIN;                # BUBBLE SORT VALUES OF PFC/SFC           #
  
      DLDT(SYSDATEY);        # GET DATE                                #
  
      P<FETDEFS> = LOC(OFET0[0]); # INITIALIZE OUTPUT FILE NAME        #
      FETNAM[0] = ARGENTR[OFILE]; # SET OUTPUT FILE NAME               #
      DLOPEN(OFET, WRITENR);      # OPEN OUTPUT FILE                   #
      DLINT(OFET, WRITENR);       # INITIALIZE WRITE OPERATION         #
  
      IF ARGFLAG[NFILE] 
      THEN
        BEGIN                # INITIALIZE NEW DEBUG LOG FILE FETS      #
        P<FETDEFS> = LOC(NFET); 
        FETNAM[0] = ARGENTR[NFILE]; 
        DLOPEN(NFET, WRITENR);
        DLINT(NFET, WRITENR); 
        END 
  
      P<FETDEFS> = LOC(ZFET0[0]); # INITIALIZE ZZZZZDN FILE NAME       #
      FETNAM[0] = ARGENTR[ZFILE]; # SET ZZZZZDN FILE NAME              #
      DLOPEN(ZFET, READNR);       # OPEN ZFILE                         #
  
      DLRWD(ZFET);           # REWIND ZZZZZDN FILE TO BOI              #
      DLINT(ZFET, READNR);   # INITIATE FILE FOR READING               #
      DLRDW(ZFET, ZHSIZE, TEMPB1, RSIZE); # READ FILE HEADER           #
      P<PRODID> = LOC(TEMPB1);
      IF RSIZE LS 0          # (EOF) OR (EOI)                          #
      THEN                   # ZZZZZDN FILE EMPTY                      #
        BEGIN 
        DLDFM(EMP$ZFILE);    # EMPTY ZZZZZDN FILE                      #
        END 
      ELSE
        BEGIN 
        IF RSIZE NQ ZHSIZE  OR PROD$ID[0] EQ "       "
        THEN
          BEGIN              # BAD ZZZZZDN FILE CONTENT                #
          DLDFM(BAD$ZFILE); 
          DLABEND;
          END 
# 
      SCAN DIRECTIVE FILE AND GENERATE REPORT 
# 
      IF ARGENTR[INFILE] NQ O"33000000000000000000"# I=0, NO DIR FILE  #
      THEN                   # INPUT DIRECTIVE FILE EXISTS             #
        BEGIN 
  
        P<FETDEFS> = LOC(IFET0[0]);# INITIALIZE INPUT FILE             #
        FETNAM[0] = ARGENTR[INFILE];# SET INPUT FILE NAME              #
        DLOPEN(IFET, READNR);      # OPEN FILE                         #
        DLINT(IFET, READNR);       # INITIALIZE READ                   #
        DLRECL(IFET);              # WAIT FOR INITIALIZE READ TO FIN   #
  
# 
        LOOP TO READ EACH DIRECTIVE RECORD, AND PROCESS IT
# 
        FOR I = 0 STEP 1 WHILE NOT IEOF 
        DO
          BEGIN 
          ERRCODE = 0;
          IF FETIN[0] EQ FETOUT[0] AND      # CIO BUFFER EMPTY         #
             (FETEOI[0] EQ 1       OR       # FILE AT EOI              #
              FETEOF[0] EQ 3       OR       # FILE AT EOF              #
              (FETEOR[0] EQ 2 AND           # FILE AT EOR AND          #
               FETDT[0] NQ "TT"))           # NOT A TERMINAL INPUT     #
          THEN
            IEOF = TRUE;
          ELSE               # DIRECTIVES AVAILABLE                    #
            BEGIN 
            DLDIRP(UNPTR,ERRCODE);# FILE DIRECTIVE SCANNER             #
            IF FETDT[0] EQ "TT"   # IT IS A TERMINAL JOB               #
            THEN
              BEGIN 
              IF UNPTR AND     # EMPTY LINE INPUT                      #
                 I NQ 0      # NOT 1ST TIMER                           #
              THEN
                IEOF = TRUE;
              END 
            END 
          IF (NOT IEOF OR 
             (IEOF AND I EQ 0)) AND 
             ERRCODE EQ 0 
          THEN               # INPUT AVAILABLE, OR INPUT FILE EMPTY    #
            BEGIN 
            DLRWD(ZFET);     # REWIND FILE TO BOI                      #
            DLINT(ZFET, READNR);# INITIATE FILE FOR READ               #
            DLREP;           # REPORT GENERATOR                        #
            IF FETEOR[0] EQ 2 AND FETDT[0] EQ "TT"
            THEN             # RE-INITIALIZE READ                      #
              DLINT(IFET,READNR); 
            END 
          END 
        END 
      ELSE                   # NO INPUT DIRECTIVE FILE                 #
        BEGIN 
        DLRWD(ZFET);         # REWIND FILE TO BOI                      #
        DLINT(ZFET, READNR); # INITIATE FILE FOR READ                  #
        DLREP;               # REPORT GENERATOR                        #
        END 
  
      END 
      DLDFM(DL$COMP);        # DLFP COMPLETE                           #
      DLENDPR;               # TERMINATION PROCESSING                  #
  
      STOP; 
      END 
TERM
