*LOG COMMAND                                            HEADER  FUPLOG  0001.000
         M.PGM     FUP.LOG,MPX-32,3.6.1,01                              0002.000
         SPACE                                                          0003.000
*                                                                       0004.000
************************************************************************0005.000
*                                                                      *0006.000
*                    PROPRIETARY INFORMATION                           *0007.000
*                    -----------------------                           *0008.000
*   THE INFORMATION CONTAINED HEREIN IS PROPRIETARY TO ENCORE          *0009.000
*   COMPUTER CORPORATION AND/OR ITS VENDORS, AND ITS USE, DISCLOSURE,  *0010.000
*   OR DUPLICATION IS SUBJECT TO THE RESTRICTIONS STATED IN THE        *0011.000
*   STANDARD ENCORE COMPUTER CORPORATION LICENSE TERMS AND CONDITIONS  *0012.000
*   OR THE APPROPRIATE THIRD-PARTY SUBLICENSE AGREEMENT.               *0013.000
*                                                                      *0014.000
*                       RESTRICTED RIGHTS                              *0015.000
*                       -----------------                              *0016.000
*   USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT       *0017.000
*   TO RESTRICTIONS AS SET FOURTH IN SUBDIVISION (c) (1) (ii) OF       *0018.000
*   THE RIGHTS IN TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT       *0019.000
*   252.227.7013                                                       *0020.000
************************************************************************0021.000
* (C) COPYRIGHT 1989 ENCORE COMPUTER CORPORATION                       *0022.000
*     ALL RIGHTS RESERVED                                              *0023.000
************************************************************************0024.000
*-                                                                      0025.000
*+                                                                      0026.000
*    FUNCTIONAL DESCRIPTION:                                            0027.000
*                                                                       0028.000
*        THIS MODULE CONTAINS ONE OF THE COMMAND PROCESSING ROUTINES    0029.000
*        FOR THE FILE UTILITY PROGRAM FOR THE NEW FILE SYSTEM. THIS     0030.000
*        MODULE HANDLES THE COMMANDS:                                   0031.000
*                                                                       0032.000
*                  'LOG IMAGE'                                          0033.000
*                  'LOG SAVEFILE'                                       0034.000
*                  'LOG VOLUME'                                         0035.000
*                  'LOG RESOURCE'                                       0036.000
*-                                                                      0037.000
*+                                                                      0038.000
*        ENVIRONMENT                                                    0039.000
*                                                                       0040.000
*    THE LOGICAL FILE CODE: "LOG" IS USED TO WRITE THE LISTING.         0041.000
*-                                                                      0042.000
*********************************************************************   0043.000
*                                                                   *   0044.000
*        HISTORY OF FUPLOG             MPX 3.6.1                    *   0045.000
*                                                                   *   0046.000
*********************************************************************   0047.000
*                                                                       0048.000
*        VOLMGR REV 3.6.1.02  BL2                               S890993 0049.000
*        MODULES: FUPLOG (REV 3.6.0.01)                         S890993 0050.000
*        S890993   12/07/93  11464  SKIP FILES THAT HAVE BEEN   S890993 0051.000
*                  DELETED DURING A WILDCARD LOG OF A DIRECTORY S890993 0052.000
*                                                                       0053.000
*********************************************************************   0054.000
*                                                                   *   0055.000
*        HISTORY OF FUPLOG             MPX 3.6.0                    *   0056.000
*                                                                   *   0057.000
*********************************************************************   0058.000
*                                                                       0059.000
*        VOLMGR REV 3.6.0.12  BL11                              EQIC360B0060.000
*        MODULES: FUPLOG (REV 3.6.0.04)                         EQIC360B0061.000
*        MODULES: FUPRSD (REV 3.6.0.06)                         EQIC360B0062.000
*        MODULES: FUPGBL (REV 3.6.0.03)                         EQIC360B0063.000
*        EQIC360B  08/24/93  10833  DO NOT ISSUE WARNING IF     EQIC360B0064.000
*                  IDIRSEOF IS SET BUT OPT.B.SE IS NOT SET;     EQIC360B0065.000
*                  CHANGE WARNING MESSAGE IN CASE WHERE         EQIC360B0066.000
*                  IDIRSEOF IS NOT SET BUT OPT.B.SE IS SET.     EQIC360B0067.000
*                                                                       0068.000
*        VOLMGR REV 3.6.0.09  BL 9                              EQIC360A0069.000
*        MODULES: FUPLOG (REV 3.6.0.03)                         EQIC360A0070.000
*        EQIC360A  07/29/93  10833  RESTORE TAPE FCB ADDRESS    EQIC360A0071.000
*                  IN INDEX REGISTER AFTER SOFT EOF TEST.       EQIC360A0072.000
*                                                                       0073.000
*        VOLMGR REV 3.6.0.07  BL 4                              S920696 0074.000
*        MODULES: FUPLOG (REV 3.6.0.02)                         S920696 0075.000
*        S920696   04/19/93  10833  CORRECT INVALID BRANCH TO   S920696 0076.000
*                  ERROR ROUTINE IF FIRST EOF ENCOUNTERED.      S920696 0077.000
*                                                                       0078.000
*        VOLMGR REV 3.6.0.01                                    EQIC360 0079.000
*        MODULES: FUPLOG (REV 3.6.0.01)                         EQIC360 0080.000
*        ENHANCEMENT: EQIC360                                   EQIC360 0081.000
*                                                               EQIC360 0082.000
*        02/12/93  10833 ADD SCSI QIC SUPPORT                   EQIC360 0083.000
*                                                                       0084.000
*********************************************************************   0085.000
*                                                                       0086.000
*    EXTERNAL REFERENCES:                                               0087.000
*                                                                       0088.000
         EXT       OPENTAP         CHECK FOR LFC "TAP" ASSIGNED, UNBLOCK0089.000
         EXT       RRS.OPT3                                             0090.000
         EXT       ADR.MASK                                             0091.000
*--                                                                     0092.000
*                                                                       0093.000
*    EXTERNAL REFERENCES:                                               0094.000
*                                                                       0095.000
         EXT       OPENTAP         CHECK FOR LFC "TAP" ASSIGNED, UNBLOCK0096.000
         EXT       FUPABRT3                                    83-0776  0097.000
         EXT       ERROR6          BUILD TEMPLATE               S850513 0098.000
         EXT       RRS.OPT3                                             0099.000
         EXT       ADR.MASK                                             0100.000
         EXT       STACKPTR                                             0101.000
         EXT       TOPOSTK         TOP OF STACK                 S920696 0102.000
         EXT       FUP.000         MAIN DISPATCHER              S920696 0103.000
         EXT       FLAGBITS        INDICATES IF LIST FILE CREATED       0104.000
         EXT       BUILDCNP                                             0105.000
         EXT       RCB.BUF                                              0106.000
         EXT       RID.FUP                                              0107.000
         EXT       CNP.BUF                                              0108.000
         EXT       RRS.ACC2        WRITE EXCLUSIVE                      0109.000
         EXT       LOGFCB          LIST FILE FCB                        0110.000
         EXT       X.ALOC6                                              0111.000
         EXT       F.LRES          FUNCTION STRING FOR LOG RESOURCE     0112.000
         EXT       AUDLOGRE        ROUTINE TO AUDIT LOG RESOURCE        0113.000
         EXT       GETRD3          GET RD VIA THE LOG SERVIVCE          0114.000
         EXT       RLB.BUF         TO HOLD AN RLB                       0115.000
         EXT       COPYSTRG                                             0116.000
         EXT       GETRD1          GET RESOURCE DESCRIPTOR BY PATHNAME  0117.000
         EXT       GETRD0          GET RESOURCE DESCRIPTOR BY RID       0118.000
         EXT       RD1.BUF         CONTAINS RD                          0119.000
         EXT       F.LVOL          FUNCTION STRING                      0120.000
         EXT       AUDLOGVO        LOGGING ROUTINE                      0121.000
*                                                                       0122.000
         EXT       COMDADDR        GLOBAL VARIABLE CONTAINING ENTRY     0123.000
*                                  POINT ADDRESS FOR COMMAND            0124.000
         EXT       SS.BRIE         SYNTAX GRAPH FOR BRIEF=BOOL          0125.000
         EXT       ADDRPTR         GLOBALLY ACCESSABLE VARIABLE         0126.000
         EXT       SS.INP          SYNTAX GRAPH FOR "PATH=" KEYWORD     0127.000
         EXT       SS.LIST         SYNTAX GRAPH FOR LISTING/BOOTFILE    0128.000
*                                  FILE PATHNAME PARSE                  0129.000
         EXT       GEN.M032        DIRECTORY IS EMPTY MESSAGE           0130.000
         EXT       FORMATOT                                             0131.000
*                                                                       0132.000
         EXT       SS.TIMOP        SYNTAX GRAPH FOR DATE/TIME OPTIONS   0133.000
         EXT       COMPTIME        CHECKS DATE/TIME CONSTRAINTS         0134.000
         EXT       A.GLOBAL        POSITION TO THE GLOBAL OPTION BLOCK  0135.000
         EXT       A.LOCAL         POSITION TO A LOCAL OPTION BLOCK     0136.000
         EXT       A.MAKEP         MAKE A PROTOTYPE ENTRY               0137.000
         EXT       INVKEY                                               0138.000
         EXT       SS.BRIE         SYNTAX GRAPH FOR BRIEF OPTION        0139.000
         EXT       SS.KWSYN        SYNTAX GRAPH TO CHECK FOR A KEYWORD  0140.000
         EXT       SS.PATNM        SYNTAX GRAPH TO PARSE A FILE PATHNAME0141.000
         EXT       PERR006         STATE ADDRESS OF ERRVAL TRANSITION   0142.000
*                                  NO PATHNAME(S) WAS SPECIFIED         0143.000
         EXT       INITTAP         ROUTINE TO INITIALISE POINTERS       0144.000
*                                  FOR READING TAPE DIRECTORY           0145.000
         EXT       NEXTTAP         POINTER INTO DIRECTORY BUFFER        0146.000
         EXT       LASTTAP         POINTER INTO DIRECTORY BUFFER        0147.000
         EXT       M.BCKF          BACK FILE                            0148.000
         EXT       M.BCKR          BACK RECORD                          0149.000
         EXT       M.FWDR          FORWARD RECORD                       0150.000
         EXT       FUN.SAVE        SAVE OF FUNCTION STRING ADDRESS      0151.000
         EXT       F.LIMA          FUNCTION STRING ADDRESS              0152.000
         EXT       F.LSAV          FUNCTION STRING ADDRESS              0153.000
         EXT       TAPFCB                                               0154.000
         EXT       AUDLOGIM        LOG IMAGE RECORD                     0155.000
         EXT       AUDIT1          AUDIT TRAIL                          0156.000
         EXT       GETPROTO                                             0157.000
         EXT       RSEQ            READ TAPE ROUTINE                    0158.000
         EXT       TAPBUFF         TO READ DIRECTORY INTO               0159.000
         EXT       AUDIT0          TO AUDIT LOG SAVEFILE                0160.000
         EXT       ERROR2          TO PRINT NO RD MESSAGE               0161.000
         EXT       ERROR3          TO PRINT LOG RESOURCE ERRORS         0162.000
         EXT       RDTR.BUF        TO READ RDTR INTO                    0163.000
         EXT       ERROR           ERROR HANDLER                        0164.000
         EXT       AUDLOGSV        LOG THE SAVEFILE LINE                0165.000
         EXT       GEN.M007        GENERAL I/O ERROR MESSAGE            0166.000
         EXT       GEN.M004        EOF/EOM ERROR MESSAGE                0167.000
         EXT       GEN.M027        LOGICAL END OF TAPE ERROR MESSAGE    0168.000
         EXT       GEN.M033        TYPE CODE ERROR (MULTI-VOL) 83-0776  0169.000
         EXT       GEN.M036        MISMATCH WITH SEOF=Y & TAPE  EQIC360 0170.000
         EXT       GEN.M037        MISMATCH WITH SEOF=N & TAPE  EQIC360 0171.000
         EXT       FUPABRT2        I/O ABORT ROUTINE                    0172.000
         EXT       DOBLOCK         DEFAULT OPTION BLOCK ADDR    EQIC360 0173.000
         SPACE                                                          0174.000
*                                                                       0175.000
*    EXTERNAL DEFINITIONS                                               0176.000
*                                                                       0177.000
         SPACE                                                          0178.000
         DEF       S.LOGIMA        STATE TABLE FOR THE COMMAND          0179.000
         DEF       C.LOGIMA        LOG IMAGE ENTRY POINT                0180.000
         DEF       C.LOGSAV        LOG SAVEFILE ENTRY POINT             0181.000
         DEF       S.LOGSAV        STATE TABLES                         0182.000
         DEF       C.LOGVOL        LOG VOLUME ENTRY POINT               0183.000
         DEF       S.LOGVOL        STATE TABLES                         0184.000
         DEF       C.LOGRES        LOG RESOURCE ENTRY POINT             0185.000
         DEF       SEOFWRN1        SEOF WARNING MESSAGE 1       EQIC360B0186.000
         DEF       SEOFWRN2        SEOF WARNING MESSAGE 2       EQIC360B0187.000
         SPACE                                                          0188.000
*                                                                       0189.000
*    SYSTEM MACRO CALLS FOR DEFINITIONS AND EQUATES                     0190.000
*                                                                       0191.000
         SPACE                                                          0192.000
         LIST      NOMAC                                                0193.000
         M.FCB.                    FCB OFFSETS                  S850513 0194.000
         M.REQS                    REGISTER EQUATES                     0195.000
         M.RLB                     RLB OFFSETS                          0196.000
         M.RCB                     RCB OFFSETS                          0197.000
         M.CNP                     CNP OFFSETS                          0198.000
         M.RDCOM   RD                                                   0199.000
         M.RDSPD   RD                                                   0200.000
         SPACE                                                          0201.000
*                                                                       0202.000
*    LOCAL DEFINITIONS                                                  0203.000
*                                                                       0204.000
         SPACE                                                          0205.000
         STINIT                    INIT TPARSE VARIABLES AND DEFINITIONS0206.000
         SPACE                                                          0207.000
*                                                                       0208.000
*    LOCAL STORAGE                                                      0209.000
*                                                                       0210.000
DI.ACTIV EQU       87W                                                  0211.000
PROTADDR RES       1W              SAVE OF PROTOTYPE ADDRESS            0212.000
ERRCOD1  GEN       8/MOD.VOM,24/8  'RESOURCE EXISTS'                    0213.000
ERRCOD2  GEN       8/MOD.VOM,24/10 'NO DIRECTORY ENTRIES'               0214.000
NORD     DATAB     C' RESOURCE DESCRIPTOR NOT VALID - A FAILURE'        0215.000
         DATAB     C' OCCURRED AT SAVE TIME',0                          0216.000
NOTATBOI DATAB     C' TAPE NOT AT BEGINNING OF IMAGE',0                 0217.000
NOTATBOF DATAB     C' TAPE NOT AT BEGINNING OF FILE',0          C055-33 0218.000
LOGRESER DATAB     C' UNABLE TO LOG RESOURCE',0                         0219.000
LISTERR  DATAB     C' UNABLE TO CREATE LIST FILE',0                     0220.000
SEOFWRN1 DATAB     C' WARNING: SEOF MODE ESTABLISHED BUT NOT'   EQIC360B0221.000
         DATAB     C' RECORDED ON TAPE',0                       EQIC360B0222.000
SEOFWRN2 DATAB     C' SEOF MODE OPERATION PRESUMED',0           EQIC360B0223.000
         SPACE     3                                                    0224.000
* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::0225.000
*        TEMPORARY EQUATE UNTIL MACRO LIBRARY UPDATE                    0226.000
*                                                                       0227.000
*!B.FND  EQU       4               RESOURCE FOUND BIT IN RLB.INT C35BL3 0228.000
*                                  RLB.FND WAS ADDED TO MACLIBR  C35BL3 0229.000
*                                                                       0230.000
* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::0231.000
         BOUND     1W                                                   0232.000
         SPACE                                                          0233.000
         TITLE     'LOG IMAGE' FUP COMMAND                              0234.000
         SPACE                                                          0235.000
         CSECT                                                          0236.000
         SPACE                                                          0237.000
*                                                                       0238.000
* ROUTINE C.LOGIMA - TOP LEVEL ENTRY FOR 'LOG IMAGE'                    0239.000
*                                                                       0240.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0241.000
*        COMMAND DISPATCHER AFTER THE 'LOG IMAGE' COMMAND               0242.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0243.000
*                                                                       0244.000
C.LOGIMA EQU       $                                                    0245.000
         PUSH                      SAVE REGISTERS                       0246.000
LOGIMA0  CEQU      $                                            EQIC360 0247.000
         LA        R7,F.LIMA       FUNCTION STRING ADDRESS              0248.000
         STW       R7,FUN.SAVE     SAVE FOR THE AUDIT TRAIL             0249.000
         ZBM       B.LIST,FLAGBITS LIST FILE NOT USED ON ENTRY          0250.000
*                                                                       0251.000
* NEED TO GET A PROTOTYPE ENTRY FOR THE LISTING OPTION                  0252.000
*                                                                       0253.000
         BL        GETPROTO                                             0254.000
         STW       R2,PROTADDR     SAVE FOR LOGGING ROUTINE CALL        0255.000
         SPACE                                                          0256.000
*  CHECK FOR LFC "TAP" ASSIGNED AND UNBLOCKED                           0257.000
         BL        OPENTAP                                              0258.000
*                                                                       0259.000
* CREATE AND OPEN THE LIST FILE IF NOT ALREADY DNE                      0260.000
*                                                                       0261.000
         BL        LISTFILE                                             0262.000
         BS        LOGIMA9         EXIT IF ERRORS                       0263.000
*                                                                       0264.000
* WE MUST MAKE SURE THAT THE TAPE IS AT THE CORRECT POSITION            0265.000
* FOR READING THE DIRECTORY RECORD(S). THE FOLLOWING RULES              0266.000
* ARE USED:                                                             0267.000
*                                                                       0268.000
*        (1) IF AT BOT THEN READ IMMEDIATELY                            0269.000
*        (2) IF AT BOI THEN READ IMMEDIATELY                            0270.000
*                                                                       0271.000
         LA        R2,TAPFCB       TAPE FCB ADDRESS                     0272.000
         LI        R4,1            SKIP ONE RECORD                      0273.000
         BL        M.BCKR          BACK RECORD                          0274.000
         BCT       2,LOGIMA8       BRANCH TO ERROR IF I/O  PROBLEM      0275.000
         BCT       3,LOGIMA2       BRANCH IF AT BOT                     0276.000
         BCF       1,LOGIMA3       BRANCH TO ERROR IF NOT EOF           0277.000
         LA        R3,DOBLOCK      GET DEFAULT OPT BLOCK ADDR   EQIC360 0278.000
         TBM       OPT.B.SE,OPT.FLGS,X3 SOFT EOF?               EQIC360 0279.000
         BS        LOGIMA4         IF SO, BRANCH AROUND BACKSP  EQIC360 0280.000
         BL        M.BCKR          BACK A SECOND RECORD                 0281.000
         BCT       2,LOGIMA8       BRANCH TO ERROR IF I/O PROBLEM       0282.000
         BCF       1,LOGIMA3       BRANCH TO ERROR IF NOT EOF           0283.000
*                                                                       0284.000
* BOI HAS BEEN DETECTED BY STEPPING BACK OVER TWO CONSECUTIVE           0285.000
* EOF MARKS, SO WE MUST STEP FORWARD AGAIN.                             0286.000
*                                                                       0287.000
LOGIMA4  LI        R4,1            SKIP ONE RECORD AT A TIME            0288.000
         BL        M.FWDR          FORWARD                              0289.000
         BCT       2,LOGIMA8       BRANCH TO ERROR IF I/O PROBLEM       0290.000
         TBM       OPT.B.SE,OPT.FLGS,X3 SOFT EOF?               EQIC360 0291.000
         BS        LOGIMA2         IF SO, BRANCH AROUND 2ND FWD EQIC360 0292.000
         BL        M.FWDR          FORWARD                              0293.000
         BCT       2,LOGIMA8       BRANCH TO ERROR IF I/O PROBLEM       0294.000
*                                                                       0295.000
* NOW WE ARE AT BOI, WHICHEVER ROUTE WE CAME BY.                        0296.000
* WE MUST READ THE FIRST DIRECTORY BUFFER INTO CORE AND GET             0297.000
* THE COUNT OF DIRECTORY ENTRIES (IN THE FIRST DOUBLE WORD)             0298.000
* INTO 'DIRCOUNT'.                                                      0299.000
* THE SAME VARIABLES THAT WERE USED TO WRITE THE DIRECTORY BUFFER       0300.000
* AWAY IN THE FIRST PLACE (BY THE SAVE COMMAND) ARE USED HERE           0301.000
* FOR READABILITY AND CONSISTENCY.                                      0302.000
*                                                                       0303.000
LOGIMA2  LI        R7,DIRENTSZ     SIZE OF TAPBUFF ENTRY                0304.000
         BL        INITTAP         INITIALISE BUFFER POINTERS           0305.000
         READS     ,TAPBUFF,IOBUFFSZ    READ FIRST DIRECTORY BLOCK      0306.000
*                                       R2 IS SET UP ALREADY (FCB ADD)  0307.000
         BCT       1,LOGIMA10      BRANCH TO ERROR IF EOF               0308.000
         BCT       2,LOGIMA8       BRANCH TO ERROR IF I/O PROBLEM       0309.000
         LA        R3,TAPBUFF      ADDRESS OF DIRECTORY RECORD          0310.000
         LW        R5,0,X3         LOAD TYPE CODE              83-0776  0311.000
         LA        R2,DOBLOCK      GET DEFAULT OPT BLOCK ADDR   EQIC360 0312.000
         ZBR       R5,IDIRSEOF     SAVED UNDER SEOF TAPE MGMT?  EQIC360 0313.000
         BNS       LOGIMA45        NO - CONTINUE                EQIC360 0314.000
         SBM       OPT.B.SE,OPT.FLGS,X2 SET SOFT EOF            EQIC360 0315.000
*        BS        LOGIMA47        ALREADY SET - EOF MO EQIC360 EQIC360B0316.000
*        LA        R7,GEN.M036     MISMATCH SEOF, TAPE  EQIC360 EQIC360B0317.000
*        BL        ERROR2          ISSUE WARNING        EQIC360 EQIC360B0318.000
         BU        LOGIMA47        CONTINUE PROCESSING          EQIC360 0319.000
LOGIMA45 CEQU      $               TAPE NOT SAVED UNDER SEOF    EQIC360 0320.000
         TBM       OPT.B.SE,OPT.FLGS,X2 SEOF SET?               EQIC360 0321.000
         BNS       LOGIMA47        NOT SET - EOF MODE OK        EQIC360 0322.000
*        LA        R7,GEN.M037     MISMATCH SEOF, TAPE  EQIC360 EQIC360B0323.000
         LA        R7,SEOFWRN1     MISMATCH SEOF, TAPE FLAG     EQIC360B0324.000
         BL        ERROR2          ISSUE WARNING AND CONTINUE   EQIC360 0325.000
         LA        R7,SEOFWRN2     MISMATCH SEOF, TAPE FLAG     EQIC360B0326.000
         BL        ERROR2          ISSUE WARNING AND CONTINUE   EQIC360B0327.000
LOGIMA47 CEQU      $                                            EQIC360 0328.000
         LA        R2,TAPFCB       TAPE FCB ADDRESS             EQIC360A0329.000
         CI        R5,1            IMAGE DIRECTORY FILE TYPE=1 83-0776  0330.000
         BNE       LOGIMA1         IF NOT, ERROR               83-0776  0331.000
         LNW       R5,REC.DCNT,R3  NEGATIVE COUNT FOR LOOP CONTROL      0332.000
         LW        R3,NEXTTAP      POINTER TO START OF TAPBUFF          0333.000
         ABR       R3,28           SKIP DOUBLE WORD COUNT ON FRONT      0334.000
*                                                                       0335.000
* START THE LOOP OF ALL DIRECTORY ENTRIES LOGGING THE NAMES             0336.000
*                                                                       0337.000
LOGIMA5  CAMW      R3,LASTTAP      ANY MORE IN CURRENT BUFFER??         0338.000
         BLE       LOGIMA6         BRANCH IF MORE                       0339.000
         READS     ,,IOBUFFSZ      R2/R6 ARE ALREADY SET UP             0340.000
         BCT       1,LOGIMA10      BRANCH TO ERROR IF EOF               0341.000
         BCT       2,LOGIMA8       BRANCH TO ERROR IF I/O PROBLEM       0342.000
         LI        R7,DIRENTSZ     SIZE OF TAPBUFF ENTRY                0343.000
         BL        INITTAP         REINITIALISE BUFFER POINTERS         0344.000
         LW        R3,NEXTTAP      START OF BUFFER ADDRESS              0345.000
*                                                                       0346.000
LOGIMA6  LW        R7,PROTADDR     ADDRESS OF PROTOTYPE (FOR LIST OPT)  0347.000
         BL        AUDLOGIM        LOG THE RESOURCE NAME                0348.000
         TBM       NOLIST.F,FLAGBITS IF SET USER ENDED AUDIT TRAIL  V.260349.000
         BS        LOGIMA7         PREMATURELY - BACK FILE & RETURN V.260350.000
         ADI       R3,DIRENTSZ    POINT TO NEXT DIRECTORY ENTRY         0351.000
         BIB       R5,LOGIMA5      MOVE TO NEXT DIRECTORY ENTRY         0352.000
*                                                                       0353.000
* FINALLY STEP BACK OVER THE IMAGE TO THE POINT OF START                0354.000
*                                                                       0355.000
LOGIMA7  LA        R2,TAPFCB       TAPE FCB ADDRESS                 V.260356.000
         LI        R4,1            SKIP ONE AT A TIME                   0357.000
         BL        M.BCKF                                               0358.000
         BCT       3,LOGIMA9       BRANCH TO EXIT IF BOT                0359.000
         BCT       2,LOGIMA8       BRANCH TO ERROR IF I/O PROBLEM       0360.000
         BL        M.FWDR                                               0361.000
         BCT       2,LOGIMA8       BRANCH TO ERROR IF I/O PROBLEM       0362.000
LOGIMA9  BL        LISTCLOS        CLOSE LIST FILE                      0363.000
         POP                       RESTORE REGISTERS                    0364.000
         TRSW      R0                                                   0365.000
*                                                                       0366.000
* AT LOGICAL END OF TAPE ERROR                                          0367.000
*                                                                       0368.000
LOGIMA10 EQU       $                                                    0369.000
         BL        M.BCKR          BACKSPACE ONE RECORD (FOR SKIP I)    0370.000
         BCT       2,LOGIMA8       BRANCH TO ERROR IF I/O PROBLEM       0371.000
         LA        R7,GEN.M027     'LOGICAL END OF TAPE' MESSAGE        0372.000
         BL        ERROR2          PRINT ERROR                          0373.000
         LA        R6,GEN.M004     'EOF/EOM' MESSAGE                    0374.000
         SBM       EOT.F,FLAGBITS  FLAG FOR END OF TAPE         CP11905 0375.000
*        BNS       LOGIMA9         IF 1ST TIME SET, NO  CP11905 S920696 0376.000
         BNS       LOGIMA95        IF 1ST TIME SET, NO ERROR    S920696 0377.000
         BL        FUPABRT2        PRINT ABORT MESSAGE                  0378.000
*                                                               S920696 0379.000
* WE DO NOT NEED TO ABORT, SO GO GET NEXT COMMAND               S920696 0380.000
*                                                               S920696 0381.000
LOGIMA95 CEQU      $                                            S920696 0382.000
         LA        R1,TOPOSTK      RESTORE STACK POINTER        S920696 0383.000
         BU        FUP.000         RETURN TO COMMAND PROCESSING S920696 0384.000
*                                                                       0385.000
* I/O ERROR REPORTED ON TAPE MOVEMENT, ABORT                            0386.000
*                                                                       0387.000
LOGIMA8  EQU       $                                            S850513 0388.000
         LB        R4,FCB.SFLG,R2  GET STATUS                   S850513 0389.000
         CI        R4,X'44'        IS IT A TAPE ID OR NUM ERR?  S850513 0390.000
         BNE       LOGIMA81        IF NOT, REAL I/O ERROR       S850513 0391.000
         LW        R2,FCB.FATA,R2  GET FAT ADDR                 S850513 0392.000
         BL        ERROR6          PRINT MESSAGE                S850513 0393.000
         BU        LOGIMA7         ABORT                        S850513 0394.000
LOGIMA81 LA        R6,GEN.M007     I/O ERROR MESSAGE            S850513 0395.000
         BL        FUPABRT2        AND ABORT                            0396.000
*                                                                       0397.000
* TAPE NOT POSITIONED CORRECTLY, ERROR AND RETURN TO CALLER             0398.000
*                                                                       0399.000
LOGIMA3  LA        R7,NOTATBOI                                          0400.000
         BL        ERROR2                                               0401.000
         BU        LOGIMA9         EXIT                                 0402.000
LOGIMA1  EQU       $               TYPE CODE ERROR             83-0776  0403.000
         LA        R7,GEN.M033     ERROR MSG                   83-0776  0404.000
         BL        FUPABRT3        PRINT OUT                   83-0776  0405.000
         TITLE     'LOG SAVEFILE' FUP COMMAND                           0406.000
*                                                                       0407.000
* ROUTINE C.LOGSAV - TOP LEVEL ENTRY FOR 'LOG SAVEFILE'                 0408.000
*                                                                       0409.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0410.000
*        COMMAND DISPATCHER AFTER THE 'LOG SAVEFILE' COMMAND            0411.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0412.000
*                                                                       0413.000
C.LOGSAV EQU       $                                                    0414.000
         PUSH                      SAVE REGISTERS                       0415.000
         LA        R7,F.LSAV       FUNCTION STRING ADDRESS              0416.000
         STW       R7,FUN.SAVE     SAVE FOR THE AUDIT TRAIL             0417.000
         ZBM       B.LIST,FLAGBITS LIST FILE NOT USED ON ENTRY          0418.000
*                                                                       0419.000
* GET THE PROTOTYPE ENTRY FOR THE OPTIONS ONLY                          0420.000
*                                                                       0421.000
         BL        GETPROTO                                             0422.000
         STW       R2,PROTADDR                                          0423.000
         SPACE                                                          0424.000
*  CHECK FOR LFC "TAP" ASSIGNED AND UNBLOCKED                           0425.000
         BL        OPENTAP                                              0426.000
*                                                                       0427.000
* CREATE AND OPEN THE LIST FILE IF NOT ALREADY DNE                      0428.000
*                                                                       0429.000
         BL        LISTFILE                                             0430.000
         BS        LOGSAV4         EXIT IF ERRORS                       0431.000
*                                                                       0432.000
         LA        R2,TAPFCB       TAPE FCB ADDRESS                     0433.000
*                                                                       0434.000
* READ THE CURRENT RECORD ON TAPE AND ASSUME IT IS AN RDTR..            0435.000
* THE FIRST WORD OF THE RECORD READ WILL INDICATE IF THE RD             0436.000
* WAS SUCCESSFULLY WRITTEN ONTO THE TAPE AT SAVE TIME.                  0437.000
* IF IT WAS NOT WRITTEN PROPERLY TELL THE USER AND EXIT.                0438.000
* IF ALL IS O.K. CALL ROUTINE AUDIT0 TO PRINT OUT INFORMATION           0439.000
* FROM THE RD (WHICH IS NOW IN RD1.BUF).                                0440.000
*                                                                       0441.000
LOGSAV1  READS     ,RDTR.BUF,RDTR.SIZ    LFC ADDRESS IS IN R2 ALREADY   0442.000
         BCT       1,LOGIMA10      BRANCH TO ERROR IF EOF               0443.000
         BCT       2,LOGIMA8       BRANCH TO ERROR IF I/O PROBLEM       0444.000
         LA        R3,RDTR.BUF     ADDRESS OF RDTR RECORD               0445.000
         TBM       B.RDTRRD,REC.PERR,R3 PHASE ERROR??                   0446.000
         BS        LOGSAV2         BRANCH IF AN ERROR                   0447.000
         LW        R2,REC.TYPE,R3  GET RDTR TYPE (SHOULD BE 2)  C055-33 0448.000
         CI        R2,2            IS IT TYPE=2?                C055-33 0449.000
         BNE       LOGSAV5         IF NOT, NOT IN THE POSITION  C055-33 0450.000
*                                                                       0451.000
* ALL SEEMS O.K. SO CALL THE ROUTINE AUDLOGSV TO PRINT                  0452.000
* A FULL LOG LIKE THE 'CREATE' TYPE FUNCTIONS.                          0453.000
* IT REQUIRES R2 TO CONTAIN THE ADDRESS OF THE PROTOTYPE                0454.000
* ENTRY, RD1.BUF TO CONTAIN THE RD, AND FUN.SAVE TO                     0455.000
* CONTAIN THE FUNCTION ADDRESS.                                         0456.000
*                                                                       0457.000
* FIRST COPY THE FIL/DIR/VOL FROM THE TAPE RDTR TO THE PROTOTYPE        0458.000
* ENTRY AS THE RDTR IS THE ONLY PLACE WE HAVE THIS PATHNAME.            0459.000
*                                                                       0460.000
         LA        R2,REC.PATH,R3  ADDRESS OF FIL/DIR/VOL               0461.000
         LW        R3,PROTADDR     PROTOTYPE ENTRY ADDRESS              0462.000
         LI        R4,12W                                               0463.000
         BL        COPYSTRG        DO THE COPY                          0464.000
*                                                                       0465.000
         LW        R2,PROTADDR     PROTOTYPE ENTRY ADDRESS              0466.000
         BL        AUDLOGSV        LOG THE LINE                         0467.000
*                                                                       0468.000
* FINALLY MOVE THE TAPE BACK OVER THE RDTR RECORD                       0469.000
*                                                                       0470.000
LOGSAV3  LI        R4,1                                                 0471.000
         LA        R2,TAPFCB                                            0472.000
         BL        M.BCKR                                               0473.000
         BCT       2,LOGIMA8       BRANCH TO ERROR IF I/O PROBLEM       0474.000
LOGSAV4  BL        LISTCLOS        CLOSE LIST FILE                      0475.000
         POP                       RESTORE REGISTERS                    0476.000
         TRSW      R0                                                   0477.000
*                                                                       0478.000
* THE RD WAS NOT WRITTEN TO THE TAPE PROPERLY AT SAVE TIME              0479.000
* SO TELL THE USER AND EXIT                                             0480.000
*                                                                       0481.000
LOGSAV2  LA        R7,NORD                                              0482.000
         BL        ERROR2          PRINT THE MESSAGE                    0483.000
         BU        LOGSAV3         EXIT                                 0484.000
* THE TAPE IS NOT POSITIONED AT THE START OF THE FILE           C055-33 0485.000
LOGSAV5  EQU       $                                            C055-33 0486.000
         LA        R7,NOTATBOF     LOAD ERROR MSG               C055-33 0487.000
         BL        ERROR2          PRINT                        C055-33 0488.000
         BU        LOGSAV3         RETURN                       C055-33 0489.000
         TITLE     'LOG RESOURCE' FUP COMMAND                           0490.000
*                                                                       0491.000
* ROUTINE C.LOGRES - TOP LEVEL ENTRY POINT FOR 'LOG RESOURCE'           0492.000
*                                                                       0493.000
*        THIS RESOURCE IS ENTERED BY THE FILE UTILITY MAIN              0494.000
*        COMMAND DISPATCHER AFTER THE 'LOG RESOURCE' COMMAND            0495.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0496.000
*                                                                       0497.000
C.LOGRES PUSH                      SAVE REGISTERS                       0498.000
         LA        R7,F.LRES                                            0499.000
         STW       R7,FUN.SAVE     FUNCTION STRING ADDRESS              0500.000
         ZBM       B.LIST,FLAGBITS LIST FILE NOT USED ON ENTRY          0501.000
         ZBM       B.NOACT,FLAGBITS NOT USED ON ENTRY                   0502.000
*                                                                       0503.000
* GET THE NEXT PROTOTYPE ENTRY                                          0504.000
*                                                                       0505.000
LGRES2   BL        GETPROTO                                             0506.000
         BCT       1,LGRES0        BRANCH IF NO MORE                    0507.000
*                                                                       0508.000
* CREATE AND OPEN THE LIST FILE IF NOT ALREADY DNE                      0509.000
*                                                                       0510.000
         BL        LISTFILE                                             0511.000
         BS        LGRES0          EXIT IF ERRORS                       0512.000
*                                                                       0513.000
* THERE ARE MORE LOGS TO DO SO SET UP THE RLB FOR THE LOG               0514.000
* RESOURCE SERVICE.                                                     0515.000
*                                                                       0516.000
         STW       R2,PROTADDR     SAVE PROTOTYPE ADDRESS               0517.000
         ZR        R6                                                   0518.000
         ZR        R7                                                   0519.000
         LA        R3,RLB.BUF      CLEAR DOWN THE .....                 0520.000
         STD       R6,0D,R3        .....                                0521.000
         STD       R6,1D,R3        .....                                0522.000
         STD       R6,2D,R3        .....                                0523.000
         STD       R6,3D,R3        ..... RLB INITIALLY                  0524.000
*  ADD A TEST TO SEE IF WANTS TO LOG ROOT DIRECTORY ONLY        S860445 0525.000
         LW        R2,PROFOA.O,R2  GET OPTION BLOCK ADDR        S860445 0526.000
         TBM       OPT.B.LS,OPT.FLGS,R2  LOAD SINGLE DIR?       S860445 0527.000
         BNS       LGRES2.1        IF NOT SET, RESTORE R2       S860445 0528.000
         SBM       RLB.LS,RLB.INT,R3  ELSE SET RLB.LS           S860445 0529.000
LGRES2.1 LW        R2,PROTADDR     RESTORE R2 VALUE             S860445 0530.000
*                                                                       0531.000
         LA        R7,RD1.BUF      ADDRESS OF RD BUFFER                 0532.000
         STW       R7,RLB.BUFA,R3  INTO RLB                             0533.000
*                                                                       0534.000
         LW        R7,PROFR2.O,R2  PN DESCRIPTOR                        0535.000
         STW       R7,RLB.TGT,R3   INTO RLB                             0536.000
*                                                                       0537.000
         LI        R7,4            DIRECTORY ENTRY .....                0538.000
         SLL       R7,24           .....                                0539.000
         ORR       R2,R7           .....                                0540.000
         STW       R7,RLB.DIRA,R3  ..... DESCR. TO RLB                  0541.000
*                                                                       0542.000
* NOW CALL GETRD3 TO ISSUE THE LOG SERVICE                              0543.000
*                                                                       0544.000
LGRES3   BL        GETRD3                                               0545.000
         BCT       1,LGRES1        BRANCH IF ERRORS                     0546.000
*                                                                       0547.000
* NOW CALL THE AUDIT ROUTINE TO PRINT THE INFO JUST GOTTEN.             0548.000
* THE PROTOTYPE ENTRY MUST HAVE THE 'FROM' PATHNAME SET UP              0549.000
* FOR THIS, SO EXTRACT THE VOL/FIL FROM THE RD, THE DIR HAS             0550.000
* BEEN PLACED DIRECTLY INTO THE PROTOTYPE ENTRY BY THE LOG SERVICE.     0551.000
*                                                                       0552.000
         LA        R3,RD1.BUF      RD BUFFER ADDRESS                    0553.000
         LD        R6,RD.IDNAM,R3  VOLUME NAME .....                    0554.000
         STD       R6,PROFVN.O,R2  .....                                0555.000
         LD        R6,RD.IDNAM+1D,R3    .....                           0556.000
         STD       R6,PROFVN.O+1D,R2    ..... TO PROTOTYPE              0557.000
*                                                                       0558.000
         LD        R6,RD.DNAME,R3  DIRECTORY NAME .....                 0559.000
         STD       R6,PROFDN.O,R2       .....                           0560.000
         LD        R6,RD.DNAME+1D,R3    .....                           0561.000
         STD       R6,PROFDN.O+1D,R2    ..... TO PROTOTYPE              0562.000
*                                                                       0563.000
         LD        R6,RD.DIRP,R3   RESOURCE NAME .....                  0564.000
         STD       R6,PROFFN.O,R2       .....                           0565.000
         LD        R6,RD.DIRP+1D,R3     .....                           0566.000
         STD       R6,PROFFN.O+1D,R2    ..... TO PROTOTYPE              0567.000
*                                                                       0568.000
* SEE IF THE TIME CONSTRAINTS ARE APPLICABLE                            0569.000
* THE ROUTINE COMPTIME TAKES AS INPUT THE OPTION BLOCK                  0570.000
* ADDRESS(IN R3) AND ASSUMES THE RD IS IN RD1.BUF                       0571.000
* IT RETURNS CC1=0 IF RESOURCE NOT TO BE LOGGED                         0572.000
* ELSE CC1=1 IF RESOURCE IS ELIGIBLE FOR LOG                            0573.000
*                                                                       0574.000
         LW        R3,PROFOA.O,R2  OPTION BLOCK ADDRESS                 0575.000
         BL        COMPTIME        CHECK FOR ELIGIBILITY                0576.000
         BCF       1,LGRES4        NO, BRANCH OVER AUDIT ROUTINE        0577.000
*                                                                       0578.000
         LA        R3,RLB.BUF      RLB BUFFER                           0579.000
         TBM       RLB.FND,RLB.INT,R3   RESOURCE FOUND ?                0580.000
         BS        LGRES5          CALL AUDIT ROUTINE IF FOUND V.25     0581.000
         ZBM       B.NOACT,FLAGBITS INDICATE NO AUDIT PERFORMED V.25    0582.000
         BS        LGRES6          BRANCH IF ALREADY SET - ELSE V.25    0583.000
         LA        R2,GEN.M032     DIR. MUST BE EMPTY           V.25    0584.000
         BL        FORMATOT        OUTPUT EMPTY DIR MESSAGE     V.25    0585.000
LGRES6   BU        LGRES2                                               0586.000
*!**     BNS       LGRES2          NO, BRANCH FOR NEXT PROTOTYPE (IF    0587.000
*                                  FOUND BIT CLEAR THEN RECALL BIT      0588.000
*                                  MUST ALSO BE CLEAR).                 0589.000
*                                                                       0590.000
LGRES5   SBM       B.NOACT,FLAGBITS INDICATE AUDIT ROUTINE CALLED V.25  0591.000
         BL        AUDLOGRE        CALL AUDIT ROUTINE                   0592.000
*                                                                       0593.000
* SEE IF THERE IS ANY MORE TO LOG                                       0594.000
*                                                                       0595.000
LGRES4   LA        R3,RLB.BUF      RLB BUFFER                           0596.000
         TBM       RLB.RECA,RLB.TYPE,R3   RECALL BIT SET ??             0597.000
         BS        LGRES3          LOOP FOR MORE IF SO                  0598.000
         BU        LGRES2          ELSE LOOP FOR NEXT PROTOTYPE         0599.000
*                                                                       0600.000
* ERRORS HAVE BEEN DETECTED DURING THE LOG SERVICE                      0601.000
*                                                                       0602.000
LGRES1   LA        R6,LOGRESER     ERROR MESSAGE                        0603.000
         BL        ERROR3          LOG THE ERROR                        0604.000
*                                                                       0605.000
* SEE IF THERE IS ANY MORE TO LOG                                       0606.000
*                                                                       0607.000
         LA        R3,RLB.BUF      RLB BUFFER                           0608.000
         TBM       RLB.RECA,RLB.TYPE,R3   RECALL BIT SET ??             0609.000
         BS        LGRES3          LOOP FOR MORE IF SO                  0610.000
         BU        LGRES2          LOOP FOR NEXT PROTOTYPE              0611.000
*                                                                       0612.000
* ALL DONE, SO EXIT                                                     0613.000
*                                                                       0614.000
LGRES0   BL        LISTCLOS        CLOSE LIST FILE                      0615.000
         POP                       RESTORE REGISTERS                    0616.000
         TRSW      R0              AND EXIT                             0617.000
         TITLE     'LOG VOLUME' FUP COMMAND                             0618.000
*                                                                       0619.000
* ROUTINE C.LOGVOL - TOP LEVEL ENTRY FOR 'LOG FILE'.                    0620.000
*                                                                       0621.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0622.000
*        COMMAND DISPATCHER AFTER THE 'LOG FILE' COMMAND                0623.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0624.000
*                                                                       0625.000
C.LOGVOL EQU       $                                                    0626.000
         PUSH                      SAVE REGISTERS                       0627.000
         LA        R7,F.LVOL                                            0628.000
         STW       R7,FUN.SAVE     FUNCTION STRING ADDRESS              0629.000
         ZBM       B.LIST,FLAGBITS LIST FILE NOT USED ON ENTRY          0630.000
*                                                                       0631.000
* GET THE NEXT PROTOTYPE/OPTION BLOCK PAIR                              0632.000
* CC1 WILL BE ZERO IF THERE ARE MORE BLOCKS, ELSE 1                     0633.000
*                                                                       0634.000
LGVOL2   BL        GETPROTO                                             0635.000
         BCT       1,LGVOL0        BRANCH IF NO MORE BLOCKS             0636.000
*                                                                       0637.000
* CREATE AND OPEN THE LIST FILE IF NOT ALREADY DNE                      0638.000
*                                                                       0639.000
         BL        LISTFILE                                             0640.000
         BS        LGVOL0          EXIT IF ERRORS                       0641.000
*                                                                       0642.000
* THERE IS ANOTHER BLOCK TO CONSIDER                                    0643.000
* GET THE RESOURCE DESCRIPTOR FOR THE RESOURCE AND THEN                 0644.000
* PRINT A BRIEF OR FULL LOG DEPENDING ON THE FLAG                       0645.000
* 'OPT.B.BR' IN THE OPTION BLOCK                                        0646.000
*                                                                       0647.000
*  GET RESOURCE DESCRIPTOR VIA RID IF RID IS PRESENT IN THE             0648.000
*  PROTOTYPE ENTRY, OTHERWISE, GET RESOURCE DESCRIPTOR VIA PATHNAME.    0649.000
*  R2 CONTAINS PROTOTYPE ADDRESS                                        0650.000
*                                                                       0651.000
         LW        R6,PROFRD.O,X2  IS RID PRESENT IN PROTOTYPE ENTRY ???0652.000
         BNZ       LGVOL2.1        GO FOR RID PRESENT                   0653.000
         LA        R7,RD1.BUF      TO HOLD THE RD                       0654.000
         BL        GETRD1          GET RD BY PATHNAME                   0655.000
         BS        LGVOL1          BRANCH IF ERRORS                     0656.000
         BU        LGVOL2.3        JOIN COMMON CODE                     0657.000
         SPACE     2                                                    0658.000
LGVOL2.1 EQU       $                                                    0659.000
         LA        R7,RD1.BUF      TO HOLD THE RESOURCE DESCRIPTOR      0660.000
         LA        R2,PROFVN.O,X2  RID ADDRESS WITHIN PROTOTYPE         0661.000
         BL        GETRD0          GET RESOURCE DESCRIPTOR BY RID       0662.000
         SUI       R2,PROFVN.O     PROTOTYPE ADDRESS                    0663.000
         TBR       R0,CC1          ANY ERROR(S) ???                     0664.000
*        BS        LGVOL1          GO FOR ERROR(S)              S890993 0665.000
         BNS       LGVOL2.3        NO, CONTINUE                 S890993 0666.000
*                                                               S890993 0667.000
* THERE HAS BEEN AN ERROR DURING THE M.LOC. CHECK TO SEE WHETHERS890993 0668.000
* THE FILE WAS DELETED AFTER THE RIDS WERE COLLECTED...IF SO    S890993 0669.000
* SKIP LOGGING THE FILE AND REPORTING ERROR                     S890993 0670.000
*                                                               S890993 0671.000
         LA        R3,CNP.BUF      GET CNP ADDRESS              S890993 0672.000
         LH        R3,CP.STAT,X3   GET STATUS                   S890993 0673.000
         CI        R3,42           VM42?                        S890993 0674.000
         BNE       LGVOL1          NO, GO FOR ERROR             S890993 0675.000
         LA        R3,RD1.BUF      GET RD ADDRESS               S890993 0676.000
         LW        R4,RD.DATE,X3   GET CREATION DATE            S890993 0677.000
         BNZ       LGVOL1          DATE IS NON ZERO GIVE VM42   S890993 0678.000
         LW        R4,RD.DOFF,X3   GET BLOCK ADDRESS            S890993 0679.000
         BNZ       LGVOL1          BLOCK ADDRESS IS NON ZERO    S890993 0680.000
         LH        R4,RD.RTYPE,X3  GET RESOURCE TYPE            S890993 0681.000
         BNZ       LGVOL1          RESOURCE TYPE IS NON ZERO    S890993 0682.000
         BU        LGVOL2          SKIP THIS LOGGING FILE       S890993 0683.000
         SPACE                                                          0684.000
LGVOL2.3 EQU       $                                                    0685.000
*                                                                       0686.000
* SEE IF THE TIME CONSTRAINTS ARE APPLICABLE                            0687.000
* THE ROUTINE COMPTIME TAKES AS INPUT THE OPTION BLOCK                  0688.000
* ADDRESS(IN R3) AND ASSUMES THE RD IS IN RD1.BUF                       0689.000
* IT RETURNS CC1=0 IF FILE NOT TO BE LOGGED                             0690.000
* ELSE CC1=1 IF FILE IS ELIGIBLE FOR LOG                                0691.000
*                                                                       0692.000
         LW        R3,PROFOA.O,R2  OPTION BLOCK ADDRESS                 0693.000
         BL        COMPTIME        CHECK FOR ELIGIBILITY                0694.000
         BCF       1,LGVOL2        NO, LOOP FOR NEXT PROTOTYPE          0695.000
*                                                                       0696.000
* CALL THE ROUTINE AUDLOGVO TO PRINT EITHER A FULL OR BRIEF             0697.000
* LOG TO EITHER THE AUDIT STREAM OR A LISTING FILE.                     0698.000
* IT EXPECTS R2 TO CONTAIN THE PROTOTYPE ENTRY ADDRESS                  0699.000
*                                                                       0700.000
         BL        AUDLOGVO                                             0701.000
         BU        LGVOL2          LOOP FOR NEXT PROTOTYPE              0702.000
*                                                                       0703.000
* ERRORS WERE DETECTED DURING THE LOG VLOUME FUNCTION                   0704.000
* THE ERROR CODE IS IN R7                                               0705.000
* CALL AN ERROR ROUTINE WHICH USES THE PROTOTYPE                        0706.000
* BLOCK (ADDRESS IS IN R2) AND THE ERROR NUMBER FROM                    0707.000
* H.VOMM (IN R7).                                                       0708.000
*                                                                       0709.000
LGVOL1   BL        ERROR                                                0710.000
         BU        LGVOL2          LOOP FOR NEXT                        0711.000
*                                                                       0712.000
* THERE ARE NO MORE PROTOTYPE BLOCKS SO THE HANDLING OF THIS            0713.000
* COMMAND HAS FINISHED.                                                 0714.000
*                                                                       0715.000
LGVOL0   BL        LISTCLOS        CLOSE LIST FILE                      0716.000
         POP                       RESTORE REGISTERS                    0717.000
         TRSW      R0                                                   0718.000
         TITLE     CREATE LIST FILE                                     0719.000
*                                                                       0720.000
* THIS IS AN INTERNAL ROUTINE TO CREATE AND OPEN THE LIST FILE.         0721.000
*                                                                       0722.000
* INPUTS:                                                               0723.000
*        R2 = PROTOTYPE ADDRESS                                         0724.000
*                                                                       0725.000
* OUTPUTS:                                                              0726.000
*        CC1 SET IF ERRORS                                              0727.000
*                                                                       0728.000
LISTFILE ANMW      R0,ADR.MASK     ASSUME NO ERRORS                     0729.000
         PUSH                                                           0730.000
*                                                                       0731.000
         LW        R3,PROFOA.O,R2  OPTION BLOCK ADDRESS                 0732.000
         LW        R5,OPT.LIST,R3  LIST FILE DESCRIPTOR                 0733.000
         BZ        LIST4           EXIT IF NO LIST OPTION               0734.000
*                                                                       0735.000
* SET THE LIST FILE PROCESSED BIT SO THAT THE LIST FILE, IF USED,       0736.000
* ONLY GETS OPENED ONCE                                                 0737.000
*                                                                       0738.000
         SBM       B.LIST,FLAGBITS                                      0739.000
         BS        LIST4           EXIT IF ALREADY PROCESSED            0740.000
*                                                                       0741.000
LIST3    ZR        R7              CREATE NOWAIT .....                  0742.000
         BL        BUILDCNP        ..... CNP                            0743.000
*                                                                       0744.000
* CLEAR THE RCB BLOCK EXCEPT FOR THE RID ADDRESS                        0745.000
*                                                                       0746.000
         LI        R7,-16W                                              0747.000
         LA        R3,RCB.BUF                                           0748.000
LIST5    ZMW       0W,R3                                                0749.000
         ADI       R3,1W                                                0750.000
         BIW       R7,LIST5                                             0751.000
*                                                                       0752.000
         LA        R7,RID.FUP                                           0753.000
         LA        R3,RCB.BUF                                           0754.000
         STW       R7,RCB.FAST,R3                                       0755.000
*                                                                       0756.000
* NOW ATTEMPT THE FILE CREATE                                           0757.000
*                                                                       0758.000
         LW        R3,PROFOA.O,R2  OPTION BLOCK ADDRESS                 0759.000
         PUSHSTP                                                        0760.000
         TRR       R5,R1           LIST FILE DESCRIPTOR                 0761.000
         LA        R2,RCB.BUF                                           0762.000
         LA        R7,CNP.BUF                                           0763.000
         SVC2.20                   H.VOMM,1                             0764.000
         POPSTP                                                         0765.000
         CHECKERR  MOD.VOM,NORTN                                        0766.000
         BZ        LIST1           BRANCH IF ALL O.K.                   0767.000
*                                                                       0768.000
* SEE IF ERROR CODE WAS 'FILE ALREADY EXISTS'                           0769.000
*                                                                       0770.000
         CAMW      R7,ERRCOD1                                           0771.000
         BEQ       LIST6           ERROR IF NOT 'FILE EXISTS'           0772.000
         CAMW      R7,ERRCOD2                                           0773.000
         BNE       LIST2           IF DIRECTORY ISIFULL, ATTEMPT TO DEL.0774.000
*                                                                       0775.000
* ATTEMPT TO DELETE THE FILE AND THEN RECREATE IT                       0776.000
*                                                                       0777.000
LIST6    EQU       $                                                    0778.000
         ZR        R7                                                   0779.000
         BL        BUILDCNP                                             0780.000
         PUSHSTP                                                        0781.000
         TRR       R5,R1           LIST FILE DESCRIPTOR                 0782.000
         LA        R7,CNP.BUF                                           0783.000
         SVC2.24                   H.VOMM,5                             0784.000
         POPSTP                                                         0785.000
         CHECKERR  MOD.VOM,NORTN                                        0786.000
         BZ        LIST3           LOOP TO RECREATE IF DELETED          0787.000
*                                                                       0788.000
* UNABLE TO GET THE LIST FILE SO ERROR AND EXIT                         0789.000
*                                                                       0790.000
LIST2    LA        R6,LISTERR                                           0791.000
         BL        ERROR3                                               0792.000
         SBM       CC1,0W,R1                                            0793.000
LIST4    POP                                                            0794.000
         TRSW      R0                                                   0795.000
*                                                                       0796.000
* FILE CREATED, SO ASSIGN AND OPEN IT                                   0797.000
*                                                                       0798.000
LIST1    LA        R2,RID.FUP                                           0799.000
         LW        R6,RRS.ACC2                                          0800.000
         LW        R4,RRS.OPT3     AUTO OPEN, BLOCKED                   0801.000
         LA        R7,LOGFCB                                            0802.000
         BL        X.ALOC6                                              0803.000
         BS        LIST2           BRANCH IF ERRORS                     0804.000
         BU        LIST4           ELSE EXIT                            0805.000
         TITLE     CLOSE LIST FILE                                      0806.000
*                                                                       0807.000
* THIS ROUTINE CLOSES THE LISTING FILE, IF IT WAS USED                  0808.000
*                                                                       0809.000
* INPUTS:                                                               0810.000
*        B.LIST IN FLAGBITS                                             0811.000
*                                                                       0812.000
* OUTPUTS:                                                              0813.000
*        LIST FILE CLOSED                                               0814.000
*                                                                       0815.000
LISTCLOS PUSH                                                           0816.000
         TBM       B.LIST,FLAGBITS                                      0817.000
         BNS       LISTC1          EXIT IF NOT USED                     0818.000
         ZR        R7                                                   0819.000
         BL        BUILDCNP                                             0820.000
         PUSHSTP                                                        0821.000
         LA        R1,LOGFCB                                            0822.000
         LA        R7,CNP.BUF                                           0823.000
         SVC2.53                   H.REXS,22                            0824.000
         POPSTP                                                         0825.000
LISTC1   POP                                                            0826.000
         TRSW      R0                                                   0827.000
         TITLE     LOG  COMMAND STATE TABLES                            0828.000
*                                                                       0829.000
* A.CMD    - ACTION WHEN VALID LOG VOLUME COMMAND IS IS PARSED          0830.000
*                                                                       0831.000
         SPACE                                                          0832.000
A.CMDVOL EQU       $                                                    0833.000
         SBM       SORT.F,FLAGBITS INDICATE SORTING IS MANDATORY        0834.000
         SBM       PANDF.F,FLAGBITS     WILD CARD SEARCH FOR FILE AND   0835.000
*                                       MEMORY PARTITION DEFINITIONS    0836.000
         LA        R7,C.LOGVOL     GET ADDRESS OF COMMAND PROCESSOR     0837.000
A.CMD    STW       R7,COMDADDR     SAVE FOR DISPATCHER                  0838.000
         TRSW      R0              RETURN TO PARSER                     0839.000
         SPACE     2                                                    0840.000
A.CMDSAV LA        R7,C.LOGSAV     COMMAND PROCESSOR ENTRY POINT        0841.000
         SBM       TPMVFLAG,FLAGBITS INDICATE TAPE MOVEMENT     EQIC360 0842.000
         BU        A.CMD           JOIN COMMON CODE                     0843.000
A.CMDIMA LA        R7,C.LOGIMA     COMMAND PROCESSOR ENTRY POINT        0844.000
         SBM       TPMVFLAG,FLAGBITS INDICATE TAPE MOVEMENT     EQIC360 0845.000
         BU        A.CMD           JOIN COMMON CODE                     0846.000
         SPACE                                                          0847.000
         BOUND     1W              ALIGN                                0848.000
         SPACE                                                          0849.000
*++                                                                     0850.000
* S.LOGVOL - STATE TABLES FOR THE LOG VOLUME COMMAND                    0851.000
*                                                                       0852.000
* COMMAND SYNTAX:                                                       0853.000
*                                                                       0854.000
* LOG [VOLUME]  [GOPT] [PATH=] PATHNAME [LOPT]  [, . . .]               0855.000
*                                                                       0856.000
* OPTIONS:                                                              0857.000
*                                                                       0858.000
*        BRIEF=BOOL                                                     0859.000
*        LISTING=PATHNAME          SPECIFIED AS GLOBAL (DEFAULT) ONLY   0860.000
*                                                                       0861.000
*                                                                       0862.000
*--                                                                     0863.000
         SPACE                                                          0864.000
S.LOGVOL STATE                     STATE TABLE FOR CREATE FILE          0865.000
           TRAN    NOBLNK,A.GLOBAL      POSITION OPTION BLOCK FOR       0866.000
*                                       GLOBAL OPTIONS                  0867.000
S.10     STATE                                                          0868.000
           TRAN    EOS,,PERR006         ERROR -- MUST HAVE AT LEAST ONE 0869.000
*                                       PATHNAME                        0870.000
           TRAN    TSTEXP,,S.20,SS.KWSYN    IS IT A KEYWORD ???         0871.000
           TRAN    NOBLNK,,S.30              NOT A KEYWORD -- MUST BE AN0872.000
*                                            ACTUAL PATHNAME            0873.000
S.20     STATE                                                          0874.000
           TRAN    SUBEXP,,S.30,SS.INP,NOB.M      IS IT "PATH=" KEYWORD 0875.000
           TRAN    SUBEXP,,S.10,SS.OPT,NOB.M      CHECK FOR LEGAL OPTION0876.000
*                                                 KEYWORDS              0877.000
           ERRVAL  INVKEY                         INVALID KEYWORD       0878.000
S.30     STATE                                                          0879.000
           TRAN    EOS,,PERR006              ERROR -- MUST HAVE AT LEAST0880.000
*                                            ONE PATHNAME               0881.000
           TRAN    NOBLNK,A.LOCAL            POSITION TO 1ST LOCAL      0882.000
*                                            OPTION BLOCK               0883.000
         STATE                                                          0884.000
           TRAN    SUBEXP,,S.40,SS.SL00          GET PATHNAME & LOCAL OP0885.000
S.40       TRAN    EOS,A.CMDVOL,EXIT         EXIT PARSE -- SUCCESSFUL   0886.000
*                                            ALSO PLUG ENTRY ADDRESS    0887.000
*                                            SYNTAX VIOLATION           0888.000
         STATE                                                          0889.000
         SPACE     3                                                    0890.000
SS.SL00  STATE                               INPUT FILE LIST            0891.000
           TRAN    SUBEXP,,,SS.PATNM,NOB.M                              0892.000
SS.SL10  STATE                                                          0893.000
           TRAN    TSTEXP,,,SS.KWSYN    LOOK FOR AN OPTION KEYWORD      0894.000
           TRAN    LAMBDA,,SS.SL20 MUST NOT BE ANY                      0895.000
         STATE                                                          0896.000
           TRAN    SUBEXP,,SS.SL10,SS.OPTL,NOB.M  GET A LOCAL OPTION    0897.000
SS.SL20  STATE                                                          0898.000
           TRAN    COMMA,A.LOCAL,SS.SL30,,NOB.M   GET MORE IF IN LIST   0899.000
           TRAN    NOBLNK,,EXIT              EXIT THIS SUBEXPRESSION    0900.000
SS.SL30  STATE                                                          0901.000
           TRAN    SUBEXP,,SS.SL00,SS.INP,NOB.M+LMB.M   "PATH=" KEYWORD 0902.000
         STATE                                                          0903.000
         SPACE     3                                                    0904.000
SS.OPT   STATE                     OPTIONS APPLICABLE FOR THIS COMMAND  0905.000
           TRAN    KEYWD,,,K.OPTS,NOB.M                                 0906.000
           TRAN    NOBLNK,,SS.TIMOP          DATE/TIME OPTIONS          0907.000
         STATE                                                          0908.000
         SPACE     4                                                    0909.000
SS.OPTL  STATE                     OPTIONS APPLICABLE FOR THIS COMMAND  0910.000
           TRAN    KEYWD,,,K.OPTL,NOB.M                                 0911.000
           TRAN    NOBLNK,,SS.TIMOP          DATE/TIME OPTIONS          0912.000
         STATE                                                          0913.000
         SPACE     4                                                    0914.000
K.OPTS   EQU       $           LOG VOLUME  *** GLOBAL ***  OPTIONS      0915.000
         KEYWRD    BRIEF,,SS.BRIE,3     BRIEF LISTING    !32B01 ECKW-34 0916.000
K.OPT2   KEYWRD    LISTING,,SS.LIST,3  LISTING=PATHNAME  !32B01 ECKW-34 0917.000
         DATAW     0                         END OF LIST                0918.000
K.OPTL   EQU       $           LOG VOLUME  *** LOCAL  ***  OPTIONS      0919.000
         KEYWRD    BRIEF,,SS.BRIE,3     BRIEF LISTING    !32B01 ECKW-34 0920.000
         DATAW     0                         END OF LIST                0921.000
         TITLE     LOG IMAGE COMMAND STATE TABLES & ACTION ROUTINES     0922.000
*++                                                                     0923.000
* S.LOGIMA - STATE TABLES FOR THE LOG (SAVE) IMAGE COMMAND              0924.000
*                                                                       0925.000
* COMMAND SYNTAX:                                                       0926.000
*                                                                       0927.000
* LOG IMAGE  [GOPT]                                                     0928.000
*                                                                       0929.000
* OPTIONS:                                                              0930.000
*                                                                       0931.000
*        LISTING=PATHNAME          CAN BE SPECIFIED GLOBALLY ONLY !!!   0932.000
*                                                                       0933.000
*--                                                                     0934.000
         SPACE                                                          0935.000
         BOUND     1W                                                   0936.000
         SPACE                                                          0937.000
S.LOGIMA STATE                     STATE TABLE FOR LOG (SAVE) IMAGE     0938.000
*  SET UP THE CURRENT OPTION BLOCK ADDRESS                              0939.000
           TRAN    NOBLNK,A.GLOBAL                                      0940.000
         STATE                                                          0941.000
*  LOOK FOR LISTING FILE OPTION - TAKE TRANSITION REGARDLESS            0942.000
           TRAN    SUBEXP,,,SS.OPT2,NOB.M+LMB.M                         0943.000
         STATE                                                          0944.000
*  MAKE A PROTOTYPE ENTRY WITH AN ASSOCIATED OPTION BLOCK               0945.000
           TRAN    LAMBDA,A.MAKEP                                       0946.000
         STATE                                                          0947.000
*  PLUG IN THE COMMAND PROCESS ENTRY POINT ADDRESS - IE., PARSE SUCCESSF0948.000
           TRAN    EOS,A.CMDIMA,EXIT                                    0949.000
         STATE                                                          0950.000
         SPACE     5                                                    0951.000
SS.OPT2  STATE                                                          0952.000
*  LOOK FOR THE "LISTING" FILE OPTION KEYWORD                           0953.000
           TRAN    KEYWD,,,K.OPT2,NOB.M                                 0954.000
         STATE                                                          0955.000
         TITLE     LOG SAVEFILE COMMAND STATE TABLES & ACTION ROUTINES  0956.000
*++                                                                     0957.000
* S.LOGSAV - STATE TABLES FOR THE LOG SAVEFILE COMMAND                  0958.000
*                                                                       0959.000
* COMMAND SYNTAX:                                                       0960.000
*                                                                       0961.000
* LOG SAVEFILE  [GOPT]                                                  0962.000
*                                                                       0963.000
* OPTIONS:                                                              0964.000
*                                                                       0965.000
*        LISTING=PATHNAME          CAN BE SPECIFIED GLOBALLY ONLY !!!   0966.000
*        BRIEF=BOOL                CAN BE SPECIFIED GLOBALLY ONLY !!!   0967.000
*                                                                       0968.000
*--                                                                     0969.000
         SPACE                                                          0970.000
         BOUND     1W                                                   0971.000
         SPACE                                                          0972.000
S.LOGSAV STATE                     STATE TABLE FOR LOG (SAVE) IMAGE     0973.000
*  SET UP THE CURRENT OPTION BLOCK ADDRESS                              0974.000
           TRAN    NOBLNK,A.GLOBAL                                      0975.000
         STATE                                                          0976.000
*  LOOK FOR LISTING FILE OPTION - TAKE TRANSITION REGARDLESS            0977.000
           TRAN    SUBEXP,,,SS.OPT,NOB.M+LMB.M                          0978.000
         STATE                                                 ! 32B02  0979.000
           TRAN    SUBEXP,,,SS.OPT,NOB.M+LMB.M                 ! 32B02  0980.000
         STATE                                                          0981.000
*  MAKE A PROTOTYPE ENTRY WITH AN ASSOCIATED OPTION BLOCK               0982.000
           TRAN    LAMBDA,A.MAKEP                                       0983.000
         STATE                                                          0984.000
*  PLUG IN THE COMMAND PROCESS ENTRY POINT ADDRESS - IE., PARSE SUCCESSF0985.000
           TRAN    EOS,A.CMDSAV,EXIT                                    0986.000
         STATE                                                          0987.000
         SPACE     2                                                    0988.000
END      END                                                            0989.000
