*DECK RDUMP 
          IDENT  RDUMP
          ENTRY  RDUMP
          EXT    OMSG 
          EXT    XTRACE 
          SST 
          IPARAMS 
*#
*1DC  RDUMP 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        RDUMP               E. GEE              77/08/03 
* 
*     2. FUNCTIONAL DESCRIPTION.
*        THIS ROUTINE IS RESPONSIBLE FOR DUMPING NIP-S FIELD-LENGTH.
* 
*     3. METHOD USED. 
*          CHECK IF DMPFLG IS SET TO ZERO.  IF SO, ALWAYS DUMP
*          IF NONZERO, CHECK IF DUMP ALREADY TAKEN OF SAME PROBLEM. 
*            IF SO, DO NOT DUMP AGAIN.
*            IF NOT, DUMP AND STORE REASON CODE FOR DUMP IN DUMPTRK 
*          DUMP BY CREATING FET WITH I/O BUFFER WHICH IS NIP-S ENTIRE 
*            FL AND EXECUTING WRITER. 
*          IF I/O ERROR OCCURS, 
*            ISSUE INFORMATIVE DAYFILE MESSAGE. 
* 
*     4. ENTRY PARAMETERS.  NONE
* 
*     5. EXIT PARAMETERS.  NONE 
* 
*     6. COMDECKS CALLED. 
*          CYBERDEFS DUMPFLG FREETAB INPARU MACDEF
* 
*     7. ROUTINES CALLED. 
*          OMSG              ISSUE DAYFILE MESSAGE
*          WRITER            WRITE WITH END OF RECORD MACRO 
*          XTRACE            TRACES CALLS 
* 
*     8. DAYFILE MESSAGES.
*        " CIO ERROR NNB, LFN = ZZZZTMP." 
* 
*#
 DMPWD    VFD    30/0,18/300000B,12/0 
 DMPCHK   BSSZ   1           COUNT OF DUMPS, NEVER MORE THAN 2
* 
* 
* 
*CALL MACDEF
*CALL CYBERDEFS 
*CALL INPARU
*CALL FREETAB 
*CALL DUMPFLG 
  
DUMPTRK   BSSZ   1           WORD TO KEEP TRACK OF DUMP PROBLEMS
* 
*         FET FOR FILE DUMP 
* 
LN        EQU    0           EOR/EOF LEVEL NUMBER 
AT        EQU    0           ABNORMAL TERMINATION CODE
CODE      EQU    0           REQUEST/RETURN CODE
DT        EQU    0           DEVICE TYPE
R         EQU    0           RNADOM ACCESS BIT
 UP       EQU    1           USER PROCESSING BIT
 EP       EQU    1           ERROR PROCESSING BIT 
XL        EQU    0           EXTENDED LABEL PROCESSING BIT
L         EQU    0           ADDITIONAL FET LENGTH OVER 5 
FNT       EQU    0           FNT ADDRESS
PRUSIZE   EQU    0           PRU SIZE 
  
FET       VFD    42/7LZZZZTMP,4/LN,4/AT,9/CODE,1/1
          VFD    12/DT,1/R,1/0,1/UP,1/EP,2/0,1/XL,17/0,6/L,18/0 
IN        VFD    42/0,18/0   NEXT LOCATION TO WRITE OUT DATA
OUT       VFD    42/0,18/0   LAST LOCATION TO WRITE OUT DATA
LIMIT     VFD    12/FNT,12/0,18/PRUSIZE 
          VFD    18/0        LWA+1 OF I/O BUFFER
  
 ERRMSG   DIS    ,* CIO ERROR NNB, LFN = ZZZZTMP.*
 ERRMSGC  EQU    ERRMSG+2    WORD TO CONTAIN ABNORMAL TERM CODE 
  
 LOCMSG   VFD    60D/ERRMSG  LOCATION OF DAYFILE MESSAGE
  
  
 RDUMP    SUBR   =           ENTRY/EXIT 
          IFEQ    DEBUG,1,6 
          SX6    A1 
          SA6    TEMP 
          SX1     XRDUMP
          RJ     XTRACE 
          SA1    TEMP 
          SA1    X1 
          SA1    DMPFLG      REASON CODE FOR DUMPING NIP-S FIELD LENGTH 
          ZR     X1,DUMP     IF RC = 0, ALWAYS DUMP 
          SB1    X1 
          SA2    DUMPTRK     CHECK TO SEE IF PROBLEM OCCURRED BEFORE
          LX3    B1,X2
          NG   X3,RETURN     DUMP ALREADY TAKEN OF PROBLEM
* 
*         SET REASON CODE BIT IN DUMPTRK SO DUMP OF SAME PROBLEM WILL 
*         NOT OCCUR AGAIN 
* 
          MX4    1
          BX5    X3+X4
          SB2    60D         CM WORD SIZE 
          SB1    B2-B1
          LX7    B1,X5
          SA7    DUMPTRK
* 
*         SET UP FET BUFFER POINTERS
* 
 DUMP     SA1    CTLSLWA     LWA+1 OF NIP 
          BX6    X1 
          SA6    LIMIT       SET I/O BUFFER LIMIT ADDRESS 
          SX7    B0 
          SA7    OUT         SET I/O BUFFER OUT ADDRESS 
          SX6    X6-1 
          SA6    IN          SET I/O BUFFER IN ADDRESS
  
          WRITER FET,R       WRITE NIP-S FL TO FILE DUMP
          MX5    5           MASK FOR ABNORMAL TERMINATION FIELD IN FET 
          SA2    FET         X2 = FIRST WORD OF FET 
          LX5    9+5         SHIFT MASK TO ABNORMAL TERM FIELD POSITION 
          BX5    X5*X2       EXTRACT ABNORMAL TERMINATION CODE
          ZR     X5,RETURN   RETURN IF NO I/O ERROR 
  
          MX0    3           MASK FOR ONE OCTAL DIGIT 
          AX5    5           RIGHT JUSTIFY ABNORMAL TERM CODE 
          LX0    3           RIGHT JUSTIFY OCTAL DIGIT MASK 
          SA2    ERRMSGC     X2 = WORD OF DAYFILE MSG TO CONTAIN CODE 
          BX4    X0*X5       EXTRACT LEAST SIGNIFICANT DIGIT
          AX5    3           EXTRACT MOST SIGNIFICANT DIGIT 
          SX4    X4+33B      CONVERT OCTAL DIGIT TO OCTAL DISPLAY 
          SX5    X5+33B      CONVERT OCTAL DIGIT TO OCTAL DISPLAY 
          LX5    6           SHIFT MOST SIG DIGIT TO 2ND DIGIT POS
          MX0    12D         MASK FOR ABNORMAL TERM FIELD IN DAY MSG
          BX5    X5+X4       ABNORMAL TERM CODE IN OCTAL DISPLAY CODE 
          LX0    42D+12D     SHIFT MASK TO ABNORMAL TERM FIELD POSITION 
          LX5    42D         SHIFT DISPLAY CODE NO TO DAY MSG POSITION
          BX0    -X0*X2      CLEAR ABNORMAL TERM CODE FIELD IN DAY MSG
          BX6    X0+X5       ADD ABNORMAL TERM CODE TO DAY MSG
          SA6    A2 
          SA1    LOCMSG      A1 = ADDRESS OF PARAMETER BLOCK
          RJ     OMSG        ISSUE DAYFILE MESSAGE
  
  
RETURN    EQ   RDUMP         RETURN TO CALLING PROGRAM
 XRDUMP   DATA    L*RDUMP*
 TEMP     BSS    1
          END 
