COMXMSC 
COMMON
  
#     COMXMSC - MISCELLANEOUS DEFS, FLAGS, AND COUNTERS.              # 
                                               CONTROL NOLIST;
                                               CONTROL IFEQ LISTCON,1;
                                               CONTROL LIST;
                                               CONTROL FI;
      BEGIN  # COMXMSC #
  
# 
***   COMXMSC - MISCELLANEOUS DEFS, FLAGS, AND COUNTERS.
* 
*     COMXMSC CONTAINS MISCELLANEOUS DEFS, FLAGS, AND COUNTERS
*     WHICH ARE REQUIRED BY VARIOUS *SSEXEC* ROUTINES.
# 
  
  
  
      DEF FM         #1#;            # FORCE FAMILY OPTION #
      DEF HLRQIND    #TRUE#;         # *HLRQ* ENTRY INDICATOR # 
      DEF LLRQIND    #FALSE#;        # *LLRQ* ENTRY INDICATOR # 
      DEF LNV        #O"13"#;        # ACCESS LEVEL INVALID FOR FILE #
      DEF MAXTIME    #O"7777777"#;   # MAXIMUM POSSIBLE DELAY # 
      DEF MRFTLEN    #2#;            # *MRFT* ENTRY LENGTH #
      DEF NOCART     #0#;            # NO CARTRIDGE # 
      DEF NUMAU      #1932#;         # NUMBER OF AU PLUS ONE #
      DEF RESTART    #2#;            # CONTROL VALUE IF RESTART NEEDED
                                     #
      DEF SLAVEMODE  #1#;            # CONTROL VALUE IF IN SLAVE MODE # 
      DEF TSFMCAT    #"TSFMCAT"#;    # TEMPORARY CATALOG FILE NAME #
      DEF WEQ        #O"10"#;        # EQUIPMENT NOT AVAILABLE #
  
      STATUS ERRST                   # DESTAGE/STAGE ERROR STATES # 
        NOERR,                       # NO ERROR # 
        WAIT,                        # WAIT CONDITION # 
        RETRY,                       # RETRY DESTAGE ON DIFF CARTRIDGE
                                     #
        FATAL,                       # FATAL ERROR #
        RESTART,                     # RESTART CONDITION #
        ABANDON,                     # ABANDON CONDITION #
        SPECIAL,                     # SPECIAL CONDITION #
        NXTSUBF,                     # NEXT SUBFAMILY # 
        TEMP,                        # TEMPORARY DUE TO HW DELAY #
        RSFULL,                      # NO RESOURES #
        SMDSTAGEOFF,                 # DRD-S OFF TO DESTAGE # 
        PERM;                        # PERMANENT ERROR #
  
      STATUS HLRPN                   # *HLRQ* PROCESS NAMES # 
        STAGE,                       # STAGER # 
        DESTAGE,                     # DESTAGER # 
        ENDPN;                       # END OF *HLRQ* PROCESS NAMES #
  
      STATUS PROCST                  # PROCESS STATE #
        INITIAL,                     # INITIAL STATE #
        CONT1,                       # CONTINUATION 1 # 
        CONT2,                       # CONTINUATION 2 # 
        CONT3,                       # CONTINUATION 3 # 
        CONT4,                       # CONTINUATION 4 # 
        CONT5,                       # CONTINUATION 5 # 
        CONT6,                       # CONTINUATION 6 # 
        CONT7,                       # CONTINUATION 7 # 
        CONT8,                       # CONTINUATION 8 # 
        CONT9,                       # CONTINUATION 9 # 
        CONT10,                      # CONTINUATION 10 #
        CONT11,                      # CONTINUATION 11 #
        CONT12,                      # CONTINUATION 12 #
        CONT13,                      # CONTINUATION 13 #
        CONT14,                      # CONTINUATION 14 #
        CONT15,                      # CONTINUATION 15 #
        CONT16,                      # CONTINUATION 16 #
        CONT17,                      # CONTINUATION 17 #
        CONT18,                      # CONTINUATION 18 #
        CONT19,                      # CONTINUATION 19 #
        CONT20,                      # CONTINUATION 20 #
        CONT21,                      # CONTINUATION 21 #
        CONT22,                      # CONTINUATION 22 #
        CONT23,                      # CONTINUATION 23 #
        CONT24,                      # CONTINUATION 24 #
        CONT25,                      # CONTINUATION 25 #
        CONT26,                      # CONTINUATION 26 #
        CONT27,                      # CONTINUATION 27 #
        CONT28,                      # CONTINUATION 28 #
        CONT29,                      # CONTINUATION 29 #
        CONT30,                      # CONTINUATION 30 #
        COMPLETE;                    # COMPLETE STATE # 
  
      COMMON XMSCCOM; 
  
        BEGIN  # XMSCCOM #
                                     # $$ # 
        ITEM $$XMSC$$   C(20) = "****** COMXMSC *****"; 
                                     # $$ # 
  
        ITEM STGCNT     I;           # NUMBER OF STAGE REQUESTS # 
  
# 
*     THE FOLLOWING ITEM *STG$MSK* CONTROLS THE STAGING INITIATION
*     PROCESS AS FOLLOWS: 
* 
*     IF *STG$MSK* = 0, THEN THE PROCEDURES *NEWWORK* AND *TDAM$RP* 
*                       MAY BE CALLED TO PROCESS A NON-STAGE *TDAM* 
*                       REQUEST DIRECTLY, OR TO INITIATE A STAGE
*                       BY PLACING THE *TDAM* INTO AN *HLRQ* ENTRY. 
* 
*     IF *STG$MSK* NQ 0, THEN THERE IS NO POINT IN CALLING *TDAM$RP*. 
* 
*     *TDAM$RP* SETS *STG$MSK* TO A NON-ZERO VALUE WHEN IT HAS
*     COMPLETED EXECUTION.  IF *STG$MSK* IS NON-ZERO, EACH BIT
*     (1-8) INDICATES WHETHER THE ASSOCIATED STORAGE MODULE (A-H) 
*     HAS AN AVAILABLE *DRD* FOR THE CARTRIDGE NEEDED FOR THE REQUEST.
*     IF THE BIT IS SET, THE STORAGE MODULE IS BUSY, AND HENCE
*     *TDAM$RP* NEED NOT BE CALLED. 
* 
*     THE FOLLOWING ROUTINES SET *STG$MSK* TO ZERO: 
* 
*     - *HLRQMTR*  WHEN A STAGE OR DESTAGE *HLRQ* IS COMPLETE.
* 
*     - *ENTDAM*   WHEN A *TDAM* REQUEST IS RECEIVED WHICH CAN
*                  BE PROCESSED.
* 
# 
  
        ITEM STG$MSK    U=0;         # CONTROLS STAGE PROCESSING #
  
# 
*     THE FOLLOWING ARRAY DETERMINES WHETHER ACCOUNT AND
*     DAYFILE MESSAGES WILL BE ISSUED FROM *MSGAFDF*. 
# 
  
        ARRAY MSGCTL [0:0] S(5);
          BEGIN 
          ITEM MSG$OPTXT C(00,00,10) =[" DEST STGE"]; 
          ITEM MSG$DF$CTL U(01,00,60);  # DAYFILE BIT MASKS # 
          ITEM MSG$DF$DS  U(01,00,30) = [O"7777777"]; 
          ITEM MSG$DF$ST  U(01,30,30) = [O"7777777"]; 
          ITEM MSG$ACT    U(02,00,60);  # 1 BIT PER MESSAGE USED #
          ITEM MSG$AF    C(03,00,10) = [" ACCOUNT  "];
          ITEM MSG$AF$CTL U(04,00,60) = [O"7777"];
          END 
  
  
# 
*     THE FOLLOWING ITEMS CONTAIN FIELD LENGTH INFORMATION.  THE
*     PROCEDURE *MNGMEM* IS USED TO MANAGE MEMORY REQUESTS.  AFTER THE
*     ITEMS *CUR$FL*, *MAX$FL*, *NEXTADR*, AND *UNU$FL* ARE INITIALIZED 
*     BY *INITAB*, THESE FIELDS ALONG WITH *NFLCHNG* ARE TO BE CHANGED
*     ONLY BY *MNGMEM*. 
# 
  
        ITEM CUR$FL     I;           # CURRENT FIELD LENGTH # 
        ITEM MAX$FL     I;           # MAXIMUM FIELD LENGTH REACHED # 
        ITEM NEXTADR    U;           # LOCATION OF NEXT AVAILABLE BLOCK 
                                       OF ALLOCATED MEMORY #
        ITEM NFLCHNG    I;           # NUMBER OF FIELD LENGTH CHANGES # 
        ITEM UNU$FL     I;           # UNUSED FIELD LENGTH #
        ITEM DSTCNT     I;           # NUMBER OF FILES DESTAGED # 
  
  
# 
*     THE FOLLOWING ITEMS CONTROL THE HIGH LEVEL DESTAGE PROCESS. 
* 
*     *INIT*  =X, DESTAGING IS TO BE INITIATED.  *MAINLP* IS TO CALL
*                 *NEWWORK* IF AN *HLRQ* ENTRY IS FREE.  *NEWWORK*
*                 WILL CALL *DSNTDAM* TO GET THE FIRST DESTAGE
*                 REQUEST IN THE *HLRQ* ENTRY.
* 
*     *FAM*   =0, NO DESTAGING OF FILES IS OCCURRING. *SSMOVE*
*                 MAY RUN AND CONNECT TO *EXEC* TO SUBMIT 
*                 FILES TO BE DESTAGED. 
* 
*     *FAM*   =F, FILES FROM FAMILY ( F ) ARE BEING DESTAGED. 
*                 FIELD *LTCT* INDICATES WHETHER *SSMOVE* 
*                 IS WAITING FOR A REPLY WHEN THE DESTAGING 
*                 IS COMPLETE.
*                 FIELD *LKMSK* INDICATES WHETHER SUBFAMILY CATALOG 
*                 INTERLOCKS ARE TO BE RELEASED.
*                 FIELD *LKTYP* INDICATED THE TYPE OF INTERLOCK 
*                 RELEASE IS REQUESTED IF *LKMSK* NQ 0. 
* 
*     *LTCT*  =0, *SSMOVE* IS NOT WAITING FOR A REPLY.
*     *LTCT*  =X, ( X ) IS THE LONG TERM CONNECT TABLE ORDINAL
*                 FOR THE WAITING *SSMOVE*. 
* 
*     *LKMSK* =0, NO SUBFAMILY CATALOG INTERLOCKS NEED TO BE RELEASED.
*             =Y, ONE BIT PER SUBFAMILY OF ( Y ) IDENTIFIES WHICH 
*                 SUBFAMILY CATALOG FILES ARE TO BE RELEASED. 
*                 NOTE THAT THIS RELEASE CAN NOT OCCUR WHILE
*                 A FILE IS BEING DESTAGED BECAUSE THE PARTIAL
*                 CHAIN OF ALLOCATED VOLUMES FOR THIS FILE MAY
*                 APPEAR TO *SSVAL* TO BE AN ORPHAN AND BE RELEASED.
*                 PROCEDURE *NXTDEST* CALLS THE APPROPRIATE ROUTINE 
*                 TO RELEASE INTERLOCKS WHEN A FILE DESTAGE IS COMPLETE.
* 
*     *LKTYP* =0, RELEASE SUBFAMILY CATALOG ENTIRELY. 
*             =1, ATTACH SUBFAMILY CATALOG IN UPDATE MODE (NOS 2.1).
# 
  
        ITEM DSC$INIT   U=0;         # CONTROLS INITIATION OF DESTAGING 
                                     #
        ITEM DSC$WRESRS U=0;         # DESTAGE WAITTING RESOURSE #
        ITEM DSC$FAM    U=0;         # FAMILY BEING DESTAGED #
        ITEM DSC$LTCT   U;           # LONG TERM CONNECT TABLE ORDINAL
                                     #
        ITEM DSC$LKMSK  U;           # MASK OF INTERLOCKS TO BE 
                                       RELEASED # 
        ITEM DSC$LKTYP  U;           # TYPE OF INTERLOCK TO RELEASE # 
  
        ARRAY CHARS [0:0] S(1); 
          BEGIN 
          ITEM CH$10      C(00,00,10);  # ALL 10 CHARACTERS # 
          ITEM CH$07     C(00,18,07);  # RIGHTMOST 7 CHARS #
          ITEM CH$06      C(00,24,06);  # RIGHTMOST 6 CHARS # 
          ITEM CH$04      C(00,36,04);  # RIGHTMOST 4 CHARS # 
          ITEM CH$02      C(00,48,02);  # RIGHTMOST 2 CHARS # 
          END 
  
        ARRAY MSG2 [0:0] S(4);
          BEGIN 
          ITEM MSG2$TXT   C(00,00,38) =  ## 
            [" PFN=PPPPPPP, UI=NNNNNN, FM=FFFFFFF."]; 
          ITEM MSG2$PFN   C(00,30,07);  # PPPPPPP # 
          ITEM MSG2$UI    C(01,42,06);  # NNNNNN #
          ITEM MSG2$FM    C(02,48,07);  # FFFFFFF # 
          ITEM MSG2$ZERO  U(03,48,12) = [0];
          END 
  
  
        ARRAY FEMSG [0:0] P(3);      # EXEC FATAL ERROR MESSAGE # 
          BEGIN 
          ITEM FE$MSG     C(00,00,16) = [" EXEC ABNORMAL, "]; 
          ITEM FE$RTN     C(01,36,10);  # ROUTINE NAME #
          ITEM FE$ZBYTE   U(02,36,12) = [0];  # ZERO-BYTE TERMINATOR #
          END 
  
        ARRAY JCI [0:0] S(2);        # JOB CONTROL INFORMATION #
          BEGIN 
          ITEM JCI$EFG    U(00,00,06);  # GLOBAL ERROR FLAG # 
          ITEM JCI$REG    U(00,06,18);  # GLOBAL REGISTER # 
          ITEM JCI$CCL    U(00,24,12);  # RESERVED FOR *CCL* USE #
          ITEM JCI$EM     U(00,36,12);  # EXIT MODE # 
          ITEM JCI$SSW    U(00,48,06);  # SENSE SWITCHES #
          ITEM JCI$EF     U(01,00,06);  # LAST ERROR FLAG ENCOUNTERED # 
          ITEM JCI$R3     U(01,06,18);  # JOB CONTROL REGISTER 3 #
          ITEM JCI$R2     U(01,24,18);  # JOB CONTROL REGISTER 2 #
          ITEM JCI$R1     U(01,42,18);  # JOB CONTROL REGISTER 1 #
          END 
  
        BASED 
        ARRAY MRFT [0:0] P(MRFTLEN);  # MOVE REQUEST FILE TABLE # 
          BEGIN 
          ITEM MRFTFAM    C(00,18,07);  # FAMILY NAME # 
          END 
  
        END  # XMSCCOM #
  
      END  # COMXMSC #
  
                                               CONTROL LIST;
