User Tools

Site Tools


cdc:nos2.source:opl.opl871:deck:ssdebug.001

Deck SSDEBUG Part 001

2 Modifications

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
02152  M01S02126.ssdebug +++|        THEN                         # INSERT HYPHEN #
02153  M01S02127.ssdebug +++|          BEGIN
02154  M01S02128.ssdebug +++|          C<1,1>DBARG$CM[0] = "-";
02155  M01S02129.ssdebug +++|          END
02156  M01S02130.ssdebug +++|
02157  M01S02131.ssdebug +++|#
02158  M01S02132.ssdebug +++|*     CONVERT THE PARAMETERS FROM DISPLAY CODE TO
02159  M01S02133.ssdebug +++|*     INTEGER VALUES.
02160  M01S02134.ssdebug +++|#
02161  M01S02135.ssdebug +++|
02162  M01S02136.ssdebug +++|        IF NOT DBARG$DIRF[0]
02163  M01S02137.ssdebug +++|        THEN
02164  M01S02138.ssdebug +++|          BEGIN  # CONVERT PARAMETERS #
02165  M01S02139.ssdebug +++|          DBCONV(FLAG);
02166  M01S02140.ssdebug +++|          IF FLAG NQ OK
02167  M01S02141.ssdebug +++|          THEN                       # CONVERSION ERROR #
02168  M01S02142.ssdebug +++|            BEGIN
02169  M01S02143.ssdebug +++|            DBARG$DIRF[0] = TRUE;
02170  M01S02144.ssdebug +++|            ERRFLAG = TRUE;
02171  M01S02145.ssdebug +++|            END
02172  M01S02146.ssdebug +++|
02173  M01S02147.ssdebug +++|
02174  M01S02148.ssdebug +++|          END  # CONVERT PARAMETERS #
02175  M01S02149.ssdebug +++|
02176  M01S02150.ssdebug +++|        IF DBARG$DIRF[0]
02177  M01S02151.ssdebug +++|        THEN
02178  M01S02152.ssdebug +++|          BEGIN
02179  M01S02153.ssdebug +++|          DBERRCODE = S"DSYNT$DIR";
02180  M01S02154.ssdebug +++|          DBERR(DBERRCODE);
02181  M01S02155.ssdebug +++|          END
02182  M01S02156.ssdebug +++|
02183  M01S02157.ssdebug +++|#
02184  M01S02158.ssdebug +++|*     CHECK THE DIRECTIVE FOR VALID OPTIONS.
02185  M01S02159.ssdebug +++|#
02186  M01S02160.ssdebug +++|
02187  M01S02161.ssdebug +++|        IF NOT DBARG$DIRF[0]
02188  M01S02162.ssdebug +++|        THEN
02189  M01S02163.ssdebug +++|          BEGIN  # CHECK VALID OPTIONS #
02190  M01S02164.ssdebug +++|          DBOPT(FLAG);
02191  M01S02165.ssdebug +++|          IF FLAG NQ OK
02192  M01S02166.ssdebug +++|          THEN                       # VALID OPTIONS VIOLATED #
02193  M01S02167.ssdebug +++|            BEGIN
02194  M01S02168.ssdebug +++|            DBARG$DIRF[0] = TRUE;
02195  M01S02169.ssdebug +++|            ERRFLAG = TRUE;
02196  M01S02170.ssdebug +++|            END
02197  M01S02171.ssdebug +++|
02198  M01S02172.ssdebug +++|          END  # CHECK VALID OPTIONS #
02199  M01S02173.ssdebug +++|
02200  M01S02174.ssdebug +++|#
02201  M01S02175.ssdebug +++|*     WRITE THE DIRECTIVE NUMBER, ERROR FLAG,
02202  M01S02176.ssdebug +++|*     IMAGE AND THE CRACKED PARAMETERS TO THE
02203  M01S02177.ssdebug +++|*     SCRATCH FILE.
02204  M01S02178.ssdebug +++|#
02205  M01S02179.ssdebug +++|
02206  M01S02180.ssdebug +++|        WRITEW(DSCR$FET[0],DBARG[0],DBDIRPRML,FLAG);
02207  M01S02181.ssdebug +++|        END  # CRACK AND SYNTAX CHECK DIRECTIVES #
02208  M01S02182.ssdebug +++|
02209  M01S02183.ssdebug +++|      IF DIRNUM EQ 0
02210  M01S02184.ssdebug +++|      THEN                           # NO DIRECTIVES #
02211  M01S02185.ssdebug +++|        BEGIN
02212  M01S02186.ssdebug +++|        DBMSG$LN[0] = " SSDEBUG, NO DIRECTIVES.";
02213  M01S02187.ssdebug +++|        MESSAGE(DBMSG[0],SYSUDF1);
02214  M01S02188.ssdebug +++|        RESTPFP(PFP$ABORT);          # RESTORE USER-S *PFP* AND ABORT #
02215  M01S02189.ssdebug +++|        END
02216  M01S02190.ssdebug +++|
02217  M01S02191.ssdebug +++|      WRITER(DSCR$FET[0],RCL);
02218  M01S02192.ssdebug +++|      REWIND(DSCR$FET[0],RCL);
02219  M01S02193.ssdebug +++|      RETURN;
02220  M01S02194.ssdebug +++|
02221  M01S02195.ssdebug +++|      END  # DBLOOP #
02222  M01S02196.ssdebug +++|
02223  M01S02197.ssdebug +++|    TERM
02224  M01S02198.ssdebug +++|PROC DBMAIN;
02225  M01S02199.ssdebug +++|# TITLE DBMAIN - PROCESS *SSDEBUG* DIRECTIVES.                        #
02226  M01S02200.ssdebug +++|
02227  M01S02201.ssdebug +++|      BEGIN  # SSDEBUG #
02228  M01S02202.ssdebug +++|
02229  M01S02203.ssdebug +++|#
02230  M01S02204.ssdebug +++|**    DBMAIN - PROCESS *SSDEBUG* DIRECTIVES.
02231  M01S02205.ssdebug +++|*
02232  M01S02206.ssdebug +++|*     PROC DBMAIN.
02233  M01S02207.ssdebug +++|*
02234  M01S02208.ssdebug +++|*     ENTRY    THE CRACKED AND SYNTAX CHECKED DIRECTIVES
02235  M01S02209.ssdebug +++|*              HAVE BEEN WRITTEN TO A SCRATCH FILE WHICH HAS
02236  M01S02210.ssdebug +++|*              BEEN REWOUND.
02237  M01S02211.ssdebug +++|*              (DSCR$FET) = FET FOR READING THE SCRATCH FILE.
02238  M01S02212.ssdebug +++|*
02239  M01S02213.ssdebug +++|*     EXIT     ALL DIRECTIVES HAVE BEEN PROCESSED OR AN ERROR FLAG
02240  M01S02214.ssdebug +++|*              HAS BEEN SET UP.
02241  M01S02215.ssdebug +++|*
02242  M01S02216.ssdebug +++|*     MESSAGES FAMILY NOT FOUND.
02243  M01S02217.ssdebug +++|*
02244  M01S02218.ssdebug +++|*     NOTES    A LOOP IS SET UP TO READ EACH DIRECTIVE
02245  M01S02219.ssdebug +++|*              FROM THE SCRATCH FILE INTO THE COMMON AREA
02246  M01S02220.ssdebug +++|*              DEFINED IN *COMTDBP*.  THE CATALOG OR MAP IS
02247  M01S02221.ssdebug +++|*              OPENED AND THE CORRESPONDING ROUTINE IS
02248  M01S02222.ssdebug +++|*              CALLED TO PROCESS THE DIRECTIVE.  ANY ERROR
02249  M01S02223.ssdebug +++|*              IN DIRECTIVE PROCESSING CAUSES *SSDEBUG*
02250  M01S02224.ssdebug +++|*              TO ABORT.
02251  M01S02225.ssdebug +++|#
02252  M01S02226.ssdebug +++|
02253  M01S02227.ssdebug +++|#
02254  M01S02228.ssdebug +++|****  PROC DBMAIN - XREF LIST BEGIN.
02255  M01S02229.ssdebug +++|#
02256  M01S02230.ssdebug +++|
02257  M01S02231.ssdebug +++|      XREF
02258  M01S02232.ssdebug +++|        BEGIN
02259  M01S02233.ssdebug +++|        PROC COPEN;                  # OPEN CATALOG #
02260  M01S02234.ssdebug +++|        PROC DBCMAP;                 # PROCESS REMOVE SMMAP ENTRY
02261  M01S02235.ssdebug +++|                                       DIRECTIVE #
02262  M01S02236.ssdebug +++|        PROC DBFLAG;                 # PROCESS CHANGE FLAG DIRECTIVE #
02263  M01S02237.ssdebug +++|        PROC DBFMAP;                 # PROCESS REMOVE FCT ENTRY
02264  M01S02238.ssdebug +++|                                       DIRECTIVE #
02265  M01S02239.ssdebug +++|        PROC DBRDFIL;                # PROCESS READ FILE DIRECTIVE #
02266  M01S02240.ssdebug +++|        PROC DBRDSTM;                # PROCESS READ AU DIRECTIVE #
02267  M01S02241.ssdebug +++|        PROC DBREL;                  # PROCESS RELEASE MSF PROBLEM
02268  M01S02242.ssdebug +++|                                       CHAIN DIRECTIVE #
02269  M01S02243.ssdebug +++|        PROC DBRESP;                 # PROCESSES RESPONSE FROM EXEC #
02270  M01S02244.ssdebug +++|        PROC LOFPROC;                # LIST OF FILES PROCESSOR #
02271  M01S02245.ssdebug +++|        PROC MESSAGE;                # DISPLAY MESSAGES #
02272  M01S02246.ssdebug +++|        PROC MOPEN;                  # OPEN SMMAP #
02273  M01S02247.ssdebug +++|        PROC READ;                   # READS A FILE #
02274  M01S02248.ssdebug +++|        PROC READW;                  # DATA TRANSFER ROUTINE #
02275  M01S02249.ssdebug +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
02276  M01S02250.ssdebug +++|                                       OR RETURN #
02277  M01S02251.ssdebug +++|        PROC RETERN;                 # RETURNS A FILE #
02278  M01S02252.ssdebug +++|        PROC RPLINE;                 # WRITES A REPORT LINE #
02279  M01S02253.ssdebug +++|        PROC RPSPACE;                # WRITES A BLANK LINE #
02280  M01S02254.ssdebug +++|        PROC SETPFP;                 # SET FAMILY AND USER INDEX #
02281  M01S02255.ssdebug +++|        PROC SSINIT;                  # SETS UP TABLES AND POINETRS #
02282  M01S02256.ssdebug +++|        FUNC XCOD C(10);             # INTEGER TO DISPLAY CONVERSION #
02283  M01S02257.ssdebug +++|        END
02284  M01S02258.ssdebug +++|
02285  M01S02259.ssdebug +++|#
02286  M01S02260.ssdebug +++|****  PROC DBMAIN - XREF LIST END.
02287  M01S02261.ssdebug +++|#
02288  M01S02262.ssdebug +++|
02289  M01S02263.ssdebug +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
02290  M01S02264.ssdebug +++|
02291  M01S02265.ssdebug +++|*CALL COMBFAS
02292  M01S02266.ssdebug +++|*CALL COMBCMD
02293  M01S02267.ssdebug +++|*CALL COMBCMS
02294  M01S02268.ssdebug +++|*CALL COMBCPR
02295  M01S02269.ssdebug +++|*CALL COMBPFP
02296  M01S02270.ssdebug +++|*CALL COMBSNS
02297  M01S02271.ssdebug +++|*CALL COMSPFM
02298  M01S02272.ssdebug +++|*CALL COMTDBG
02299  M01S02273.ssdebug +++|*CALL COMTDBP
02300  M01S02274.ssdebug +++|*CALL COMTOUT
02301  M01S02275.ssdebug +++|
02302  M01S02276.ssdebug +++|      ITEM DIS$SB     C(10);         # SUBFAMILY IN DISPLAY CODE #
02303  M01S02277.ssdebug +++|      ITEM EOR        B;             # INDICATES END OF RECORD #
02304  M01S02278.ssdebug +++|      ITEM I          I;             # LOOP INDUCTION VARIABLE #
02305  M01S02279.ssdebug +++|      ITEM J          I;             # LOOP INDUCTION VARIABLE #
02306  M01S02280.ssdebug +++|      ITEM RESPCODE   I;             # RESPONSE CODE #
02307  M01S02281.ssdebug +++|
02308  M01S02282.ssdebug +++|      ARRAY CATNAME [0:0] P(1);      # CATALOG FILE NAME #
02309  M01S02283.ssdebug +++|        BEGIN
02310  M01S02284.ssdebug +++|        ITEM CAT$NAM    C(00,00,06);  # FIRST 6 CHARACTERS #
02311  M01S02285.ssdebug +++|        ITEM CAT$SB     C(00,36,01);  # SUBFAMILY IDENTIFIER #
02312  M01S02286.ssdebug +++|        END
02313  M01S02287.ssdebug +++|
02314  M01S02288.ssdebug +++|      ARRAY DRWSTAT [0:0] S(SNSLEN);;  # DRAWER STATUS TABLE #
02315  M01S02289.ssdebug +++|
02316  M01S02290.ssdebug +++|      ARRAY MAPNAME [0:0] P(1);      # MAP FILE NAME #
02317  M01S02291.ssdebug +++|        BEGIN
02318  M01S02292.ssdebug +++|        ITEM MAP$NAM    C(00,00,07) = ["SMMAP  "];
02319  M01S02293.ssdebug +++|        ITEM MAP$SM     C(00,30,01);  # SM IDENTIFIER #
02320  M01S02294.ssdebug +++|        ITEM MAP$ZFILL  U(00,36,06) = [0];
02321  M01S02295.ssdebug +++|        END
02322  M01S02296.ssdebug +++|
02323  M01S02297.ssdebug +++|#
02324  M01S02298.ssdebug +++|*     SWITCH TO PROCESS *SSDEBUG* DIRECTIVES.  THE
02325  M01S02299.ssdebug +++|*     ORDER OF THE SWITCH LABELS IS THE SAME AS THE
02326  M01S02300.ssdebug +++|*     DIRECTIVE NAMES SET UP IN ARRAY *DB$DIR*
02327  M01S02301.ssdebug +++|*     DEFINED IN *COMTDBG*.
02328  M01S02302.ssdebug +++|#
02329  M01S02303.ssdebug +++|
02330  M01S02304.ssdebug +++|      SWITCH DIR$ACT                 # SWITCH TO PROCESS DIRECTIVES #
02331  M01S02305.ssdebug +++|        CMAP,                        # REMOVE SMMAP ENTRY #
02332  M01S02306.ssdebug +++|        FMAP,                        # REMOVE *FCT* ENTRY #
02333  M01S02307.ssdebug +++|        REL,                         # RELEASE PROBLEM CHAIN #
02334  M01S02308.ssdebug +++|        RDFIL,                       # READ FILE #
02335  M01S02309.ssdebug +++|        RDSTM,                       # READ AU #
02336  M01S02310.ssdebug +++|        FLAG;                        # CHANGE FLAG #
02337  M01S02311.ssdebug +++|
02338  M01S02312.ssdebug +++|CONTROL EJECT;
02339  M01S02313.ssdebug +++|
02340  M01S02314.ssdebug +++|      ADDRSENSE = LOC(DRWSTAT[0]);   # FWA OF DRAWER STATUS TABLE #
02341  M01S02315.ssdebug +++|      P<SNS> = ADDRSENSE;
02342  M01S02316.ssdebug +++|
02343  M01S02317.ssdebug +++|#
02344  M01S02318.ssdebug +++|*     INITIALIZE THE FETS, BUFFERS, TABLES AND
02345  M01S02319.ssdebug +++|*     POINTERS NEEDED TO ACCESS CATALOGS AND MAPS.
02346  M01S02320.ssdebug +++|#
02347  M01S02321.ssdebug +++|
02348  M01S02322.ssdebug +++|      SSINIT;
02349  M01S02323.ssdebug +++|
02350  M01S02324.ssdebug +++|#
02351  M01S02325.ssdebug +++|*     READ THE DIRECTIVES.
02352  M01S02326.ssdebug +++|#
02353  M01S02327.ssdebug +++|
02354  M01S02328.ssdebug +++|      READ(DSCR$FET[0],RCL);
02355  M01S02329.ssdebug +++|
02356  M01S02330.ssdebug +++|      EOR = FALSE;
02357  M01S02331.ssdebug +++|      FASTFOR I = 0 STEP 1 WHILE NOT EOR
02358  M01S02332.ssdebug +++|      DO
02359  M01S02333.ssdebug +++|        BEGIN  # PROCESS EACH DIRECTIVE #
02360  M01S02334.ssdebug +++|        READW(DSCR$FET[0],DBARG[0],DBDIRPRML,RESPCODE);
02361  M01S02335.ssdebug +++|        IF RESPCODE NQ OK
02362  M01S02336.ssdebug +++|        THEN                         # NO MORE DIRECTIVES #
02363  M01S02337.ssdebug +++|          BEGIN
02364  M01S02338.ssdebug +++|          EOR = TRUE;
02365  M01S02339.ssdebug +++|          TEST I;
02366  M01S02340.ssdebug +++|          END
02367  M01S02341.ssdebug +++|
02368  M01S02342.ssdebug +++|#
02369  M01S02343.ssdebug +++|*     WRITE THE DIRECTIVE TO THE OUTPUT FILE.
02370  M01S02344.ssdebug +++|#
02371  M01S02345.ssdebug +++|
02372  M01S02346.ssdebug +++|        RPLINE(OUT$FETP,DBARG$DIRN[0],2,5,1);
02373  M01S02347.ssdebug +++|        RPLINE(OUT$FETP,DBARG$DIRI[0],8,80,0);
02374  M01S02348.ssdebug +++|        RPSPACE(OUT$FETP,SP"SPACE",1);
02375  M01S02349.ssdebug +++|
02376  M01S02350.ssdebug +++|        IF DBARG$DIRF[0]
02377  M01S02351.ssdebug +++|        THEN                         # SYNTAX ERROR IN DIRECTIVE #
02378  M01S02352.ssdebug +++|          BEGIN
02379  M01S02353.ssdebug +++|          RPLINE(OUT$FETP,"*** SYNTAX ERROR",2,16,0);
02380  M01S02354.ssdebug +++|          TEST I;                    # GET NEXT DIRECTIVE #
02381  M01S02355.ssdebug +++|          END
02382  M01S02356.ssdebug +++|
02383  M01S02357.ssdebug +++|        IF DBARG$FM[0] EQ 0
02384  M01S02358.ssdebug +++|        THEN                         # FAMILY NOT SPECIFIED #
02385  M01S02359.ssdebug +++|          BEGIN
02386  M01S02360.ssdebug +++|          DBARG$FM[0] = DEF$FAM;     # USE DEFAULT FAMILY #
02387  M01S02361.ssdebug +++|          END
02388  M01S02362.ssdebug +++|
02389  M01S02363.ssdebug +++|        PFP$WRD0[0] = 0;             # SET FLAGS #
02390  M01S02364.ssdebug +++|        PFP$WRD1[0] = 0;             # CLEAR PACK NAME #
02391  M01S02365.ssdebug +++|        PFP$FG1[0] = TRUE;
02392  M01S02366.ssdebug +++|        PFP$FG2[0] = TRUE;
02393  M01S02367.ssdebug +++|        PFP$FG4[0] = TRUE;
02394  M01S02368.ssdebug +++|
02395  M01S02369.ssdebug +++|#
02396  M01S02370.ssdebug +++|*     OPEN THE SMMAP FOR *RS*, *RC* AND *CF* DIRECTIVES.
02397  M01S02371.ssdebug +++|#
02398  M01S02372.ssdebug +++|
02399  M01S02373.ssdebug +++|        IF DBARG$OP[0] EQ "RC"
02400  M01S02374.ssdebug +++|          OR ( DBARG$OP[0] EQ "RS" AND DBARG$WCN[0] NQ 0 )
02401  M01S02375.ssdebug +++|          OR (DBARG$OP[0] EQ "CF"
02402  M01S02376.ssdebug +++|          AND (DBARG$FL[0] EQ "ME" OR DBARG$FO[0] LS 0))
02403  M01S02377.ssdebug +++|        THEN
02404  M01S02378.ssdebug +++|          BEGIN  # OPEN SMMAP #
02405  M01S02379.ssdebug +++|          PFP$FAM[0] = DEF$FAM;      # SET FAMILY AND USER INDEX #
02406  M01S02380.ssdebug +++|          PFP$UI[0] = DEF$UI;
02407  M01S02381.ssdebug +++|          SETPFP(PFP);
02408  M01S02382.ssdebug +++|          IF PFP$STAT[0] NQ 0
02409  M01S02383.ssdebug +++|          THEN                       # DEFAULT FAMILY NOT FOUND #
02410  M01S02384.ssdebug +++|            BEGIN
02411  M01S02385.ssdebug +++|            DBMSG$LN[0] = " FAMILY NOT FOUND.";
02412  M01S02386.ssdebug +++|            MESSAGE(DBMSG[0],SYSUDF1);
02413  M01S02387.ssdebug +++|            RESTPFP(PFP$ABORT);      # RESTORE USER-S *PFP* AND ABORT #
02414  M01S02388.ssdebug +++|            END
02415  M01S02389.ssdebug +++|
02416  M01S02390.ssdebug +++|          MAP$SM[0] = DBARG$SM[0];
02417  M01S02391.ssdebug +++|          MOPEN(DBARG$SMID[0],MAP$NAM[0],"RM",RESPCODE);
02418  M01S02392.ssdebug +++|          IF RESPCODE NQ CMASTAT"NOERR"
02419  M01S02393.ssdebug +++|          THEN                       # UNABLE TO OPEN MAP #
02420  M01S02394.ssdebug +++|            BEGIN
02421  M01S02395.ssdebug +++|            DBRESP(RESPCODE,0);
02422  M01S02396.ssdebug +++|            TEST I;
02423  M01S02397.ssdebug +++|            END
02424  M01S02398.ssdebug +++|
02425  M01S02399.ssdebug +++|          ELSE                       # MAP OPENED #
02426  M01S02400.ssdebug +++|            BEGIN
02427  M01S02401.ssdebug +++|            LOFPROC(MAP$NAM[0]);     # ADD LFN TO LIST OF FILES #
02428  M01S02402.ssdebug +++|            END
02429  M01S02403.ssdebug +++|
02430  M01S02404.ssdebug +++|          END  # OPEN SMMAP #
02431  M01S02405.ssdebug +++|
02432  M01S02406.ssdebug +++|#
02433  M01S02407.ssdebug +++|*     OPEN THE CATALOG FOR *RF*, *RP*, *RL*, AND *CF* DIRECTIVES.
02434  M01S02408.ssdebug +++|#
02435  M01S02409.ssdebug +++|
02436  M01S02410.ssdebug +++|        IF DBARG$OP[0] EQ "RF"
02437  M01S02411.ssdebug +++|          OR DBARG$OP[0] EQ "RP"
02438  M01S02412.ssdebug +++|          OR DBARG$OP[0] EQ "RL"
02439  M01S02413.ssdebug +++|          OR (DBARG$OP[0] EQ "CF" AND DBARG$FL[0] EQ "ME"
02440  M01S02414.ssdebug +++|          AND DBARG$FO[0] GR 0)
02441  M01S02415.ssdebug +++|        THEN
02442  M01S02416.ssdebug +++|          BEGIN  # OPEN CATALOG #
02443  M01S02417.ssdebug +++|          PFP$FAM[0] = DBARG$FM[0];  # SET FAMILY AND USER INDEX #
02444  M01S02418.ssdebug +++|          PFP$UI[0] = DEF$UI + DBARG$SB[0];
02445  M01S02419.ssdebug +++|          SETPFP(PFP);
02446  M01S02420.ssdebug +++|          IF PFP$STAT[0] NQ 0
02447  M01S02421.ssdebug +++|          THEN                       # FAMILY NOT FOUND #
02448  M01S02422.ssdebug +++|            BEGIN
02449  M01S02423.ssdebug +++|            DBMSG$LN[0] = " FAMILY NOT FOUND.";
02450  M01S02424.ssdebug +++|            MESSAGE(DBMSG[0],SYSUDF1);
02451  M01S02425.ssdebug +++|            RESTPFP(PFP$ABORT);      # RESTORE USER-S *PFP* AND ABORT #
02452  M01S02426.ssdebug +++|            END
02453  M01S02427.ssdebug +++|
02454  M01S02428.ssdebug +++|          CAT$NAM[0] = SFMCAT;
02455  M01S02429.ssdebug +++|          DIS$SB = XCOD(DBARG$SB[0]);
02456  M01S02430.ssdebug +++|          CAT$SB[0] = C<9,1>DIS$SB;
02457  M01S02431.ssdebug +++|          COPEN(DBARG$FM[0],DBARG$SB[0],CATNAME[0],"RM",TRUE,RESPCODE);
02458  M01S02432.ssdebug +++|          IF RESPCODE NQ CMASTAT"NOERR"
02459  M01S02433.ssdebug +++|          THEN                       # UNABLE TO OPEN CATALOG #
02460  M01S02434.ssdebug +++|            BEGIN
02461  M01S02435.ssdebug +++|            DBRESP(RESPCODE,0);
02462  M01S02436.ssdebug +++|            TEST I;
02463  M01S02437.ssdebug +++|            END
02464  M01S02438.ssdebug +++|
02465  M01S02439.ssdebug +++|          ELSE                       # CATALOG OPENED #
02466  M01S02440.ssdebug +++|            BEGIN
02467  M01S02441.ssdebug +++|            LOFPROC(OCT$LFN[1]);     # ADD LFN TO LIST OF FILES #
02468  M01S02442.ssdebug +++|            END
02469  M01S02443.ssdebug +++|
02470  M01S02444.ssdebug +++|          END  # OPEN CATALOG #
02471  M01S02445.ssdebug +++|
02472  M01S02446.ssdebug +++|#
02473  M01S02447.ssdebug +++|*     PROCESS THE DIRECTIVE.
02474  M01S02448.ssdebug +++|#
02475  M01S02449.ssdebug +++|
02476  M01S02450.ssdebug +++|        SLOWFOR J = 0 STEP 1 UNTIL DBDIRNM
02477  M01S02451.ssdebug +++|        DO
02478  M01S02452.ssdebug +++|          BEGIN  # FIND MATCHING DIRECTIVE #
02479  M01S02453.ssdebug +++|          IF DB$DIRNM[J] EQ DBARG$OP[0]
02480  M01S02454.ssdebug +++|          THEN
02481  M01S02455.ssdebug +++|            BEGIN
02482  M01S02456.ssdebug +++|            GOTO DIR$ACT[J];
02483  M01S02457.ssdebug +++|CMAP:                                # REMOVE SMMAP ENTRY #
02484  M01S02458.ssdebug +++|            DBCMAP;
02485  M01S02459.ssdebug +++|            TEST I;
02486  M01S02460.ssdebug +++|
02487  M01S02461.ssdebug +++|FMAP:                                # REMOVE *FCT* ENTRY #
02488  M01S02462.ssdebug +++|            DBFMAP;
02489  M01S02463.ssdebug +++|            TEST I;
02490  M01S02464.ssdebug +++|
02491  M01S02465.ssdebug +++|REL:                                 # RELEASE PROBLEM CHAINS #
02492  M01S02466.ssdebug +++|            DBREL;
02493  M01S02467.ssdebug +++|            TEST I;
02494  M01S02468.ssdebug +++|
02495  M01S02469.ssdebug +++|RDFIL:                               # READ FILE #
02496  M01S02470.ssdebug +++|            DBRDFIL;
02497  M01S02471.ssdebug +++|            TEST I;
02498  M01S02472.ssdebug +++|
02499  M01S02473.ssdebug +++|RDSTM:
02500  M01S02474.ssdebug +++|            DBRDSTM;                 # READ AU #
02501  M01S02475.ssdebug +++|            TEST I;
02502  M01S02476.ssdebug +++|
02503  M01S02477.ssdebug +++|FLAG:
02504  M01S02478.ssdebug +++|            DBFLAG;                  # CHANGE FLAG #
02505  M01S02479.ssdebug +++|            TEST I;
02506  M01S02480.ssdebug +++|
02507  M01S02481.ssdebug +++|            END
02508  M01S02482.ssdebug +++|
02509  M01S02483.ssdebug +++|          END  # FIND MATCHING DIRECTIVE #
02510  M01S02484.ssdebug +++|
02511  M01S02485.ssdebug +++|        END  # PROCESS EACH DIRECTIVE #
02512  M01S02486.ssdebug +++|
02513  M01S02487.ssdebug +++|      RETURN;
02514  M01S02488.ssdebug +++|
02515  M01S02489.ssdebug +++|      END  # DBMAIN #
02516  M01S02490.ssdebug +++|
02517  M01S02491.ssdebug +++|    TERM
02518  M01S02492.ssdebug +++|PROC DBOPT(FLAG);
02519  M01S02493.ssdebug +++|# TITLE DBOPT - CHECKS CRACKED PARAMETERS FOR VALID OPTIONS.          #
02520  M01S02494.ssdebug +++|
02521  M01S02495.ssdebug +++|      BEGIN  # DBOPT #
02522  M01S02496.ssdebug +++|
02523  M01S02497.ssdebug +++|#
02524  M01S02498.ssdebug +++|**    DBOPT - CHECKS CRACKED PARAMETERS FOR VALID OPTIONS.
02525  M01S02499.ssdebug +++|*
02526  M01S02500.ssdebug +++|*     PROC DBOPT(FLAG)
02527  M01S02501.ssdebug +++|*
02528  M01S02502.ssdebug +++|*     ENTRY   THE CRACKED AND CONVERTED PARAMETERS ARE SET UP
02529  M01S02503.ssdebug +++|*             IN THE COMMON AREA DEFINED IN *COMTDBP*.
02530  M01S02504.ssdebug +++|*
02531  M01S02505.ssdebug +++|*     EXIT    ALL OPTIONS HAVE BEEN CHECKED FOR VALIDITY.
02532  M01S02506.ssdebug +++|*             (FLAG) = 0, NO ERROR.
02533  M01S02507.ssdebug +++|*                      1, VALID OPTION VIOLATED.
02534  M01S02508.ssdebug +++|*
02535  M01S02509.ssdebug +++|*     NOTES   ALL THE DIRECTIVES ARE CHECKED FOR VALID
02536  M01S02510.ssdebug +++|*             OPTIONS.  THE VALID OPTIONS ARE
02537  M01S02511.ssdebug +++|*               1.  *OP* MUST BE A VALID DIRECTIVE NAME.
02538  M01S02512.ssdebug +++|*               2.  *FO* MUST BE SPECIFIED FOR OP=RF, RP AND RL,
02539  M01S02513.ssdebug +++|*                   AND *ST* MUST BE SPECIFIED FOR OP=RF AND RP.
02540  M01S02514.ssdebug +++|*               3.  *SB* MUST BE FROM 0 TO 7.
02541  M01S02515.ssdebug +++|*               4.  *CS* MUST BE FROM A THROUGH H.
02542  M01S02516.ssdebug +++|*               5.  *SL* AND *SU* MUST BE FROM 1 TO 1931.
02543  M01S02517.ssdebug +++|*               5.  *SL* AND *SU* MUST BE FROM 1 TO 1931.
02544  M01S02518.ssdebug +++|*               6.  *SL* MUST BE LESS THAN OR EQUAL TO *SU*.
02545  M01S02519.ssdebug +++|*               7.  FOR OP=RS, ONE AND ONLY ONE OF THE FOLLOWING
02546  M01S02520.ssdebug +++|*                   PARAMETERS MUST BE SPECIFIED:  *V*, *YI*, OR *D*.
02547  M01S02521.ssdebug +++|*               8.  FOR OP=CF, ONE AND ONLY ONE OF THE FOLLOWING
02548  M01S02522.ssdebug +++|*                   PARAMETERS MUST BE SPECIFIED:  *V*, *YI*, OR *FO*.
02549  M01S02523.ssdebug +++|*               9.  *FL*, *ON*, AND *OF* ARE VALID ONLY FOR OP=CF.
02550  M01S02524.ssdebug +++|*               10. FOR OP=CF, *FL* MUST BE A VALID FLAG NAME AND
02551  M01S02525.ssdebug +++|*                   EITHER *ON* OR *OF* MUST BE SPECIFIED.
02552  M01S02526.ssdebug +++|*               11. *YI* AND *ZI* MUST BE SPECIFIED TOGETHER.
02553  M01S02527.ssdebug +++|*               12. *YI* MUST BE FROM 0 TO 21.
02554  M01S02528.ssdebug +++|*               13. *ZI* MUST BE FROM 0 TO 15.
02555  M01S02529.ssdebug +++|*               14. *YI*, *ZI* MUST BE SPECIFIED FOR OP=RC.
02556  M01S02530.ssdebug +++|*
02557  M01S02531.ssdebug +++|*              ANY VIOLATION OF THE VALID OPTIONS CAUSES A
02558  M01S02532.ssdebug +++|*              MESSAGE TO BE PRINTED IN THE DAYFILE AND THE
02559  M01S02533.ssdebug +++|*              REPORT FILE, AND AN ERROR FLAG TO BE RETURNED
02560  M01S02534.ssdebug +++|*              TO THE CALLING ROUTINE.
02561  M01S02535.ssdebug +++|#
02562  M01S02536.ssdebug +++|
02563  M01S02537.ssdebug +++|      ITEM FLAG       I;             # ERROR STATUS #
02564  M01S02538.ssdebug +++|
02565  M01S02539.ssdebug +++|#
02566  M01S02540.ssdebug +++|****  PROC DBOPT - XREF LIST BEGIN.
02567  M01S02541.ssdebug +++|#
02568  M01S02542.ssdebug +++|
02569  M01S02543.ssdebug +++|      XREF
02570  M01S02544.ssdebug +++|        BEGIN
02571  M01S02545.ssdebug +++|        PROC DBERR;                  # ERROR PROCESSOR #
02572  M01S02546.ssdebug +++|        END
02573  M01S02547.ssdebug +++|
02574  M01S02548.ssdebug +++|#
02575  M01S02549.ssdebug +++|****  PROC DBOPT - XREF LIST END.
02576  M01S02550.ssdebug +++|#
02577  M01S02551.ssdebug +++|
02578  M01S02552.ssdebug +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
02579  M01S02553.ssdebug +++|*CALL COMBFAS
02580  M01S02554.ssdebug +++|*CALL COMBCPR
02581  M01S02555.ssdebug +++|*CALL COMTDBP
02582  M01S02556.ssdebug +++|*CALL COMTDBG
02583  M01S02557.ssdebug +++|*CALL COMTDER
02584  M01S02558.ssdebug +++|*CALL COMTLAB
02585  M01S02559.ssdebug +++|
02586  M01S02560.ssdebug +++|      ITEM FOUND      B;             # SEARCH FLAG #
02587  M01S02561.ssdebug +++|      ITEM I          I;             # LOOP INDUCTION VARIABLE #
02588  M01S02562.ssdebug +++|      ITEM OPTCOUNT   I;             # OPTION COUNT #
02589  M01S02563.ssdebug +++|
02590  M01S02564.ssdebug +++|CONTROL EJECT;
02591  M01S02565.ssdebug +++|
02592  M01S02566.ssdebug +++|      FLAG = 1;                      # INITIALIZE #
02593  M01S02567.ssdebug +++|
02594  M01S02568.ssdebug +++|#
02595  M01S02569.ssdebug +++|*     CHECK FOR A LEGAL DIRECTIVE NAME.
02596  M01S02570.ssdebug +++|#
02597  M01S02571.ssdebug +++|
02598  M01S02572.ssdebug +++|      FOUND = FALSE;
02599  M01S02573.ssdebug +++|      FASTFOR I = 0 STEP 1 UNTIL DBDIRNM
02600  M01S02574.ssdebug +++|      DO
02601  M01S02575.ssdebug +++|        BEGIN  # SEARCH FOR MATCHING DIRECTIVE NAME #
02602  M01S02576.ssdebug +++|        IF DBARG$OP[0] EQ DB$DIRNM[I]
02603  M01S02577.ssdebug +++|        THEN
02604  M01S02578.ssdebug +++|          BEGIN
02605  M01S02579.ssdebug +++|          FOUND = TRUE;
02606  M01S02580.ssdebug +++|          END
02607  M01S02581.ssdebug +++|
02608  M01S02582.ssdebug +++|        END  # SEARCH FOR MATCHING DIRECTIVE NAME #
02609  M01S02583.ssdebug +++|
02610  M01S02584.ssdebug +++|      IF NOT FOUND
02611  M01S02585.ssdebug +++|      THEN                           # ILLEGAL DIRECTIVE #
02612  M01S02586.ssdebug +++|        BEGIN
02613  M01S02587.ssdebug +++|        DBERRCODE = S"DILLEG$DIR";
02614  M01S02588.ssdebug +++|        DBERR(DBERRCODE);
02615  M01S02589.ssdebug +++|        RETURN;
02616  M01S02590.ssdebug +++|        END
02617  M01S02591.ssdebug +++|
02618  M01S02592.ssdebug +++|#
02619  M01S02593.ssdebug +++|*     CHECK IF *FO* SPECIFIED CORRECTLY.
02620  M01S02594.ssdebug +++|#
02621  M01S02595.ssdebug +++|
02622  M01S02596.ssdebug +++|      IF DBARG$FO[0] EQ -1           ##
02623  M01S02597.ssdebug +++|        OR (DBARG$FO[0] EQ -2        ##
02624  M01S02598.ssdebug +++|        AND (DBARG$OP[0] EQ "RF"     ##
02625  M01S02599.ssdebug +++|        OR DBARG$OP[0] EQ "RP"       ##
02626  M01S02600.ssdebug +++|        OR DBARG$OP[0] EQ "RL"))
02627  M01S02601.ssdebug +++|        OR ( DBARG$FO[0] GQ 0 AND DBARG$FO[0] LS MINFO )
02628  M01S02602.ssdebug +++|        OR ( DBARG$FO[0] GR MAXFO )
02629  M01S02603.ssdebug +++|      THEN                           # *FO* OPTION VIOLATED #
02630  M01S02604.ssdebug +++|        BEGIN
02631  M01S02605.ssdebug +++|        DBERRCODE = S"DVIOL$FO";
02632  M01S02606.ssdebug +++|        DBERR(DBERRCODE);
02633  M01S02607.ssdebug +++|        RETURN;
02634  M01S02608.ssdebug +++|        END
02635  M01S02609.ssdebug +++|
02636  M01S02610.ssdebug +++|#
02637  M01S02611.ssdebug +++|*     CHECK IF *ST* IS SPECIFIED CORRECTLY.
02638  M01S02612.ssdebug +++|#
02639  M01S02613.ssdebug +++|
02640  M01S02614.ssdebug +++|      IF DBARG$ST[0] EQ -1           ##
02641  M01S02615.ssdebug +++|        OR ( ( DBARG$ST[0] EQ -2       ##
02642  M01S02616.ssdebug +++|        OR DBARG$ST[0] EQ 0 )          ##
02643  M01S02617.ssdebug +++|        AND (DBARG$OP[0] EQ "RF"     ##
02644  M01S02618.ssdebug +++|        OR DBARG$OP[0] EQ "RP"))
02645  M01S02619.ssdebug +++|      THEN                           # *ST* OPTION VIOLATED #
02646  M01S02620.ssdebug +++|        BEGIN
02647  M01S02621.ssdebug +++|        DBERRCODE = S"DVIOL$ST";
02648  M01S02622.ssdebug +++|        DBERR(DBERRCODE);
02649  M01S02623.ssdebug +++|        RETURN;
02650  M01S02624.ssdebug +++|        END
02651  M01S02625.ssdebug +++|
02652  M01S02626.ssdebug +++|#
02653  M01S02627.ssdebug +++|*     CHECK THE VALUE OF *SB*.
02654  M01S02628.ssdebug +++|#
02655  M01S02629.ssdebug +++|
02656  M01S02630.ssdebug +++|      IF DBARG$SB[0] LS 0            ##
02657  M01S02631.ssdebug +++|        OR DBARG$SB[0] GR 7
02658  M01S02632.ssdebug +++|      THEN                           # *SB* OPTION VIOLATED #
02659  M01S02633.ssdebug +++|        BEGIN
02660  M01S02634.ssdebug +++|        DBERRCODE = S"DVIOL$SB";
02661  M01S02635.ssdebug +++|        DBERR(DBERRCODE);
02662  M01S02636.ssdebug +++|        RETURN;
02663  M01S02637.ssdebug +++|        END
02664  M01S02638.ssdebug +++|
02665  M01S02639.ssdebug +++|#
02666  M01S02640.ssdebug +++|*     CHECK THE VALUE OF *SM*.
02667  M01S02641.ssdebug +++|#
02668  M01S02642.ssdebug +++|
02669  M01S02643.ssdebug +++|      IF DBARG$SM[0] LS "A"          ##
02670  M01S02644.ssdebug +++|        OR DBARG$SM[0] GR "H"        ##
02671  M01S02645.ssdebug +++|        OR DBARG$WSM[0] NQ 0         ##
02672  M01S02646.ssdebug +++|      THEN                           # *SM* OPTION VIOLATED #
02673  M01S02647.ssdebug +++|        BEGIN
02674  M01S02648.ssdebug +++|        DBERRCODE = S"DVIOL$SM";
02675  M01S02649.ssdebug +++|        DBERR(DBERRCODE);
02676  M01S02650.ssdebug +++|        RETURN;
02677  M01S02651.ssdebug +++|        END
02678  M01S02652.ssdebug +++|
02679  M01S02653.ssdebug +++|#
02680  M01S02654.ssdebug +++|*     CHECK THE VALUE OF *SL*.
02681  M01S02655.ssdebug +++|#
02682  M01S02656.ssdebug +++|
02683  M01S02657.ssdebug +++|      IF ( DBARG$SL[0] LS 0          ##
02684  M01S02658.ssdebug +++|        OR DBARG$SL[0] GR INAVOT )  # MAXIMUM AU PER CARTRIDGE #
02685  M01S02659.ssdebug +++|        OR ( DBARG$OP[0] EQ "RS"     ##
02686  M01S02660.ssdebug +++|        AND DBARG$SL[0] EQ 0 )       ##
02687  M01S02661.ssdebug +++|      THEN                           # *SL* OPTION VIOLATED #
02688  M01S02662.ssdebug +++|        BEGIN
02689  M01S02663.ssdebug +++|        DBERRCODE = S"DVIOL$SL";
02690  M01S02664.ssdebug +++|        DBERR(DBERRCODE);
02691  M01S02665.ssdebug +++|        RETURN;
02692  M01S02666.ssdebug +++|        END
02693  M01S02667.ssdebug +++|
02694  M01S02668.ssdebug +++|#
02695  M01S02669.ssdebug +++|*     CHECK THE VALUE OF *SU*.
02696  M01S02670.ssdebug +++|#
02697  M01S02671.ssdebug +++|
02698  M01S02672.ssdebug +++|      IF ( DBARG$SU[0] LS 0          ##
02699  M01S02673.ssdebug +++|        OR DBARG$SU[0] GR INAVOT )  # MAXIMUM AU PER CARTRIDGE #
02700  M01S02674.ssdebug +++|        OR ( DBARG$OP[0] EQ "RS"     ##
02701  M01S02675.ssdebug +++|        AND DBARG$SU[0] EQ 0 )       ##
02702  M01S02676.ssdebug +++|        OR DBARG$SU[0] LS DBARG$SL[0]
02703  M01S02677.ssdebug +++|      THEN                           # *SU* OPTION VIOLATED #
02704  M01S02678.ssdebug +++|        BEGIN
02705  M01S02679.ssdebug +++|        DBERRCODE = S"DVIOL$SU";
02706  M01S02680.ssdebug +++|        DBERR(DBERRCODE);
02707  M01S02681.ssdebug +++|        RETURN;
02708  M01S02682.ssdebug +++|        END
02709  M01S02683.ssdebug +++|
02710  M01S02684.ssdebug +++|#
02711  M01S02685.ssdebug +++|*     CHECK THE VALUE OF *CN*
02712  M01S02686.ssdebug +++|#
02713  M01S02687.ssdebug +++|
02714  M01S02688.ssdebug +++|      IF DBARG$WCN[0] EQ -1
02715  M01S02689.ssdebug +++|      THEN                           # *CN* OPTION VIOLATED #
02716  M01S02690.ssdebug +++|        BEGIN
02717  M01S02691.ssdebug +++|        DBERRCODE = S"DVIOL$V";
02718  M01S02692.ssdebug +++|        DBERR(DBERRCODE);
02719  M01S02693.ssdebug +++|        RETURN;
02720  M01S02694.ssdebug +++|        END
02721  M01S02695.ssdebug +++|
02722  M01S02696.ssdebug +++|
02723  M01S02697.ssdebug +++|#
02724  M01S02698.ssdebug +++|*     CHECK THE VALUE OF *YI* AND *ZI*.
02725  M01S02699.ssdebug +++|#
02726  M01S02700.ssdebug +++|
02727  M01S02701.ssdebug +++|      IF DBARG$YI[0] LS -1           ##
02728  M01S02702.ssdebug +++|        OR DBARG$ZI[0] LS -1         ##
02729  M01S02703.ssdebug +++|        OR DBARG$YI[0] GR MAX$Y      ##
02730  M01S02704.ssdebug +++|        OR DBARG$ZI[0] GR MAX$Z      ##
02731  M01S02705.ssdebug +++|        OR DBARG$ZI[0] EQ Z$NO$CUBE
02732  M01S02706.ssdebug +++|      THEN                           # *YI*, *ZI* OPTION VIOLATED #
02733  M01S02707.ssdebug +++|        BEGIN
02734  M01S02708.ssdebug +++|        DBERRCODE = S"DVIOL$YZ";
02735  M01S02709.ssdebug +++|        DBERR(DBERRCODE);
02736  M01S02710.ssdebug +++|        RETURN;
02737  M01S02711.ssdebug +++|        END
02738  M01S02712.ssdebug +++|
02739  M01S02713.ssdebug +++|#
02740  M01S02714.ssdebug +++|*     CHECK IF *YI* AND *ZI* ARE SPECIFIED TOGETHER.
02741  M01S02715.ssdebug +++|#
02742  M01S02716.ssdebug +++|
02743  M01S02717.ssdebug +++|      IF (DBARG$YI[0] EQ -1          ##
02744  M01S02718.ssdebug +++|        AND DBARG$ZI[0] GQ 0)        ##
02745  M01S02719.ssdebug +++|        OR (DBARG$YI[0] GQ 0         ##
02746  M01S02720.ssdebug +++|        AND DBARG$ZI[0] EQ -1)
02747  M01S02721.ssdebug +++|      THEN                           # *YI*, *ZI* OPTION VIOLATED #
02748  M01S02722.ssdebug +++|        BEGIN
02749  M01S02723.ssdebug +++|        DBERRCODE = S"DVIOL$YZ";
02750  M01S02724.ssdebug +++|        DBERR(DBERRCODE);
02751  M01S02725.ssdebug +++|        RETURN;
02752  M01S02726.ssdebug +++|        END
02753  M01S02727.ssdebug +++|
02754  M01S02728.ssdebug +++|#
02755  M01S02729.ssdebug +++|*     *YI*, *ZI* MUST BE SPECIFIED FOR OP=RC.
02756  M01S02730.ssdebug +++|#
02757  M01S02731.ssdebug +++|
02758  M01S02732.ssdebug +++|      IF DBARG$OP[0] EQ "RC"         ##
02759  M01S02733.ssdebug +++|        AND DBARG$YI[0] EQ -1
02760  M01S02734.ssdebug +++|      THEN                           # *YI*, *ZI* OPTION VIOLATED #
02761  M01S02735.ssdebug +++|        BEGIN
02762  M01S02736.ssdebug +++|        DBERRCODE = S"DVIOL$YZ";
02763  M01S02737.ssdebug +++|        DBERR(DBERRCODE);
02764  M01S02738.ssdebug +++|        RETURN;
02765  M01S02739.ssdebug +++|        END
02766  M01S02740.ssdebug +++|
02767  M01S02741.ssdebug +++|#
02768  M01S02742.ssdebug +++|*     FOR OP=RS, ONE AND ONLY ONE OF THE FOLLOWING MUST BE
02769  M01S02743.ssdebug +++|*     SPECIFIED:  *CN*, OR *YI*.  FOR OP=CF, ONE AND ONLY
02770  M01S02744.ssdebug +++|*     ONE OF THE FOLLOWING MUST BE SPECIFIED: *CN*, *YI*, OR *FO*.
02771  M01S02745.ssdebug +++|#
02772  M01S02746.ssdebug +++|
02773  M01S02747.ssdebug +++|      IF DBARG$OP[0] EQ "RS" OR DBARG$OP[0] EQ "CF"
02774  M01S02748.ssdebug +++|      THEN
02775  M01S02749.ssdebug +++|        BEGIN  # CHECK *CN*, *YI*, AND *FO* #
02776  M01S02750.ssdebug +++|        OPTCOUNT = 0;
02777  M01S02751.ssdebug +++|        IF DBARG$WCN[0] NQ 0
02778  M01S02752.ssdebug +++|        THEN                          # *CN* SPECIFIED #
02779  M01S02753.ssdebug +++|          BEGIN
02780  M01S02754.ssdebug +++|          OPTCOUNT = OPTCOUNT + 1;
02781  M01S02755.ssdebug +++|          END
02782  M01S02756.ssdebug +++|
02783  M01S02757.ssdebug +++|        IF DBARG$YI[0] GQ 0
02784  M01S02758.ssdebug +++|        THEN                         # *YI* SPECIFIED #
02785  M01S02759.ssdebug +++|          BEGIN
02786  M01S02760.ssdebug +++|          OPTCOUNT = OPTCOUNT + 1;
02787  M01S02761.ssdebug +++|          END
02788  M01S02762.ssdebug +++|
02789  M01S02763.ssdebug +++|        IF DBARG$OP[0] EQ "CF" ##
02790  M01S02764.ssdebug +++|          AND DBARG$FO[0] GR 0
02791  M01S02765.ssdebug +++|        THEN                         # *FO* SPECIFIED AND OP=CF #
02792  M01S02766.ssdebug +++|          BEGIN
02793  M01S02767.ssdebug +++|          OPTCOUNT = OPTCOUNT + 1;
02794  M01S02768.ssdebug +++|          DBERRCODE = S"DVIOL$VFOX";
02795  M01S02769.ssdebug +++|          END
02796  M01S02770.ssdebug +++|
02797  M01S02771.ssdebug +++|        IF OPTCOUNT NQ 1
02798  M01S02772.ssdebug +++|        THEN                         # OPTION VIOLATED #
02799  M01S02773.ssdebug +++|          BEGIN
02800  M01S02774.ssdebug +++|          DBERR(DBERRCODE);
02801  M01S02775.ssdebug +++|          RETURN;
02802  M01S02776.ssdebug +++|          END
02803  M01S02777.ssdebug +++|
02804  M01S02778.ssdebug +++|        END  # CHECK *CN*, *YI*, AND *FO* #
02805  M01S02779.ssdebug +++|
02806  M01S02780.ssdebug +++|
02807  M01S02781.ssdebug +++|#
02808  M01S02782.ssdebug +++|*     *FL* IS REQUIRED FOR OP=CF, AND NOT ALLOWED FOR ANY
02809  M01S02783.ssdebug +++|*     OTHER DIRECTIVES.
02810  M01S02784.ssdebug +++|#
02811  M01S02785.ssdebug +++|
02812  M01S02786.ssdebug +++|      IF (DBARG$OP[0] EQ "CF" AND DBARG$FL[0] LQ 0)
02813  M01S02787.ssdebug +++|        OR (DBARG$OP[0] NQ "CF" AND DBARG$FL[0] GR 0)
02814  M01S02788.ssdebug +++|      THEN                           # *FL* OPTION VIOLATED #
02815  M01S02789.ssdebug +++|        BEGIN
02816  M01S02790.ssdebug +++|        DBERRCODE = S"DVIOL$FL";
02817  M01S02791.ssdebug +++|        DBERR(DBERRCODE);
02818  M01S02792.ssdebug +++|        RETURN;
02819  M01S02793.ssdebug +++|        END
02820  M01S02794.ssdebug +++|
02821  M01S02795.ssdebug +++|#
02822  M01S02796.ssdebug +++|*     EITHER *ON* OR *OF* (BUT NOT BOTH) MUST BE SPECIFIED FOR
02823  M01S02797.ssdebug +++|*     OP=CF, BUT NEITHER MAY BE USED WITH OTHER DIRECTIVES.
02824  M01S02798.ssdebug +++|#
02825  M01S02799.ssdebug +++|
02826  M01S02800.ssdebug +++|      IF (DBARG$OP[0] EQ "CF" AND DBARG$ON[0] EQ DBARG$OF[0])
02827  M01S02801.ssdebug +++|        OR (DBARG$OP[0] NQ "CF"
02828  M01S02802.ssdebug +++|        AND ((DBARG$ON[0] NQ 0) OR (DBARG$OF[0] NQ 0)))
02829  M01S02803.ssdebug +++|      THEN                           # *ON*, *OF* OPTION VIOLATED #
02830  M01S02804.ssdebug +++|        BEGIN
02831  M01S02805.ssdebug +++|        DBERRCODE = S"DVIOL$ONOF";
02832  M01S02806.ssdebug +++|        DBERR(DBERRCODE);
02833  M01S02807.ssdebug +++|        RETURN;
02834  M01S02808.ssdebug +++|        END
02835  M01S02809.ssdebug +++|
02836  M01S02810.ssdebug +++|#
02837  M01S02811.ssdebug +++|*     CHECK FOR A VALID VALUE OF *FL*.
02838  M01S02812.ssdebug +++|#
02839  M01S02813.ssdebug +++|
02840  M01S02814.ssdebug +++|      IF DBARG$OP[0] EQ "CF"
02841  M01S02815.ssdebug +++|      THEN                           # CHANGE FLAG DIRECTIVE #
02842  M01S02816.ssdebug +++|        BEGIN  # CHECK *FL* #
02843  M01S02817.ssdebug +++|        FOUND = FALSE;
02844  M01S02818.ssdebug +++|        FASTFOR I = 0 STEP 1 WHILE NOT FOUND AND I LQ DBFLAGNM
02845  M01S02819.ssdebug +++|        DO
02846  M01S02820.ssdebug +++|          BEGIN
02847  M01S02821.ssdebug +++|          IF DBARG$FL[0] EQ DB$FLAG[I]
02848  M01S02822.ssdebug +++|          THEN
02849  M01S02823.ssdebug +++|            BEGIN
02850  M01S02824.ssdebug +++|            FOUND = TRUE;
02851  M01S02825.ssdebug +++|            DBARG$FLCD[0] = DB$FLCODE[I];  # SAVE STATUS VALUE #
02852  M01S02826.ssdebug +++|            DBARG$FLSD[0] = DB$FLSTR[I];   # AU DETAIL FLAG #
02853  M01S02827.ssdebug +++|            END
02854  M01S02828.ssdebug +++|
02855  M01S02829.ssdebug +++|          END
02856  M01S02830.ssdebug +++|
02857  M01S02831.ssdebug +++|        IF NOT FOUND
02858  M01S02832.ssdebug +++|        THEN
02859  M01S02833.ssdebug +++|          BEGIN
02860  M01S02834.ssdebug +++|          DBERRCODE = S"DVIOL$FL";
02861  M01S02835.ssdebug +++|          DBERR(DBERRCODE);
02862  M01S02836.ssdebug +++|          RETURN;
02863  M01S02837.ssdebug +++|          END
02864  M01S02838.ssdebug +++|
02865  M01S02839.ssdebug +++|        END  # CHECK *FL* #
02866  M01S02840.ssdebug +++|
02867  M01S02841.ssdebug +++|      FLAG = 0;                      # NO ERRORS DETECTED #
02868  M01S02842.ssdebug +++|      RETURN;
02869  M01S02843.ssdebug +++|
02870  M01S02844.ssdebug +++|      END  # DBOPT #
02871  M01S02845.ssdebug +++|
02872  M01S02846.ssdebug +++|    TERM
02873  M01S02847.ssdebug +++|PROC DBRDFIL;
02874  M01S02848.ssdebug +++|# TITLE DBRDFIL - PROCESS READ FILE DIRECTIVE.                        #
02875  M01S02849.ssdebug +++|
02876  M01S02850.ssdebug +++|      BEGIN  # DBRDFIL #
02877  M01S02851.ssdebug +++|
02878  M01S02852.ssdebug +++|#
02879  M01S02853.ssdebug +++|**    DBRDFIL - PROCESS READ FILE DIRECTIVE.
02880  M01S02854.ssdebug +++|*
02881  M01S02855.ssdebug +++|*     PROC DBRDFIL.
02882  M01S02856.ssdebug +++|*
02883  M01S02857.ssdebug +++|*     ENTRY     THE CRACKED AND SYNTAX CHECKED DIRECTIVE IS
02884  M01S02858.ssdebug +++|*               IN THE COMMON AREA DEFINED IN *COMTDBP*.
02885  M01S02859.ssdebug +++|*               THE CATALOG IS OPEN FOR THE SPECIFIED FAMILY
02886  M01S02860.ssdebug +++|*               AND SUBFAMILY.
02887  M01S02861.ssdebug +++|*               P<CPR>     = FWA OF CALLSS PARAMETER BLOCK.
02888  M01S02862.ssdebug +++|*               (USER$FAM) = USER-S FAMILY NAME.
02889  M01S02863.ssdebug +++|*               (USER$UI)  = USER-S USER INDEX.
02890  M01S02864.ssdebug +++|*
02891  M01S02865.ssdebug +++|*     EXIT      THE DIRECTIVE HAS BEEN PROCESSED AND
02892  M01S02866.ssdebug +++|*               THE CATALOG HAS BEEN CLOSED OR AN ERROR
02893  M01S02867.ssdebug +++|*               CONDITION HAS BEEN DETECTED.
02894  M01S02868.ssdebug +++|*
02895  M01S02869.ssdebug +++|*     MESSAGES  SSDEBUG ABNORMAL, DBRDFIL.
02896  M01S02870.ssdebug +++|*
02897  M01S02871.ssdebug +++|*     NOTES     THE CARTRIDGE IS LOADED AND A REQUEST IS SENT
02898  M01S02872.ssdebug +++|*               TO EXEC TO COPY EACH RAW AU IN THE CHAIN
02899  M01S02873.ssdebug +++|*               TO THE SPECIFIED FILE.  IF AN OFF CARTRIDGE
02900  M01S02874.ssdebug +++|*               LINK EXISTS THE NEXT CARTRIDGE IS LOADED.  THIS
02901  M01S02875.ssdebug +++|*               SEQUENCE IS REPEATED UNTIL THE ENTIRE FILE IS
02902  M01S02876.ssdebug +++|*               COPIED.  IF FROZEN CHAIN FLAG IS SET
02903  M01S02877.ssdebug +++|*               *SSDEBUG* ABORTS WITH A DAYFILE MESSAGE.
02904  M01S02878.ssdebug +++|#
02905  M01S02879.ssdebug +++|
02906  M01S02880.ssdebug +++|#
02907  M01S02881.ssdebug +++|****  PROC DBRDFIL - XREF LIST BEGIN.
02908  M01S02882.ssdebug +++|#
02909  M01S02883.ssdebug +++|
02910  M01S02884.ssdebug +++|      XREF
02911  M01S02885.ssdebug +++|        BEGIN
02912  M01S02886.ssdebug +++|        PROC CCLOSE;                 # CLOSES THE CATALOG #
02913  M01S02887.ssdebug +++|        PROC CGETFCT;                # GET *FCT* ENTRY #
02914  M01S02888.ssdebug +++|        PROC DBCALL4;                # ISSUES A TYPE 4 UCP REQUEST #
02915  M01S02889.ssdebug +++|        PROC DBERR;                  # ERROR PROCESSOR #
02916  M01S02890.ssdebug +++|        PROC DBRESP;                 # PROCESSES RESPONSE FROM EXEC #
02917  M01S02891.ssdebug +++|        PROC MESSAGE;                # DISPLAYS MESSAGES #
02918  M01S02892.ssdebug +++|        PROC PFD;                    # *PFM* REQUEST INTERFACE #
02919  M01S02893.ssdebug +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
02920  M01S02894.ssdebug +++|                                       OR RETURN #
02921  M01S02895.ssdebug +++|        PROC RETERN;                 # RETURNS A FILE #
02922  M01S02896.ssdebug +++|        PROC SETPFP;                 # SET FAMILY AND USER INDEX #
02923  M01S02897.ssdebug +++|        PROC ZSETFET;                # INITIALIZES A FET #
02924  M01S02898.ssdebug +++|        END
02925  M01S02899.ssdebug +++|
02926  M01S02900.ssdebug +++|#
02927  M01S02901.ssdebug +++|****  PROC DBRDFIL - XREF LIST END.
02928  M01S02902.ssdebug +++|#
02929  M01S02903.ssdebug +++|
02930  M01S02904.ssdebug +++|      DEF PROCNAME  #"DBRDFIL."#;    # PROC NAME #
02931  M01S02905.ssdebug +++|
02932  M01S02906.ssdebug +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
02933  M01S02907.ssdebug +++|*CALL COMBFAS
02934  M01S02908.ssdebug +++|*CALL COMBCMS
02935  M01S02909.ssdebug +++|*CALL COMBCPR
02936  M01S02910.ssdebug +++|*CALL COMBMCT
02937  M01S02911.ssdebug +++|*CALL COMBPFP
02938  M01S02912.ssdebug +++|*CALL COMSPFM
02939  M01S02913.ssdebug +++|*CALL COMTDBG
02940  M01S02914.ssdebug +++|*CALL COMTDBP
02941  M01S02915.ssdebug +++|*CALL COMTDER
02942  M01S02916.ssdebug +++|
02943  M01S02917.ssdebug +++|      ITEM ANOTHERVOL B;             # MORE VOLUMES ON CARTRIDGE #
02944  M01S02918.ssdebug +++|      ITEM CHNCNTRL   I;             # CHAIN CONTROL FIELD #
02945  M01S02919.ssdebug +++|      ITEM FCTBADR    I;             # FWA OF BUFFER FOR *FCT* #
02946  M01S02920.ssdebug +++|      ITEM FLAG       I;             # ERROR STATUS #
02947  M01S02921.ssdebug +++|      ITEM GTNXTCART  B;             # GET NEXT CARTRIDGE FLAG #
02948  M01S02922.ssdebug +++|      ITEM LAST       B;             # END OF CHAIN INDICATOR #
02949  M01S02923.ssdebug +++|      ITEM LINK       I;             # OFF CARTRIDGE LINK #
02950  M01S02924.ssdebug +++|      ITEM NXTFCT     I;             # NEXT *FCT* ENTRY ORDINAL #
02951  M01S02925.ssdebug +++|      ITEM NXTSTRM    I;             # NEXT AU IN THE CHAIN #
02952  M01S02926.ssdebug +++|      ITEM RESPCODE   I;             # RESPONSE FROM EXEC #
02953  M01S02927.ssdebug +++|      ITEM SH         I;             # STRIPE HIGH #
02954  M01S02928.ssdebug +++|      ITEM SL         I;             # STRIPE LOW #
02955  M01S02929.ssdebug +++|      ITEM TEMP       I;             # INTEGER SCRATCH #
02956  M01S02930.ssdebug +++|      ARRAY FCTENT [0:0] P(FCTENTL);;  # *FCT* ENTRY #
02957  M01S02931.ssdebug +++|      ARRAY SCRFET [0:0] S(SFETL);;  # SCRATCH FET #
02958  M01S02932.ssdebug +++|
02959  M01S02933.ssdebug +++|
02960  M01S02934.ssdebug +++|CONTROL EJECT;
02961  M01S02935.ssdebug +++|
02962  M01S02936.ssdebug +++|#
02963  M01S02937.ssdebug +++|*     DEFINE THE USER-S FILE TO RECEIVE THE RAW AU DATA.
02964  M01S02938.ssdebug +++|#
02965  M01S02939.ssdebug +++|
02966  M01S02940.ssdebug +++|      RESTPFP(PFP$RESUME);           # RESTORE USER-S *PFP* #
02967  M01S02941.ssdebug +++|
02968  M01S02942.ssdebug +++|      FLAG = 0;
02969  M01S02943.ssdebug +++|      PFD("DEFINE",DBARG$PF[0],0,"RC",FLAG,0);
02970  M01S02944.ssdebug +++|      IF FLAG NQ OK
02971  M01S02945.ssdebug +++|      THEN                           # UNABLE TO DEFINE USER-S FILE #
02972  M01S02946.ssdebug +++|        BEGIN
02973  M01S02947.ssdebug +++|        DBERRCODE = S"DDEF$PF";
02974  M01S02948.ssdebug +++|        DBERR(DBERRCODE);
02975  M01S02949.ssdebug +++|        RETURN;
02976  M01S02950.ssdebug +++|        END
02977  M01S02951.ssdebug +++|
02978  M01S02952.ssdebug +++|      ZSETFET(LOC(SCRFET[0]),DBARG$PF[0],0,0,SFETL);
02979  M01S02953.ssdebug +++|      RETERN(SCRFET[0],RCL);
02980  M01S02954.ssdebug +++|
02981  M01S02955.ssdebug +++|      GTNXTCART = TRUE;              # INITIALIZE THE FLAGS #
02982  M01S02956.ssdebug +++|      LINK = 0;
02983  M01S02957.ssdebug +++|      ANOTHERVOL = FALSE;
02984  M01S02958.ssdebug +++|      NXTFCT = DBARG$FO[0];
02985  M01S02959.ssdebug +++|      SL = INSPAU*DBARG$ST[0] + (INFTST - INSPAU);
02986  M01S02960.ssdebug +++|      NXTSTRM = DBARG$ST[0];
02987  M01S02961.ssdebug +++|      LAST = FALSE;
02988  M01S02962.ssdebug +++|      FCTBADR = LOC(FCTENT[0]);
02989  M01S02963.ssdebug +++|
02990  M01S02964.ssdebug +++|#
02991  M01S02965.ssdebug +++|*     COPY EACH AU OF THE FILE.
02992  M01S02966.ssdebug +++|#
02993  M01S02967.ssdebug +++|
02994  M01S02968.ssdebug +++|      REPEAT WHILE NOT LAST
02995  M01S02969.ssdebug +++|      DO
02996  M01S02970.ssdebug +++|        BEGIN  # COPY RAW AU #
02997  M01S02971.ssdebug +++|        IF GTNXTCART  ##
02998  M01S02972.ssdebug +++|          AND NOT ANOTHERVOL
02999  M01S02973.ssdebug +++|        THEN
03000  M01S02974.ssdebug +++|          BEGIN  # GET NEXT CARTRIDGE #
03001  M01S02975.ssdebug +++|          CGETFCT(DBARG$FM[0],DBARG$SB[0],DBARG$SMID[0],NXTFCT,
03002  M01S02976.ssdebug +++|            FCTBADR,0,FLAG);
03003  M01S02977.ssdebug +++|          IF FLAG NQ CMASTAT"NOERR"
03004  M01S02978.ssdebug +++|          THEN                       # UNABLE TO GET *FCT* ENTRY #
03005  M01S02979.ssdebug +++|            BEGIN
03006  M01S02980.ssdebug +++|            DBRESP(FLAG,0);
03007  M01S02981.ssdebug +++|            RETURN;
03008  M01S02982.ssdebug +++|            END
03009  M01S02983.ssdebug +++|
03010  M01S02984.ssdebug +++|#
03011  M01S02985.ssdebug +++|*     CHECK FOR FROZEN CHAIN.
03012  M01S02986.ssdebug +++|#
03013  M01S02987.ssdebug +++|
03014  M01S02988.ssdebug +++|          P<FCT> = FCTBADR;
03015  M01S02989.ssdebug +++|          IF FCT$Y[0] EQ 0 AND FCT$Z[0] EQ 0
03016  M01S02990.ssdebug +++|          THEN                    # NO CARTRIDGE FOR *FO* #
03017  M01S02991.ssdebug +++|            BEGIN
03018  M01S02992.ssdebug +++|            FLAG = CMASTAT"ORDERR";
03019  M01S02993.ssdebug +++|            DBRESP(FLAG,0);
03020  M01S02994.ssdebug +++|            END
03021  M01S02995.ssdebug +++|
03022  M01S02996.ssdebug +++|          FLAG = FCT$FRCF(FCT$WD(NXTSTRM),FCT$WP(NXTSTRM));
03023  M01S02997.ssdebug +++|          IF FLAG EQ 1
03024  M01S02998.ssdebug +++|          THEN                       # FROZEN CHAIN #
03025  M01S02999.ssdebug +++|            BEGIN
03026  M01S03000.ssdebug +++|            DBERRCODE = S"DFROZ$CHN";
03027  M01S03001.ssdebug +++|            DBERR(DBERRCODE);
03028  M01S03002.ssdebug +++|            RETURN;
03029  M01S03003.ssdebug +++|            END
03030  M01S03004.ssdebug +++|
03031  M01S03005.ssdebug +++|          SETFCTX(NXTSTRM);
03032  M01S03006.ssdebug +++|          TEMP = FCT$LEN(FWD,FPS);
03033  M01S03007.ssdebug +++|          SH = SL + INSPAU*TEMP + INSPAU - 1;
03034  M01S03008.ssdebug +++|
03035  M01S03009.ssdebug +++|#
03036  M01S03010.ssdebug +++|*     CHECK FOR BEGINNING OF VOLUME.
03037  M01S03011.ssdebug +++|#
03038  M01S03012.ssdebug +++|
03039  M01S03013.ssdebug +++|          FLAG = FCT$CC(FCT$WD(NXTSTRM),FCT$WP(NXTSTRM));
03040  M01S03014.ssdebug +++|          IF FLAG NQ CHAINCON"FIRST"  ##
03041  M01S03015.ssdebug +++|            AND FLAG NQ CHAINCON"ONLY"  ##
03042  M01S03016.ssdebug +++|            AND LINK EQ 0            # NOT CONTINUATION CARTRIDGE #
03043  M01S03017.ssdebug +++|          THEN                           # INVALID STARTING AU #
03044  M01S03018.ssdebug +++|            BEGIN
03045  M01S03019.ssdebug +++|            DBERRCODE = S"DVIOL$ST";
03046  M01S03020.ssdebug +++|            DBERR(DBERRCODE);
03047  M01S03021.ssdebug +++|            RETURN;
03048  M01S03022.ssdebug +++|            END
03049  M01S03023.ssdebug +++|
03050  M01S03024.ssdebug +++|#
03051  M01S03025.ssdebug +++|*     CHECK FOR ALLOCATED AU.
03052  M01S03026.ssdebug +++|#
03053  M01S03027.ssdebug +++|
03054  M01S03028.ssdebug +++|          FLAG = FCT$FBF(FCT$WD(NXTSTRM),FCT$WP(NXTSTRM));
03055  M01S03029.ssdebug +++|          IF FLAG EQ 0
03056  M01S03030.ssdebug +++|          THEN                           # AU NOT ALLOCATED #
03057  M01S03031.ssdebug +++|            BEGIN
03058  M01S03032.ssdebug +++|            DBERRCODE = S"DVIOL$ST";
03059  M01S03033.ssdebug +++|            DBERR(DBERRCODE);
03060  M01S03034.ssdebug +++|            RETURN;
03061  M01S03035.ssdebug +++|            END
03062  M01S03036.ssdebug +++|
03063  M01S03037.ssdebug +++|#
03064  M01S03038.ssdebug +++|*     CHECK FOR AU CONFLICT.
03065  M01S03039.ssdebug +++|#
03066  M01S03040.ssdebug +++|
03067  M01S03041.ssdebug +++|          FLAG = FCT$AUCF(FCT$WD(NXTSTRM),FCT$WP(NXTSTRM));
03068  M01S03042.ssdebug +++|          IF FLAG NQ 0
03069  M01S03043.ssdebug +++|          THEN                           # INTERSECTING CHAIN #
03070  M01S03044.ssdebug +++|            BEGIN
03071  M01S03045.ssdebug +++|            DBERRCODE = S"DVIOL$ST";
03072  M01S03046.ssdebug +++|            DBERR(DBERRCODE);
03073  M01S03047.ssdebug +++|            RETURN;
03074  M01S03048.ssdebug +++|            END
03075  M01S03049.ssdebug +++|
03076  M01S03050.ssdebug +++|#
03077  M01S03051.ssdebug +++|*     CHECK FOR START OF FRAGMENT.
03078  M01S03052.ssdebug +++|#
03079  M01S03053.ssdebug +++|
03080  M01S03054.ssdebug +++|          FLAG = FCT$SFF(FCT$WD(NXTSTRM),FCT$WP(NXTSTRM));
03081  M01S03055.ssdebug +++|          IF FLAG NQ 0
03082  M01S03056.ssdebug +++|          THEN                           # START OF FRAGMENT #
03083  M01S03057.ssdebug +++|            BEGIN
03084  M01S03058.ssdebug +++|            DBERRCODE = S"DVIOL$ST";
03085  M01S03059.ssdebug +++|            DBERR(DBERRCODE);
03086  M01S03060.ssdebug +++|            RETURN;
03087  M01S03061.ssdebug +++|            END
03088  M01S03062.ssdebug +++|
03089  M01S03063.ssdebug +++|#
03090  M01S03064.ssdebug +++|*     LOAD THE CARTRIDGE.
03091  M01S03065.ssdebug +++|#
03092  M01S03066.ssdebug +++|
03093  M01S03067.ssdebug +++|          P<FCT> = FCTBADR;
03094  M01S03068.ssdebug +++|          DBCALL4(REQTYP4"LOAD$CART",FCT$Y[0],FCT$Z[0],0,0,0,0,
03095  M01S03069.ssdebug +++|            RESPCODE);
03096  M01S03070.ssdebug +++|          IF RESPCODE NQ RESPTYP4"OK4"
03097  M01S03071.ssdebug +++|          THEN                       # UNABLE TO LOAD CARTRIDGE #
03098  M01S03072.ssdebug +++|            BEGIN
03099  M01S03073.ssdebug +++|            DBRESP(RESPCODE,TYP"TYP4");
03100  M01S03074.ssdebug +++|            RETURN;
03101  M01S03075.ssdebug +++|            END
03102  M01S03076.ssdebug +++|
03103  M01S03077.ssdebug +++|          TRNSPORT = CPR$DRD[0];     # SET UP TRANSPORT ID #
03104  M01S03078.ssdebug +++|          GTNXTCART = FALSE;
03105  M01S03079.ssdebug +++|          END  # GET NEXT CARTRIDGE #
03106  M01S03080.ssdebug +++|
03107  M01S03081.ssdebug +++|#
03108  M01S03082.ssdebug +++|*     COPY THE RAW AU.
03109  M01S03083.ssdebug +++|#
03110  M01S03084.ssdebug +++|
03111  M01S03085.ssdebug +++|        ANOTHERVOL = FALSE;
03112  M01S03086.ssdebug +++|        DBCALL4(REQTYP4"CP$RAW$AU",FCT$Y[0],FCT$Z[0],SL,SH,
03113  M01S03087.ssdebug +++|          USER$FAM[0],USER$UI[0],RESPCODE);
03114  M01S03088.ssdebug +++|        IF RESPCODE NQ RESPTYP4"OK4"
03115  M01S03089.ssdebug +++|        THEN                         # UNABLE TO COPY RAW AU #
03116  M01S03090.ssdebug +++|          BEGIN
03117  M01S03091.ssdebug +++|          DBRESP(RESPCODE,TYP"TYP4");
03118  M01S03092.ssdebug +++|          RETURN;
03119  M01S03093.ssdebug +++|          END
03120  M01S03094.ssdebug +++|
03121  M01S03095.ssdebug +++|#
03122  M01S03096.ssdebug +++|*     GET THE NEXT AU IN THE CHAIN.
03123  M01S03097.ssdebug +++|#
03124  M01S03098.ssdebug +++|
03125  M01S03099.ssdebug +++|        LINK = FCT$CLKOCL(FCT$WD(NXTSTRM),FCT$WP(NXTSTRM));
03126  M01S03100.ssdebug +++|        IF LINK NQ 0
03127  M01S03101.ssdebug +++|        THEN                         # OFF CARTRIDGE LINK TEST #
03128  M01S03102.ssdebug +++|          BEGIN  # OFF CARTRIDGE LINK EXISTS #
03129  M01S03103.ssdebug +++|          GTNXTCART = TRUE;
03130  M01S03104.ssdebug +++|          IF LINK EQ 1
03131  M01S03105.ssdebug +++|          THEN                       # USE FIRST OFF CARTRIDGE LINK #
03132  M01S03106.ssdebug +++|            BEGIN
03133  M01S03107.ssdebug +++|            NXTFCT = FCT$OCL[0] + MINFO;
03134  M01S03108.ssdebug +++|            END
03135  M01S03109.ssdebug +++|
03136  M01S03110.ssdebug +++|          IF LINK EQ 2
03137  M01S03111.ssdebug +++|          THEN                       # USE SECOND OFF CARTRIDGE LINK #
03138  M01S03112.ssdebug +++|            BEGIN
03139  M01S03113.ssdebug +++|            NXTFCT = FCT$OCL1[0] + MINFO;
03140  M01S03114.ssdebug +++|            END
03141  M01S03115.ssdebug +++|
03142  M01S03116.ssdebug +++|          IF LINK EQ 3
03143  M01S03117.ssdebug +++|          THEN                       # USE THIRD OFF CARTRIDGE LINK #
03144  M01S03118.ssdebug +++|            BEGIN
03145  M01S03119.ssdebug +++|            NXTFCT = FCT$OCL2[0] + MINFO;
03146  M01S03120.ssdebug +++|            END
03147  M01S03121.ssdebug +++|
03148  M01S03122.ssdebug +++|          DBCALL4(REQTYP4"UNLD$CART",FCT$Y[0],FCT$Z[0],0,0,0,0,
03149  M01S03123.ssdebug +++|            RESPCODE);
03150  M01S03124.ssdebug +++|          IF RESPCODE NQ RESPTYP4"OK4"
03151  M01S03125.ssdebug +++|          THEN                       # UNABLE TO UNLOAD CARTRIDGE #
03152  M01S03126.ssdebug +++|            BEGIN
03153  M01S03127.ssdebug +++|            DBRESP(RESPCODE,TYP"TYP4");
03154  M01S03128.ssdebug +++|            RETURN;
03155  M01S03129.ssdebug +++|            END
03156  M01S03130.ssdebug +++|
03157  M01S03131.ssdebug +++|          NXTSTRM = FCT$LINK(FCT$WD(NXTSTRM),FCT$WP(NXTSTRM));
03158  M01S03132.ssdebug +++|          SL = INSPAU*NXTSTRM + (INFTST - INSPAU);
03159  M01S03133.ssdebug +++|          END  # OFF CARTRIDGE LINK EXISTS #
03160  M01S03134.ssdebug +++|
03161  M01S03135.ssdebug +++|        IF LINK EQ 0
03162  M01S03136.ssdebug +++|        THEN                         # NO OFF CARTRIGE LINK #
03163  M01S03137.ssdebug +++|          BEGIN  # NO OFF CARTRIDGE LINK #
03164  M01S03138.ssdebug +++|          CHNCNTRL = FCT$CC(FCT$WD(NXTSTRM),FCT$WP(NXTSTRM));
03165  M01S03139.ssdebug +++|          IF CHNCNTRL EQ CHAINCON"LAST"  ##
03166  M01S03140.ssdebug +++|            OR CHNCNTRL EQ CHAINCON"ONLY"
03167  M01S03141.ssdebug +++|          THEN                      # END OF CHAIN #
03168  M01S03142.ssdebug +++|            BEGIN
03169  M01S03143.ssdebug +++|            LAST = TRUE;
03170  M01S03144.ssdebug +++|            TEST DUMMY;
03171  M01S03145.ssdebug +++|            END
03172  M01S03146.ssdebug +++|
03173  M01S03147.ssdebug +++|          NXTSTRM = FCT$LINK(FCT$WD(NXTSTRM),FCT$WP(NXTSTRM));
03174  M01S03148.ssdebug +++|          SL = INSPAU*NXTSTRM + (INFTST - INSPAU);
03175  M01S03149.ssdebug +++|          SETFCTX(NXTSTRM);
03176  M01S03150.ssdebug +++|          TEMP = FCT$LEN(FWD,FPS);
03177  M01S03151.ssdebug +++|          SH = SL + INSPAU*TEMP + INSPAU - 1;
03178  M01S03152.ssdebug +++|          ANOTHERVOL = TRUE;
03179  M01S03153.ssdebug +++|          END  # NO OFF CARTRIDGE LINK #
03180  M01S03154.ssdebug +++|
03181  M01S03155.ssdebug +++|        END  # COPY RAW AU #
03182  M01S03156.ssdebug +++|
03183  M01S03157.ssdebug +++|#
03184  M01S03158.ssdebug +++|*     UNLOAD THE CARTRIDGE.
03185  M01S03159.ssdebug +++|#
03186  M01S03160.ssdebug +++|
03187  M01S03161.ssdebug +++|      DBCALL4(REQTYP4"UNLD$CART",FCT$Y[0],FCT$Z[0],0,0,0,0,
03188  M01S03162.ssdebug +++|        RESPCODE);
03189  M01S03163.ssdebug +++|      IF RESPCODE NQ RESPTYP4"OK4"
03190  M01S03164.ssdebug +++|      THEN                           # PROCESS ERROR RESPONSE #
03191  M01S03165.ssdebug +++|        BEGIN
03192  M01S03166.ssdebug +++|        DBRESP(RESPCODE,TYP"TYP4");
03193  M01S03167.ssdebug +++|        RETURN;
03194  M01S03168.ssdebug +++|        END
03195  M01S03169.ssdebug +++|
03196  M01S03170.ssdebug +++|      CCLOSE(DBARG$FM[0],DBARG$SB[0],0,FLAG);
03197  M01S03171.ssdebug +++|      IF FLAG NQ CMASTAT"NOERR"
03198  M01S03172.ssdebug +++|      THEN                           # UNABLE TO CLOSE CATALOG #
03199  M01S03173.ssdebug +++|        BEGIN
03200  M01S03174.ssdebug +++|        DBRESP(FLAG,0);
03201  M01S03175.ssdebug +++|        END
03202  M01S03176.ssdebug +++|
03203  M01S03177.ssdebug +++|      RETURN;
03204  M01S03178.ssdebug +++|
03205  M01S03179.ssdebug +++|      END  # DBRDFILE #
03206  M01S03180.ssdebug +++|
03207  M01S03181.ssdebug +++|    TERM
03208  M01S03182.ssdebug +++|PROC DBRDSTM;
03209  M01S03183.ssdebug +++|# TITLE DBRDSTM - PROCESS READ AU DIRECTIVE.                      #
03210  M01S03184.ssdebug +++|
03211  M01S03185.ssdebug +++|      BEGIN  # DBRDSTM #
03212  M01S03186.ssdebug +++|
03213  M01S03187.ssdebug +++|#
03214  M01S03188.ssdebug +++|**    DBRDSTM - PROCESS READ AU DIRECTIVE.
03215  M01S03189.ssdebug +++|*
03216  M01S03190.ssdebug +++|*     PROC DBRDSTM.
03217  M01S03191.ssdebug +++|*
03218  M01S03192.ssdebug +++|*     ENTRY     THE CRACKED AND SYNTAX CHECKED DIRECTIVE IS
03219  M01S03193.ssdebug +++|*               IN THE COMMON AREA DEFINED IN *COMTDBG*.
03220  M01S03194.ssdebug +++|*               THE MAP FOR THE SPECIFIED SM IS OPEN.
03221  M01S03195.ssdebug +++|*               P<CPR>     = FWA OF CALLSS PARAMETER BLOCK.
03222  M01S03196.ssdebug +++|*               (USER$FAM) = USER-S FAMILY NAME.
03223  M01S03197.ssdebug +++|*               (USER$UI)  = USER-S USER INDEX.
03224  M01S03198.ssdebug +++|*
03225  M01S03199.ssdebug +++|*     EXIT      THE DIRECTIVE HAS BEEN PROCESSED AND
03226  M01S03200.ssdebug +++|*               THE MAP HAS BEEN CLOSED OR AN ERROR
03227  M01S03201.ssdebug +++|*               CONDITION HAS BEEN DETECTED.
03228  M01S03202.ssdebug +++|*
03229  M01S03203.ssdebug +++|*     MESSAGES  SSDEBUG ABNORMAL, DBRDSTM.
03230  M01S03204.ssdebug +++|*
03231  M01S03205.ssdebug +++|*     NOTES     THE SPECIFIED CARTRIDGE IS LOADED AND A REQUEST
03232  M01S03206.ssdebug +++|*               IS SENT TO EXEC TO COPY EACH SELECTED AU TO
03233  M01S03207.ssdebug +++|*               THE SPECIFIED FILE.
03234  M01S03208.ssdebug +++|#
03235  M01S03209.ssdebug +++|
03236  M01S03210.ssdebug +++|#
03237  M01S03211.ssdebug +++|****  PROC DBRDSTM - XREF LIST BEGIN.
03238  M01S03212.ssdebug +++|#
03239  M01S03213.ssdebug +++|
03240  M01S03214.ssdebug +++|      XREF
03241  M01S03215.ssdebug +++|        BEGIN
03242  M01S03216.ssdebug +++|        PROC DBCALL4;                # ISSUES TYPE 4 UCP REQUEST #
03243  M01S03217.ssdebug +++|        PROC DBERR;                  # ERROR PROCESSOR #
03244  M01S03218.ssdebug +++|        PROC DBRESP;                 # PROCESSES RESPONSE FROM EXEC #
03245  M01S03219.ssdebug +++|        PROC DBVSN;                  # SEARCH SM MAP FOR A VSN #
03246  M01S03220.ssdebug +++|        PROC MCLOSE;                 # CLOSES SMMAP #
03247  M01S03221.ssdebug +++|        PROC MESSAGE;                # DISPLAYS MESSAGES #
03248  M01S03222.ssdebug +++|        PROC PFD;                    # *PFM* REQUEST INTERFACE #
03249  M01S03223.ssdebug +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
03250  M01S03224.ssdebug +++|                                       OR RETURN #
03251  M01S03225.ssdebug +++|        PROC RETERN;                 # RETURNS A FILE #
03252  M01S03226.ssdebug +++|        PROC SETPFP;                 # SET FAMILY AND USER INDEX #
03253  M01S03227.ssdebug +++|        PROC ZSETFET;                # INITIALIZES A FET #
03254  M01S03228.ssdebug +++|        END
03255  M01S03229.ssdebug +++|
03256  M01S03230.ssdebug +++|#
03257  M01S03231.ssdebug +++|****  PROC DBRDSTM - XREF LIST END.
03258  M01S03232.ssdebug +++|#
03259  M01S03233.ssdebug +++|
03260  M01S03234.ssdebug +++|      DEF PROCNAME  #"DBRDSTM."#;    # PROC NAME #
03261  M01S03235.ssdebug +++|
03262  M01S03236.ssdebug +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
03263  M01S03237.ssdebug +++|*CALL COMBFAS
03264  M01S03238.ssdebug +++|*CALL COMBCMS
03265  M01S03239.ssdebug +++|*CALL COMBCPR
03266  M01S03240.ssdebug +++|*CALL COMBMAP
03267  M01S03241.ssdebug +++|*CALL COMBPFP
03268  M01S03242.ssdebug +++|*CALL COMSPFM
03269  M01S03243.ssdebug +++|*CALL COMTDBG
03270  M01S03244.ssdebug +++|*CALL COMTDBP
03271  M01S03245.ssdebug +++|*CALL COMTDER
03272  M01S03246.ssdebug +++|
03273  M01S03247.ssdebug +++|      ITEM FLAG       I;             # ERROR STATUS #
03274  M01S03248.ssdebug +++|      ITEM I          I;             # LOOP INDUCTION VARIABLE #
03275  M01S03249.ssdebug +++|      ITEM RESPCODE   I;             # RESPONSE CODE #
03276  M01S03250.ssdebug +++|      ITEM STRIPELO   I;             # INITIAL STRIPE #
03277  M01S03251.ssdebug +++|      ITEM STRIPEHI   I;             # LAST STRIPE #
03278  M01S03252.ssdebug +++|      ITEM Y          I;             # Y COORDINATE #
03279  M01S03253.ssdebug +++|      ITEM Z          I;             # Z COORDINATE #
03280  M01S03254.ssdebug +++|
03281  M01S03255.ssdebug +++|      ARRAY CMAPENT [0:0] P(MAPENTL);;  # SMMAP ENTRY #
03282  M01S03256.ssdebug +++|      ARRAY SCRFET [0:0] S(SFETL);;  # SCRATCH FET #
03283  M01S03257.ssdebug +++|
03284  M01S03258.ssdebug +++|CONTROL EJECT;
03285  M01S03259.ssdebug +++|
03286  M01S03260.ssdebug +++|#
03287  M01S03261.ssdebug +++|*     DEFINE THE USER-S FILE TO RECEIVE THE RAW AU DATA.
03288  M01S03262.ssdebug +++|#
03289  M01S03263.ssdebug +++|
03290  M01S03264.ssdebug +++|      RESTPFP(PFP$RESUME);           # RESTORE USER-S *PFP* #
03291  M01S03265.ssdebug +++|
03292  M01S03266.ssdebug +++|      FLAG = 0;
03293  M01S03267.ssdebug +++|      PFD("DEFINE",DBARG$PF[0],0,"RC",FLAG,0);
03294  M01S03268.ssdebug +++|      IF FLAG NQ OK
03295  M01S03269.ssdebug +++|      THEN                           # UNABLE TO DEFINE USER-S FILE #
03296  M01S03270.ssdebug +++|        BEGIN
03297  M01S03271.ssdebug +++|        DBERRCODE = S"DDEF$PF";
03298  M01S03272.ssdebug +++|        DBERR(DBERRCODE);
03299  M01S03273.ssdebug +++|        RETURN;
03300  M01S03274.ssdebug +++|        END
03301  M01S03275.ssdebug +++|
03302  M01S03276.ssdebug +++|      ZSETFET(LOC(SCRFET[0]),DBARG$PF[0],0,0,SFETL);
03303  M01S03277.ssdebug +++|      RETERN(SCRFET[0],RCL);
03304  M01S03278.ssdebug +++|
03305  M01S03279.ssdebug +++|#
03306  M01S03280.ssdebug +++|*     LOCATE THE CARTRIDGE.
03307  M01S03281.ssdebug +++|#
03308  M01S03282.ssdebug +++|
03309  M01S03283.ssdebug +++|      Y = DBARG$YI[0];               # COORDINATES SPECIFIED, IF ANY #
03310  M01S03284.ssdebug +++|      Z = DBARG$ZI[0];
03311  M01S03285.ssdebug +++|
03312  M01S03286.ssdebug +++|      IF DBARG$D[0] GQ -1
03313  M01S03287.ssdebug +++|      THEN                           # CARTRIDGE IN INPUT DRAWER #
03314  M01S03288.ssdebug +++|        BEGIN
03315  M01S03289.ssdebug +++|        Z = SM$ENT$TY;                # SET ENTRY TRAY #
03316  M01S03290.ssdebug +++|        Y = 0;
03317  M01S03291.ssdebug +++|        END
03318  M01S03292.ssdebug +++|
03319  M01S03293.ssdebug +++|      IF DBARG$WCN[0] NQ 0
03320  M01S03294.ssdebug +++|      THEN
03321  M01S03295.ssdebug +++|        BEGIN  # SEARCH SMMAP FOR THE VSN #
03322  M01S03296.ssdebug +++|        DBVSN(Y,Z,CMAPENT[0],FLAG);
03323  M01S03297.ssdebug +++|        IF FLAG NQ OK
03324  M01S03298.ssdebug +++|        THEN                         # VSN NOT FOUND #
03325  M01S03299.ssdebug +++|          BEGIN
03326  M01S03300.ssdebug +++|          DBERRCODE = S"DVSN$NFND";
03327  M01S03301.ssdebug +++|          DBERR(DBERRCODE);
03328  M01S03302.ssdebug +++|          RETURN;
03329  M01S03303.ssdebug +++|          END
03330  M01S03304.ssdebug +++|
03331  M01S03305.ssdebug +++|        END  # SEARCH SMMAP FOR THE VSN #
03332  M01S03306.ssdebug +++|
03333  M01S03307.ssdebug +++|#
03334  M01S03308.ssdebug +++|*     LOAD THE CARTRIDGE.
03335  M01S03309.ssdebug +++|#
03336  M01S03310.ssdebug +++|
03337  M01S03311.ssdebug +++|      DBCALL4(REQTYP4"LOAD$CART",Y,Z,0,0,0,0,RESPCODE);
03338  M01S03312.ssdebug +++|      IF RESPCODE NQ RESPTYP4"OK4"
03339  M01S03313.ssdebug +++|      THEN                           # UNABLE TO LOAD CARTRIDGE #
03340  M01S03314.ssdebug +++|        BEGIN
03341  M01S03315.ssdebug +++|        DBRESP(RESPCODE,TYP"TYP4");
03342  M01S03316.ssdebug +++|        RETURN;
03343  M01S03317.ssdebug +++|        END
03344  M01S03318.ssdebug +++|
03345  M01S03319.ssdebug +++|      TRNSPORT = CPR$DRD[0];         # SET UP TRANSPORT ID #
03346  M01S03320.ssdebug +++|
03347  M01S03321.ssdebug +++|#
03348  M01S03322.ssdebug +++|*     COPY EACH OF THE SELECTED RAW AU.
03349  M01S03323.ssdebug +++|#
03350  M01S03324.ssdebug +++|
03351  M01S03325.ssdebug +++|      STRIPELO = INSPAU*DBARG$SL[0] + ( INFTST - INSPAU );
03352  M01S03326.ssdebug +++|      STRIPEHI = INSPAU*(DBARG$SU[0] - DBARG$SL[0] + 1) + STRIPELO - 1;
03353  M01S03327.ssdebug +++|      DBCALL4(REQTYP4"CP$RAW$AU",Y,Z,STRIPELO,STRIPEHI,USER$FAM[0],
03354  M01S03328.ssdebug +++|        USER$UI[0],RESPCODE);
03355  M01S03329.ssdebug +++|
03356  M01S03330.ssdebug +++|#
03357  M01S03331.ssdebug +++|*     UNLOAD THE CARTRIDGE.
03358  M01S03332.ssdebug +++|#
03359  M01S03333.ssdebug +++|
03360  M01S03334.ssdebug +++|      DBCALL4(REQTYP4"UNLD$CART",Y,Z,0,0,0,0,RESPCODE);
03361  M01S03335.ssdebug +++|      IF RESPCODE NQ RESPTYP4"OK4"
03362  M01S03336.ssdebug +++|      THEN                           # UNABLE TO UNLOAD CARTRIDGE #
03363  M01S03337.ssdebug +++|        BEGIN
03364  M01S03338.ssdebug +++|        DBRESP(RESPCODE,TYP"TYP4");
03365  M01S03339.ssdebug +++|        RETURN;
03366  M01S03340.ssdebug +++|        END
03367  M01S03341.ssdebug +++|
03368  M01S03342.ssdebug +++|      IF DBARG$WCN[0] NQ 0
03369  M01S03343.ssdebug +++|      THEN                           # MAP OPENED #
03370  M01S03344.ssdebug +++|        BEGIN
03371  M01S03345.ssdebug +++|        MCLOSE(DBARG$SMID[0],FLAG);
03372  M01S03346.ssdebug +++|        IF FLAG NQ CMASTAT"NOERR"
03373  M01S03347.ssdebug +++|        THEN                         # UNABLE TO CLOSE SMMAP #
03374  M01S03348.ssdebug +++|          BEGIN
03375  M01S03349.ssdebug +++|          DBRESP(FLAG,0);
03376  M01S03350.ssdebug +++|          END
03377  M01S03351.ssdebug +++|
03378  M01S03352.ssdebug +++|        END
03379  M01S03353.ssdebug +++|
03380  M01S03354.ssdebug +++|      RETURN;
03381  M01S03355.ssdebug +++|
03382  M01S03356.ssdebug +++|      END  # DBRDSTM #
03383  M01S03357.ssdebug +++|
03384  M01S03358.ssdebug +++|    TERM
03385  M01S03359.ssdebug +++|PROC DBREL;
03386  M01S03360.ssdebug +++|# TITLE DBREL - RELEASE PROBLEM CHAIN AND CLEAR FLAGS.                #
03387  M01S03361.ssdebug +++|
03388  M01S03362.ssdebug +++|      BEGIN  # DBREL #
03389  M01S03363.ssdebug +++|
03390  M01S03364.ssdebug +++|#
03391  M01S03365.ssdebug +++|**    DBREL - RELEASE PROBLEM CHAIN AND CLEAR FLAGS.
03392  M01S03366.ssdebug +++|*
03393  M01S03367.ssdebug +++|*     PROC DBREL.
03394  M01S03368.ssdebug +++|*
03395  M01S03369.ssdebug +++|*     ENTRY   THE CRACKED AND SYNTAX CHECKED DIRECTIVE PARAMETERS
03396  M01S03370.ssdebug +++|*             ARE IN THE COMMON AREA DEFINED IN *COMTDBP*.
03397  M01S03371.ssdebug +++|*             THE CATALOG IS OPEN FOR THE SPECIFIED FAMILY AND
03398  M01S03372.ssdebug +++|*             SUBFAMILY.
03399  M01S03373.ssdebug +++|*             P<CPR> = FWA OF CALLSS PARAMETER BLOCK.
03400  M01S03374.ssdebug +++|*
03401  M01S03375.ssdebug +++|*     EXIT    THE DIRECTIVE HAS BEEN PROCESSED AND THE
03402  M01S03376.ssdebug +++|*             CATALOG HAS BEEN CLOSED OR AN ERROR CONDI-
03403  M01S03377.ssdebug +++|*             TION HAS BEEN DETECTED.
03404  M01S03378.ssdebug +++|*
03405  M01S03379.ssdebug +++|*     NOTES   THE SELECTED *FCT* ENTRY IS CHECKED FOR THE
03406  M01S03380.ssdebug +++|*             FROZEN CHAIN FLAG AND IF SET, A REQUEST IS
03407  M01S03381.ssdebug +++|*             SENT TO EXEC TO RELEASE THE PROBLEM CHAIN.
03408  M01S03382.ssdebug +++|#
03409  M01S03383.ssdebug +++|
03410  M01S03384.ssdebug +++|#
03411  M01S03385.ssdebug +++|****  PROC DBREL - XREF LIST BEGIN.
03412  M01S03386.ssdebug +++|#
03413  M01S03387.ssdebug +++|
03414  M01S03388.ssdebug +++|      XREF
03415  M01S03389.ssdebug +++|        BEGIN
03416  M01S03390.ssdebug +++|        PROC CCLOSE;                 # CLOSES THE CATALOG #
03417  M01S03391.ssdebug +++|        PROC CGETFCT;                # GET *FCT* ENTRY #
03418  M01S03392.ssdebug +++|        PROC DBCALL3;                # ISSUES A TYPE 3 UCP REQUEST #
03419  M01S03393.ssdebug +++|        PROC DBERR;                  # ERROR PROCESSOR #
03420  M01S03394.ssdebug +++|        PROC DBRESP;                 # PROCESS RESPONSE FROM EXEC #
03421  M01S03395.ssdebug +++|        END
03422  M01S03396.ssdebug +++|
03423  M01S03397.ssdebug +++|#
03424  M01S03398.ssdebug +++|****  PROC DBREL - XREF LIST END.
03425  M01S03399.ssdebug +++|#
03426  M01S03400.ssdebug +++|
03427  M01S03401.ssdebug +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
03428  M01S03402.ssdebug +++|*CALL COMBFAS
03429  M01S03403.ssdebug +++|*CALL COMBCMS
03430  M01S03404.ssdebug +++|*CALL COMBCPR
03431  M01S03405.ssdebug +++|*CALL COMBMCT
03432  M01S03406.ssdebug +++|*CALL COMTDBG
03433  M01S03407.ssdebug +++|*CALL COMTDBP
03434  M01S03408.ssdebug +++|*CALL COMTDER
03435  M01S03409.ssdebug +++|
03436  M01S03410.ssdebug +++|      ITEM FCTBADR    I;             # FWA OF BUFFER FOR *FCT* #
03437  M01S03411.ssdebug +++|      ITEM FLAG       I;             # ERROR STATUS #
03438  M01S03412.ssdebug +++|      ITEM RESPCODE   I;             # RESPONSE FROM EXEC #
03439  M01S03413.ssdebug +++|
03440  M01S03414.ssdebug +++|      ARRAY FCTENT [0:0] P(FCTENTL);;  # *FCT* ENTRY #
03441  M01S03415.ssdebug +++|
03442  M01S03416.ssdebug +++|CONTROL EJECT;
03443  M01S03417.ssdebug +++|
03444  M01S03418.ssdebug +++|#
03445  M01S03419.ssdebug +++|*     CHECK THE FROZEN CHAIN FLAG IN THE *FCT* ENTRY.
03446  M01S03420.ssdebug +++|#
03447  M01S03421.ssdebug +++|
03448  M01S03422.ssdebug +++|      FCTBADR = LOC(FCTENT[0]);
03449  M01S03423.ssdebug +++|      CGETFCT(DBARG$FM[0],DBARG$SB[0],DBARG$SMID[0],DBARG$FO[0],
03450  M01S03424.ssdebug +++|        FCTBADR,0,FLAG);
03451  M01S03425.ssdebug +++|      IF FLAG NQ CMASTAT"NOERR"
03452  M01S03426.ssdebug +++|      THEN                           # UNABLE TO GET *FCT* ENTRY #
03453  M01S03427.ssdebug +++|        BEGIN
03454  M01S03428.ssdebug +++|        DBRESP(FLAG,0);
03455  M01S03429.ssdebug +++|        RETURN;
03456  M01S03430.ssdebug +++|        END
03457  M01S03431.ssdebug +++|
03458  M01S03432.ssdebug +++|      P<FCT> = FCTBADR;
03459  M01S03433.ssdebug +++|      FLAG = FCT$FRCF(FCT$WD(DBARG$ST[0]),FCT$WP(DBARG$ST[0]));
03460  M01S03434.ssdebug +++|      IF FLAG EQ 0
03461  M01S03435.ssdebug +++|      THEN                           # FROZEN CHAIN FLAG NOT SET #
03462  M01S03436.ssdebug +++|        BEGIN
03463  M01S03437.ssdebug +++|        DBERRCODE = S"DFROZ$NSET";
03464  M01S03438.ssdebug +++|        DBERR(DBERRCODE);
03465  M01S03439.ssdebug +++|        RETURN;
03466  M01S03440.ssdebug +++|        END
03467  M01S03441.ssdebug +++|
03468  M01S03442.ssdebug +++|#
03469  M01S03443.ssdebug +++|*     RELEASE FROZEN CHAIN.
03470  M01S03444.ssdebug +++|#
03471  M01S03445.ssdebug +++|
03472  M01S03446.ssdebug +++|      DBCALL3(REQTYP3"PURG$FRAG",0,DBARG$FO[0],0,0,RESPCODE);
03473  M01S03447.ssdebug +++|      IF RESPCODE NQ RESPTYP3"OK3"
03474  M01S03448.ssdebug +++|      THEN                           # UNABLE TO RELEASE FROZEN CHAIN #
03475  M01S03449.ssdebug +++|        BEGIN
03476  M01S03450.ssdebug +++|        DBRESP(RESPCODE,TYP"TYP3");
03477  M01S03451.ssdebug +++|        RETURN;
03478  M01S03452.ssdebug +++|        END
03479  M01S03453.ssdebug +++|
03480  M01S03454.ssdebug +++|      CCLOSE(DBARG$FM[0],DBARG$SB[0],0,FLAG);
03481  M01S03455.ssdebug +++|      IF FLAG NQ CMASTAT"NOERR"
03482  M01S03456.ssdebug +++|      THEN                           # UNABLE TO CLOSE CATALOG #
03483  M01S03457.ssdebug +++|        BEGIN
03484  M01S03458.ssdebug +++|        DBRESP(FLAG,0);
03485  M01S03459.ssdebug +++|        END
03486  M01S03460.ssdebug +++|
03487  M01S03461.ssdebug +++|      RETURN;
03488  M01S03462.ssdebug +++|
03489  M01S03463.ssdebug +++|      END  # DBREL #
03490  M01S03464.ssdebug +++|
03491  M01S03465.ssdebug +++|    TERM
03492  M01S03466.ssdebug +++|PROC DBRESP((RESPCODE),(REQTYPE));
03493  M01S03467.ssdebug +++|# TITLE DBRESP - PROCESS RESPONSE FROM EXEC.                          #
03494  M01S03468.ssdebug +++|
03495  M01S03469.ssdebug +++|      BEGIN  # DBRESP #
03496  M01S03470.ssdebug +++|
03497  M01S03471.ssdebug +++|#
03498  M01S03472.ssdebug +++|**    DBRESP - PROCESS RESPONSE FROM EXEC.
03499  M01S03473.ssdebug +++|*
03500  M01S03474.ssdebug +++|*     PROC DBRESP((RESPCODE),(REQTYPE))
03501  M01S03475.ssdebug +++|*
03502  M01S03476.ssdebug +++|*     ENTRY    (RESPCODE) = RESPONSE CODE FROM EXEC.
03503  M01S03477.ssdebug +++|*              (REQTYPE)  = TYPE OF REQUEST SENT TO EXEC.
03504  M01S03478.ssdebug +++|*                           0, FOR MAP/CATALOG ACCESS ROUTINES.
03505  M01S03479.ssdebug +++|*
03506  M01S03480.ssdebug +++|*     EXIT     THE ERROR RESPONSE HAS BEEN PROCESSED.
03507  M01S03481.ssdebug +++|*
03508  M01S03482.ssdebug +++|*     MESSAGES SSDEBUG ABNORMAL, DBRESP.
03509  M01S03483.ssdebug +++|*
03510  M01S03484.ssdebug +++|*     NOTES    *SSDEBUG* ERROR PROCESSOR IS CALLED WITH THE
03511  M01S03485.ssdebug +++|*              CORRESPONDING ERROR CODE.
03512  M01S03486.ssdebug +++|#
03513  M01S03487.ssdebug +++|
03514  M01S03488.ssdebug +++|      ITEM RESPCODE   I;             # RESPONSE CODE FROM EXEC #
03515  M01S03489.ssdebug +++|      ITEM REQTYPE    I;             # TYPE OF REQUEST SENT TO EXEC #
03516  M01S03490.ssdebug +++|
03517  M01S03491.ssdebug +++|#
03518  M01S03492.ssdebug +++|****  PROC DBRESP - XREF LIST BEGIN.
03519  M01S03493.ssdebug +++|#
03520  M01S03494.ssdebug +++|
03521  M01S03495.ssdebug +++|      XREF
03522  M01S03496.ssdebug +++|        BEGIN
03523  M01S03497.ssdebug +++|        PROC DBERR;                  # ERROR PROCESSOR #
03524  M01S03498.ssdebug +++|        PROC MESSAGE;                # DISPLAYS MESSAGE #
03525  M01S03499.ssdebug +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
03526  M01S03500.ssdebug +++|                                       OR RETURN #
03527  M01S03501.ssdebug +++|        END
03528  M01S03502.ssdebug +++|
03529  M01S03503.ssdebug +++|#
03530  M01S03504.ssdebug +++|****  PROC DBRESP - XREF LIST END.
03531  M01S03505.ssdebug +++|#
03532  M01S03506.ssdebug +++|
03533  M01S03507.ssdebug +++|      DEF PROCNAME  #"DBRESP."#;     # PROC NAME #
03534  M01S03508.ssdebug +++|
03535  M01S03509.ssdebug +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
03536  M01S03510.ssdebug +++|*CALL COMBFAS
03537  M01S03511.ssdebug +++|*CALL COMBCMS
03538  M01S03512.ssdebug +++|*CALL COMBCPR
03539  M01S03513.ssdebug +++|*CALL COMTDBG
03540  M01S03514.ssdebug +++|*CALL COMTDER
03541  M01S03515.ssdebug +++|
03542  M01S03516.ssdebug +++|#
03543  M01S03517.ssdebug +++|*     STATUS SWITCH TO PROCESS THE RESPONSE CODES RETURNED
03544  M01S03518.ssdebug +++|*     IN RESPONSE TO A TYPE 3 UCP REQUEST.
03545  M01S03519.ssdebug +++|#
03546  M01S03520.ssdebug +++|
03547  M01S03521.ssdebug +++|      SWITCH RESPACT3: RESPTYP3      # TYPE 3 RESPONSE CODES #
03548  M01S03522.ssdebug +++|              OK3$ACT: OK3,          # NO ERROR #
03549  M01S03523.ssdebug +++|           INTLCK$ACT: C$M$INTLCK,   # CATALOG/MAP INTERLOCKED #
03550  M01S03524.ssdebug +++|            NOPEN$ACT: C$M$NOPEN,    # CATALOG/MAP NOT OPEN #
03551  M01S03525.ssdebug +++|            RESUB$ACT: RESUB$REQ,    # RESUBMIT REQUEST #
03552  M01S03526.ssdebug +++|           SCATEX$ACT: SUB$CAT$EX,   # SUBCATALOG ALREADY EYISTS #
03553  M01S03527.ssdebug +++|            NOSUB$ACT: NO$SUB$CAT,   # NO SUCH SUBCATALOG #
03554  M01S03528.ssdebug +++|           PFPROB$ACT: PF$PROB,      # PF PROBLEM #
03555  M01S03529.ssdebug +++|           NEMPTY$ACT: MSC$NEMPTY,   # MSC NOT EMPTY #
03556  M01S03530.ssdebug +++|           ILLORD$ACT:ILLEG$ORD,     # ORDINAL OUT OF RANGE #
03557  M01S03531.ssdebug +++|            NFROZ$ACT: NFROZ$FRAG,   # NON FROZEN FRAGMENT #
03558  M01S03532.ssdebug +++|            GR$FL$ACT: GROUP$FUL;    # GROUP FULL STATUS #
03559  M01S03533.ssdebug +++|
03560  M01S03534.ssdebug +++|#
03561  M01S03535.ssdebug +++|*     STATUS SWITCH TO PROCESS THE RESPONSE CODES
03562  M01S03536.ssdebug +++|*     RETURNED IN RESPONSE TO A TYPE 4 UCP REQUEST.
03563  M01S03537.ssdebug +++|#
03564  M01S03538.ssdebug +++|
03565  M01S03539.ssdebug +++|      SWITCH RESPACT4: RESPTYP4      # TYPE 4 RESPONSE CODES #
03566  M01S03540.ssdebug +++|              OK4$ACT: OK4,          # NO ERROR #
03567  M01S03541.ssdebug +++|          CSN$MIS$ACT: CART$LB$ERR,  # PART OF LABEL MATCHED #
03568  M01S03542.ssdebug +++|          CSN$USE$ACT: CSN$IN$USE,   # CSN IN USE #
03569  M01S03543.ssdebug +++|         CELL$EMP$ACT: CELL$EMP,     # SPECIFIED CELL EMPTY #
03570  M01S03544.ssdebug +++|         CELL$FLL$ACT: CELL$FULL,    # SPECIFIED CELL FULL #
03571  M01S03545.ssdebug +++|         EX$DMARK$ACT: EX$DMARK,     # EXCESSIVE DMARKS #
03572  M01S03546.ssdebug +++|         UNK$CART$ACT: UNK$CART,     # NO CARTRIDGE LABEL MATCH #
03573  M01S03547.ssdebug +++|           URDERR$ACT: UN$RD$ERR,    # UNRECOVERABLE READ ERROR #
03574  M01S03548.ssdebug +++|           UWTERR$ACT: UN$WRT$ERR,   # UNRECOVERABLE WRITE ERROR #
03575  M01S03549.ssdebug +++|          VOL$ERR$ACT: VOL$HD$ERR,   # VOLUME HEADER ERROR #
03576  M01S03550.ssdebug +++|         M86HW$PR$ACT: M86$HDW$PR,   # M860 HARDWARE PROBLEM #
03577  M01S03551.ssdebug +++|            RMSER$ACT: RMS$FL$ERR,   # DISK FILE ERROR #
03578  M01S03552.ssdebug +++|           DSKFUL$ACT: DISK$FULL,    # DISK FULL #
03579  M01S03553.ssdebug +++|            ATTER$ACT: ATTACH$ERR,   # ATTACH ERROR #
03580  M01S03554.ssdebug +++|          SMA$OFF$ACT: SMA$OFF,      # SM IS OFF #
03581  M01S03555.ssdebug +++|              EOI$ACT: EOI;          # END OF INFORMATION ON FILE #
03582  M01S03556.ssdebug +++|
03583  M01S03557.ssdebug +++|CONTROL EJECT;
03584  M01S03558.ssdebug +++|
03585  M01S03559.ssdebug +++|#
03586  M01S03560.ssdebug +++|*     CHECK THE RESPONSE TYPE.
03587  M01S03561.ssdebug +++|#
03588  M01S03562.ssdebug +++|
03589  M01S03563.ssdebug +++|      IF REQTYPE EQ TYP"TYP3"
03590  M01S03564.ssdebug +++|      THEN                           # TYPE 3 UCP REQUEST #
03591  M01S03565.ssdebug +++|        BEGIN
03592  M01S03566.ssdebug +++|        GOTO RESPACT3[RESPCODE];
03593  M01S03567.ssdebug +++|        END
03594  M01S03568.ssdebug +++|
03595  M01S03569.ssdebug +++|      IF REQTYPE EQ TYP"TYP4"
03596  M01S03570.ssdebug +++|      THEN                           # TYPE 4 UCP REQUEST #
03597  M01S03571.ssdebug +++|        BEGIN
03598  M01S03572.ssdebug +++|        GOTO RESPACT4[RESPCODE];
03599  M01S03573.ssdebug +++|        END
03600  M01S03574.ssdebug +++|
03601  M01S03575.ssdebug +++|      IF REQTYPE NQ 0
03602  M01S03576.ssdebug +++|      THEN                           # ILLEGAL ERROR TYPE #
03603  M01S03577.ssdebug +++|        BEGIN
03604  M01S03578.ssdebug +++|        GOTO ERR;
03605  M01S03579.ssdebug +++|        END
03606  M01S03580.ssdebug +++|
03607  M01S03581.ssdebug +++|#
03608  M01S03582.ssdebug +++|*     PROCESS RESPONSE FROM CATALOG/MAP ACCESS ROUTINES.
03609  M01S03583.ssdebug +++|#
03610  M01S03584.ssdebug +++|
03611  M01S03585.ssdebug +++|      IF RESPCODE EQ CMASTAT"INTLK"
03612  M01S03586.ssdebug +++|      THEN                           # CATALOG/MAP INTERLOCKED #
03613  M01S03587.ssdebug +++|        BEGIN
03614  M01S03588.ssdebug +++|        DBERRCODE = S"DC$M$INTLK";
03615  M01S03589.ssdebug +++|        DBERR(DBERRCODE);
03616  M01S03590.ssdebug +++|        RETURN;
03617  M01S03591.ssdebug +++|        END
03618  M01S03592.ssdebug +++|
03619  M01S03593.ssdebug +++|      IF RESPCODE EQ CMASTAT"ATTERR"
03620  M01S03594.ssdebug +++|      THEN                           # ATTACH ERROR #
03621  M01S03595.ssdebug +++|        BEGIN
03622  M01S03596.ssdebug +++|        DBERRCODE = S"DPF$PROB";
03623  M01S03597.ssdebug +++|        DBERR(DBERRCODE);
03624  M01S03598.ssdebug +++|        RETURN;
03625  M01S03599.ssdebug +++|        END
03626  M01S03600.ssdebug +++|
03627  M01S03601.ssdebug +++|      IF RESPCODE EQ CMASTAT"NOSUBCAT"
03628  M01S03602.ssdebug +++|      THEN                           # NO SUCH SUBCATALOG #
03629  M01S03603.ssdebug +++|        BEGIN
03630  M01S03604.ssdebug +++|        DBERRCODE = S"DNO$SUBCAT";
03631  M01S03605.ssdebug +++|        DBERR(DBERRCODE);
03632  M01S03606.ssdebug +++|        RETURN;
03633  M01S03607.ssdebug +++|        END
03634  M01S03608.ssdebug +++|
03635  M01S03609.ssdebug +++|      IF RESPCODE EQ CMASTAT"ORDERR"
03636  M01S03610.ssdebug +++|      THEN                           # *FCT* ORDINAL OUT OF RANGE #
03637  M01S03611.ssdebug +++|        BEGIN
03638  M01S03612.ssdebug +++|        DBERRCODE = S"DORD$ERR";
03639  M01S03613.ssdebug +++|        DBERR(DBERRCODE);
03640  M01S03614.ssdebug +++|        RETURN;
03641  M01S03615.ssdebug +++|        END
03642  M01S03616.ssdebug +++|
03643  M01S03617.ssdebug +++|      GOTO ERR;                      # ILLEGAL RESPONSE CODE #
03644  M01S03618.ssdebug +++|
03645  M01S03619.ssdebug +++|#
03646  M01S03620.ssdebug +++|*     PROCESS RESPONSE CODES FOR TYPE 3 UCP REQUESTS.
03647  M01S03621.ssdebug +++|#
03648  M01S03622.ssdebug +++|
03649  M01S03623.ssdebug +++|OK3$ACT:                             # NO ERROR #
03650  M01S03624.ssdebug +++|      RETURN;
03651  M01S03625.ssdebug +++|
03652  M01S03626.ssdebug +++|INTLCK$ACT:                          # CATALOG/MAP FILE INTERLOCKED #
03653  M01S03627.ssdebug +++|      DBERRCODE = S"DC$M$INTLK";
03654  M01S03628.ssdebug +++|      DBERR(DBERRCODE);
03655  M01S03629.ssdebug +++|      RETURN;
03656  M01S03630.ssdebug +++|
03657  M01S03631.ssdebug +++|NOPEN$ACT:                           # CATALOG/MAP NOT OPEN #
03658  M01S03632.ssdebug +++|      DBERRCODE = S"DC$M$NOPEN";
03659  M01S03633.ssdebug +++|      DBERR(DBERRCODE);
03660  M01S03634.ssdebug +++|      RETURN;
03661  M01S03635.ssdebug +++|
03662  M01S03636.ssdebug +++|RESUB$ACT:                           # RESUBMIT REQUEST #
03663  M01S03637.ssdebug +++|      GOTO ERR;
03664  M01S03638.ssdebug +++|
03665  M01S03639.ssdebug +++|SCATEX$ACT:                          # SUBCATALOG ALREADY EYISTS #
03666  M01S03640.ssdebug +++|      GOTO ERR;
03667  M01S03641.ssdebug +++|
03668  M01S03642.ssdebug +++|NOSUB$ACT:                           # NO SUCH SUBCATALOG #
03669  M01S03643.ssdebug +++|      DBERRCODE = S"DNO$SUBCAT";
03670  M01S03644.ssdebug +++|      DBERR(DBERRCODE);
03671  M01S03645.ssdebug +++|      RETURN;
03672  M01S03646.ssdebug +++|
03673  M01S03647.ssdebug +++|PFPROB$ACT:                          # PF PROBLEM #
03674  M01S03648.ssdebug +++|      DBERRCODE = S"DPF$PROB";
03675  M01S03649.ssdebug +++|      DBERR(DBERRCODE);
03676  M01S03650.ssdebug +++|      RETURN;
03677  M01S03651.ssdebug +++|
03678  M01S03652.ssdebug +++|NEMPTY$ACT:                          # MSC NOT EMPTY #
03679  M01S03653.ssdebug +++|      GOTO ERR;
03680  M01S03654.ssdebug +++|
03681  M01S03655.ssdebug +++|ILLORD$ACT:                          # *FCT* ORDINAL OUT OF RANGE #
03682  M01S03656.ssdebug +++|      DBERRCODE = S"DORD$ERR";
03683  M01S03657.ssdebug +++|      DBERR(DBERRCODE);
03684  M01S03658.ssdebug +++|      RETURN;
03685  M01S03659.ssdebug +++|
03686  M01S03660.ssdebug +++|NFROZ$ACT:                           # NON FROZEN FRAGMENT #
03687  M01S03661.ssdebug +++|      DBERRCODE = S"DFROZ$NSET";
03688  M01S03662.ssdebug +++|      DBERR(DBERRCODE);
03689  M01S03663.ssdebug +++|      RETURN;
03690  M01S03664.ssdebug +++|
03691  M01S03665.ssdebug +++|GR$FL$ACT:                           # GROUP FULL #
03692  M01S03666.ssdebug +++|      GOTO ERR;
03693  M01S03667.ssdebug +++|
03694  M01S03668.ssdebug +++|#
03695  M01S03669.ssdebug +++|*     PROCESS RESPONSE CODES FOR TYPE 4 UCP REQUESTS.
03696  M01S03670.ssdebug +++|#
03697  M01S03671.ssdebug +++|
03698  M01S03672.ssdebug +++|OK4$ACT:                             # NO ERROR #
03699  M01S03673.ssdebug +++|      RETURN;
03700  M01S03674.ssdebug +++|
03701  M01S03675.ssdebug +++|CSN$MIS$ACT:                         # CSN CARTRIDGE MISMATCH #
03702  M01S03676.ssdebug +++|      DBERRCODE = S"DCART$LB$ERR";
03703  M01S03677.ssdebug +++|      DBERR(DBERRCODE);
03704  M01S03678.ssdebug +++|      RETURN;
03705  M01S03679.ssdebug +++|
03706  M01S03680.ssdebug +++|CSN$USE$ACT:                         # CSN IN USE #
03707  M01S03681.ssdebug +++|      DBERRCODE = S"DCSN$IN$USE";
03708  M01S03682.ssdebug +++|      DBERR(DBERRCODE);
03709  M01S03683.ssdebug +++|      RETURN;
03710  M01S03684.ssdebug +++|
03711  M01S03685.ssdebug +++|CELL$EMP$ACT:                        # CELL EMPTY #
03712  M01S03686.ssdebug +++|      DBERRCODE = S"DCELL$EMP";
03713  M01S03687.ssdebug +++|      DBERR(DBERRCODE);
03714  M01S03688.ssdebug +++|      RETURN;
03715  M01S03689.ssdebug +++|
03716  M01S03690.ssdebug +++|CELL$FLL$ACT:                        # CELL FULL #
03717  M01S03691.ssdebug +++|      GOTO ERR;
03718  M01S03692.ssdebug +++|
03719  M01S03693.ssdebug +++|EX$DMARK$ACT:                        # EXCESSIVE DEMARKS #
03720  M01S03694.ssdebug +++|      GOTO ERR;
03721  M01S03695.ssdebug +++|
03722  M01S03696.ssdebug +++|UNK$CART$ACT:                        # NO CARTRIDGE LABEL MATCH #
03723  M01S03697.ssdebug +++|      DBERRCODE = S"DUNK$CART";
03724  M01S03698.ssdebug +++|      DBERR(DBERRCODE);
03725  M01S03699.ssdebug +++|      RETURN;
03726  M01S03700.ssdebug +++|
03727  M01S03701.ssdebug +++|URDERR$ACT:                          # UNRECOVERABLE READ ERROR #
03728  M01S03702.ssdebug +++|      DBERRCODE = S"DUN$RD$ERR";
03729  M01S03703.ssdebug +++|      DBERR(DBERRCODE);
03730  M01S03704.ssdebug +++|      RETURN;
03731  M01S03705.ssdebug +++|
03732  M01S03706.ssdebug +++|UWTERR$ACT:                          # UNRECOVERABLE WRITE ERROR #
03733  M01S03707.ssdebug +++|      GOTO ERR;
03734  M01S03708.ssdebug +++|
03735  M01S03709.ssdebug +++|VOL$ERR$ACT:                         # VOLUME HEADER ERROR #
03736  M01S03710.ssdebug +++|      DBERRCODE = S"DVOL$HD$ERR";
03737  M01S03711.ssdebug +++|      DBERR(DBERRCODE);
03738  M01S03712.ssdebug +++|      RETURN;
03739  M01S03713.ssdebug +++|
03740  M01S03714.ssdebug +++|M86HW$PR$ACT:                        # M860 HARDWARE ERROR #
03741  M01S03715.ssdebug +++|      DBERRCODE = S"DSYS$ERR";
03742  M01S03716.ssdebug +++|      DBERR(DBERRCODE);
03743  M01S03717.ssdebug +++|      RETURN;
03744  M01S03718.ssdebug +++|
03745  M01S03719.ssdebug +++|RMSER$ACT:                           # DISK FILE ERROR #
03746  M01S03720.ssdebug +++|      DBERRCODE = S"DDSKFL$ERR";
03747  M01S03721.ssdebug +++|      DBERR(DBERRCODE);
03748  M01S03722.ssdebug +++|      RETURN;
03749  M01S03723.ssdebug +++|
03750  M01S03724.ssdebug +++|DSKFUL$ACT:                          # DISK FULL #
03751  M01S03725.ssdebug +++|      DBERRCODE = S"DDISK$FULL";
03752  M01S03726.ssdebug +++|      DBERR(DBERRCODE);
03753  M01S03727.ssdebug +++|      RETURN;
03754  M01S03728.ssdebug +++|
03755  M01S03729.ssdebug +++|ATTER$ACT:                           # ATTACH ERROR #
03756  M01S03730.ssdebug +++|      DBERRCODE = S"DATT$ERR";
03757  M01S03731.ssdebug +++|      DBERR(DBERRCODE);
03758  M01S03732.ssdebug +++|      RETURN;
03759  M01S03733.ssdebug +++|
03760  M01S03734.ssdebug +++|SMA$OFF$ACT:                          # SMA OFF #
03761  M01S03735.ssdebug +++|      DBERRCODE = S"DSMA$OFF";
03762  M01S03736.ssdebug +++|      DBERR(DBERRCODE);
03763  M01S03737.ssdebug +++|      RETURN;
03764  M01S03738.ssdebug +++|
03765  M01S03739.ssdebug +++|EOI$ACT:                            # EOI ON FILE #
03766  M01S03740.ssdebug +++|      GOTO ERR;
03767  M01S03741.ssdebug +++|
03768  M01S03742.ssdebug +++|ERR:
03769  M01S03743.ssdebug +++|      DBMSG$PROC[0] = PROCNAME;      # ABNORMAL TERMINATION #
03770  M01S03744.ssdebug +++|      MESSAGE(DBMSG[0],SYSUDF1);
03771  M01S03745.ssdebug +++|      RESTPFP(PFP$ABORT);            # RESTORE USER-S *PFP* AND ABORT #
03772  M01S03746.ssdebug +++|
03773  M01S03747.ssdebug +++|
03774  M01S03748.ssdebug +++|      END  # DBRESP #
03775  M01S03749.ssdebug +++|
03776  M01S03750.ssdebug +++|    TERM
03777  M01S03751.ssdebug +++|PROC DBVSN(Y,Z,MAPENT,FLAG);
03778  M01S03752.ssdebug +++|# TITLE - DBVSN - SEARCH SMMAP FOR THE CSN.                         #
03779  M01S03753.ssdebug +++|
03780  M01S03754.ssdebug +++|      BEGIN  # DBVSN #
03781  M01S03755.ssdebug +++|
03782  M01S03756.ssdebug +++|#
03783  M01S03757.ssdebug +++|**    DBVSN - SEARCH SMMAP FOR CSN.
03784  M01S03758.ssdebug +++|*
03785  M01S03759.ssdebug +++|*     PROC DBVSN(Y,Z,MAPENT,FLAG)
03786  M01S03760.ssdebug +++|*
03787  M01S03761.ssdebug +++|*     ENTRY    (DBARG$SMID) = SM-ID.
03788  M01S03762.ssdebug +++|*              (DBARG$CN)    = DIGIT PORTION OF CSN.
03789  M01S03763.ssdebug +++|*              (DBARG$CM)    = CARTRIDGE MANUFACTURER CODE.
03790  M01S03764.ssdebug +++|*
03791  M01S03765.ssdebug +++|*     EXIT     (Y)    = Y COORDINATE OF MATCHING CSN.
03792  M01S03766.ssdebug +++|*              (Z)    = Z COORDINATE OF MATCHING CSN.
03793  M01S03767.ssdebug +++|*              (MAPENT) = SMMAP ENTRY.
03794  M01S03768.ssdebug +++|*              (FLAG)   = ERROR STATUS.
03795  M01S03769.ssdebug +++|*                         0, NO ERROR
03796  M01S03770.ssdebug +++|*                       1, CSN NOT FOUND.
03797  M01S03771.ssdebug +++|*
03798  M01S03772.ssdebug +++|*     MESSAGES SSDEBUG ABNORMAL, DBVSN.
03799  M01S03773.ssdebug +++|*
03800  M01S03774.ssdebug +++|*     NOTES    THE SMMAP IS SEARCHED SEQUENTIALLY FOR
03801  M01S03775.ssdebug +++|*              MATCHING CSN.
03802  M01S03776.ssdebug +++|#
03803  M01S03777.ssdebug +++|
03804  M01S03778.ssdebug +++|      ITEM Y           I;           # Y COORDINATE OF MATCHING CSN #
03805  M01S03779.ssdebug +++|      ITEM Z           I;           # Z COORDINATE OF MATCHING CSN #
03806  M01S03780.ssdebug +++|      ARRAY MAPENT [0:0] S(3);;      # SMMAP ENTRY #
03807  M01S03781.ssdebug +++|      ITEM FLAG       I;             # ERROR STATUS #
03808  M01S03782.ssdebug +++|
03809  M01S03783.ssdebug +++|#
03810  M01S03784.ssdebug +++|****  PROC DBVSN - XREF LIST BEGIN.
03811  M01S03785.ssdebug +++|#
03812  M01S03786.ssdebug +++|
03813  M01S03787.ssdebug +++|      XREF
03814  M01S03788.ssdebug +++|        BEGIN
03815  M01S03789.ssdebug +++|        PROC MESSAGE;                # DISPLAYS MESSAGE #
03816  M01S03790.ssdebug +++|        PROC MGETENT;                # GET SMMAP ENTRY #
03817  M01S03791.ssdebug +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
03818  M01S03792.ssdebug +++|                                       OR RETURN #
03819  M01S03793.ssdebug +++|        END
03820  M01S03794.ssdebug +++|
03821  M01S03795.ssdebug +++|#
03822  M01S03796.ssdebug +++|****  PROC DBVSN - XREF LIST END.
03823  M01S03797.ssdebug +++|#
03824  M01S03798.ssdebug +++|
03825  M01S03799.ssdebug +++|      DEF PROCNAME  #"DBVSN."#;      # PROC NAME #
03826  M01S03800.ssdebug +++|
03827  M01S03801.ssdebug +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
03828  M01S03802.ssdebug +++|*CALL COMBFAS
03829  M01S03803.ssdebug +++|*CALL COMBCMS
03830  M01S03804.ssdebug +++|*CALL COMBCPR
03831  M01S03805.ssdebug +++|*CALL COMBMAP
03832  M01S03806.ssdebug +++|*CALL COMTDBP
03833  M01S03807.ssdebug +++|*CALL COMTDBG
03834  M01S03808.ssdebug +++|
03835  M01S03809.ssdebug +++|      ITEM I          I;             # LOOP INDUCTION VARIABLE #
03836  M01S03810.ssdebug +++|      ITEM MAPADDR    I;             # FWA OF BUFFER TO HOLD ENTRY #
03837  M01S03811.ssdebug +++|
03838  M01S03812.ssdebug +++|CONTROL EJECT;
03839  M01S03813.ssdebug +++|
03840  M01S03814.ssdebug +++|      FLAG = 0;                      # INITIALIZE #
03841  M01S03815.ssdebug +++|      MAPADDR = LOC(MAPENT[0]);
03842  M01S03816.ssdebug +++|      P<SMUMAP> = MAPADDR;
03843  M01S03817.ssdebug +++|
03844  M01S03818.ssdebug +++|#
03845  M01S03819.ssdebug +++|*     SEARCH SMMAP FOR MATCHING VSN.
03846  M01S03820.ssdebug +++|#
03847  M01S03821.ssdebug +++|
03848  M01S03822.ssdebug +++|      FASTFOR I = 1 STEP 1 UNTIL MAXORD
03849  M01S03823.ssdebug +++|      DO
03850  M01S03824.ssdebug +++|        BEGIN  # SEARCH SMMAP #
03851  M01S03825.ssdebug +++|        MGETENT(DBARG$SMID[0],I,MAPADDR,FLAG);
03852  M01S03826.ssdebug +++|        IF FLAG NQ CMASTAT"NOERR"
03853  M01S03827.ssdebug +++|        THEN                         # ABNORMAL TERMINATION #
03854  M01S03828.ssdebug +++|          BEGIN
03855  M01S03829.ssdebug +++|          DBMSG$PROC[0] = PROCNAME;
03856  M01S03830.ssdebug +++|          MESSAGE(DBMSG[0],SYSUDF1);
03857  M01S03831.ssdebug +++|          RESTPFP(PFP$ABORT);        # RESTORE USER-S *PFP* AND ABORT #
03858  M01S03832.ssdebug +++|          END
03859  M01S03833.ssdebug +++|
03860  M01S03834.ssdebug +++|        IF CM$CCOD[0] EQ DBARG$CM[0] AND CM$CSND[0] EQ DBARG$CN[0]
03861  M01S03835.ssdebug +++|        THEN                         # VSN MATCH FOUND #
03862  M01S03836.ssdebug +++|          BEGIN
03863  M01S03837.ssdebug +++|          Y = ( MAXORD - I )/( MAX$Z + 1 );
03864  M01S03838.ssdebug +++|          Z = MAXORD - I - ( MAX$Z + 1 )* Y;
03865  M01S03839.ssdebug +++|          RETURN;
03866  M01S03840.ssdebug +++|          END
03867  M01S03841.ssdebug +++|
03868  M01S03842.ssdebug +++|        END  # SEARCH SMMAP #
03869  M01S03843.ssdebug +++|
03870  M01S03844.ssdebug +++|      FLAG = 1;                      # MATCHING VSN NOT FOUND #
03871  M01S03845.ssdebug +++|      RETURN;
03872  M01S03846.ssdebug +++|
03873  M01S03847.ssdebug +++|      END
03874  M01S03848.ssdebug +++|
03875  M01S03849.ssdebug +++|    TERM
cdc/nos2.source/opl.opl871/deck/ssdebug.001.txt ยท Last modified: by 127.0.0.1