*TRUNCATE COMMAND                                       HEADER  FUPTRN  0001.000
         M.PGM     FUP.TRN,MPX-32,3.6.1,01                              0002.000
         SPACE                                                          0003.000
         CSECT                                                          0004.000
         SPACE                                                          0005.000
*                                                                       0006.000
************************************************************************0007.000
*                                                                      *0008.000
*                    PROPRIETARY INFORMATION                           *0009.000
*                    -----------------------                           *0010.000
*   THE INFORMATION CONTAINED HEREIN IS PROPRIETARY TO ENCORE          *0011.000
*   COMPUTER CORPORATION AND/OR ITS VENDORS, AND ITS USE, DISCLOSURE,  *0012.000
*   OR DUPLICATION IS SUBJECT TO THE RESTRICTIONS STATED IN THE        *0013.000
*   STANDARD ENCORE COMPUTER CORPORATION LICENSE TERMS AND CONDITIONS  *0014.000
*   OR THE APPROPRIATE THIRD-PARTY SUBLICENSE AGREEMENT.               *0015.000
*                                                                      *0016.000
*                       RESTRICTED RIGHTS                              *0017.000
*                       -----------------                              *0018.000
*   USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT       *0019.000
*   TO RESTRICTIONS AS SET FOURTH IN SUBDIVISION (c) (1) (ii) OF       *0020.000
*   THE RIGHTS IN TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT       *0021.000
*   252.227.7013                                                       *0022.000
************************************************************************0023.000
* (C) COPYRIGHT 1989 ENCORE COMPUTER CORPORATION                       *0024.000
*     ALL RIGHTS RESERVED                                              *0025.000
************************************************************************0026.000
************************************************************************0027.000
*                                                                      *0028.000
*        HISTORY OF FUPTRN             MPX 3.6.1                       *0029.000
*                                                                      *0030.000
************************************************************************0031.000
*                                                                       0032.000
*        VOLMGR REV 3.6.1.01 BL 7                               ETRN361 0033.000
*                                                               ETRN361 0034.000
*        MODULES: FUPMAN (REV 3.6.1.01)                         ETRN361 0035.000
*                 FUPSET (REV 3.6.1.01)                         ETRN361 0036.000
*                 FUPCPY (REV 3.6.1.01)                         ETRN361 0037.000
*                 FUPTRN (REV 3.6.1.01)                         ETRN361 0038.000
*                 FUPRSD (REV 3.6.1.01)                         ETRN361 0039.000
*                 SJ.VPRE(REV 3.6.1.01)                         ETRN361 0040.000
*                 SH.VOMM(REV 3.6.1.03)                         ETRN361 0041.000
*                 SM.MPXMC(REV 3.6.1.08)                        ETRN361 0042.000
*                                                               ETRN361 0043.000
*        07/13/94  11464 ADDED SUPPORT FOR ENHANCED TRUNCATE    ETRN361 0044.000
*                  OPTION                                       ETRN361 0045.000
************************************************************************0046.000
*-                                                                      0047.000
*+                                                                      0048.000
*        FUNCTIONAL DESCRIPTION                                         0049.000
*                                                                       0050.000
*    THIS MODULE CONTAINS ONE OF THE COMMAND PROCESSING ROUTINES        0051.000
*    FOR THE FILE UTILITY PROGRAM FOR THE NEW FILE SYSTEM. THIS         0052.000
*    MODULE HANDLES THE "TRUNCATE" COMMAND. IT                          0053.000
*-                                                                      0054.000
*+                                                                      0055.000
*        ENVIRONMENT                                                    0056.000
*                                                                       0057.000
*                                                                       0058.000
*    EXTERNAL REFERENCES:                                               0059.000
*                                                                       0060.000
         EXT       GETPROTO        GET NEXT PROTOTYPE ENTRY             0061.000
         EXT       GETRD1          GET RD BY RID                        0062.000
         EXT       RD1.BUF         TO HOLD AN RD                        0063.000
         EXT       ERROR           ERROR HANDLER                        0064.000
         EXT       AUDIT0          AUDIT TRAIL ROUTINE                  0065.000
         EXT       STACKPTR        STACK POINTER SAVE CELL              0066.000
         EXT       F.TRUN          FUNCTION STRING                      0067.000
         EXT       FUN.SAVE        ADDRESS OF STRING                    0068.000
         EXT       CNP.BUF         CNP BUFFER                           0069.000
         EXT       BUILDCNP        BUILDS A CNP                         0070.000
         EXT       BUILDPNB        BUILDS A PNB                         0071.000
         EXT       COMDADDR        GLOBAL VARIABLE HOLDING ENTRY ADDR.  0072.000
         EXT       SS.EXTS         EXTENSION SIZE                       0073.000
         EXT       SS.INP                                               0074.000
         EXT       A.GLOBAL                                             0075.000
         EXT       INVKEY                                               0076.000
         EXT       SS.KWSYN                                             0077.000
         EXT       SS.PATNM                                             0078.000
         EXT       PERR006                                              0079.000
         EXT       A.LOCAL                                              0080.000
         EXT       SS.BRIE         BRIEF SYNTAX GRAPH                   0081.000
         EXT       SS.TRUN                                      ETRN361 0082.000
         EXT       DOBLOCK         GLOBAL OPTION BLOCK          ETRN361 0083.000
         EXT       ADDRPTR         LOCAL OPTION BLOCK           ETRN361 0084.000
         SPACE                                                          0085.000
*                                                                       0086.000
*    EXTERNAL DEFINITIONS                                               0087.000
*                                                                       0088.000
         SPACE                                                          0089.000
         DEF       S.TRNCAT        STATE TABLE FOR THE COMMAND          0090.000
         DEF       C.TRUNCATE        PROCEDURE ENTRY                    0091.000
         SPACE                                                          0092.000
*                                                                       0093.000
*    SYSTEM MACRO CALLS FOR DEFINITIONS AND EQUATES                     0094.000
*                                                                       0095.000
         SPACE                                                          0096.000
         LIST      NOMAC                                                0097.000
         M.REQS                    REGISTER EQUATES                     0098.000
         M.CNP                                                          0099.000
         SPACE                                                          0100.000
*                                                                       0101.000
*    LOCAL DEFINITIONS                                                  0102.000
*                                                                       0103.000
         SPACE                                                          0104.000
         STINIT                    TPARSE DEFINITIONS AND INIT          0105.000
         SPACE                                                          0106.000
*                                                                       0107.000
*    LOCAL STORAGE                                                      0108.000
*                                                                       0109.000
*        THERE IS NO LOCAL DATA IN THIS MODULE.  IF LOCAL DATA MUST BE D0110.000
*        DECLARED, TAKE CARE THAT A DSECT IS SET UP AROUND THE LOCAL    0111.000
*        DATA.                                                          0112.000
*                                                                       0113.000
         SPACE                                                          0114.000
         TITLE     'TRUNCATE FILE' FUP COMMAND                          0115.000
*                                                                       0116.000
* ROUTINE C.TRUNCATE - TOP LEVEL ENTRY FOR 'TRUNCATE FILE'.             0117.000
*                                                                       0118.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0119.000
*        COMMAND DISPATCHER AFTER THE 'TRUNCATE FILE' COMMAND           0120.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0121.000
*                                                                       0122.000
C.TRUNCATE EQU       $                                                  0123.000
         PUSH                      SAVE REGISTERS                       0124.000
         LA        R7,F.TRUN       FUNCTION STRING ADDRESS              0125.000
         STW       R7,FUN.SAVE                                          0126.000
*                                                                       0127.000
* GET THE NEXT PROTOTYPE/OPTION BLOCK PAIR                              0128.000
* CC1 WILL BE ZERO IF THERE ARE MORE BLOCKS, ELSE 1                     0129.000
*                                                                       0130.000
TRNCT2   BL        GETPROTO                                             0131.000
         BCT       1,TRNCT0        BRANCH IF NO MORE BLOCKS             0132.000
*                                                                       0133.000
* THERE IS ANOTHER PROTOTYPE BLOCK, AND ITS ADDRESS IS IN R2.           0134.000
* CALL THE SYSTEM SERVICE H.VOMM,7 TO ATTEMPT THE TRUNCATE              0135.000
*                                                                       0136.000
* CALL THE ROUTINE BUILDCNP TO SET UP THE CALLER NOTIFICATION           0137.000
* PACKAGE.                                                              0138.000
* R7 CONTAINS THE OPTION HALF WORD FOR THE CNP.                         0139.000
* CNP.BUF IS SET UP ON EXIT                                             0140.000
*                                                                       0141.000
         ZR        R7                                                   0142.000
         BL        BUILDCNP                                             0143.000
*                                                                       0144.000
* OBTAIN THE PNB FOR THE FILE                                           0145.000
*                                                                       0146.000
         BL        BUILDPNB                                             0147.000
         PUSHSTP                   SAVE R1                              0148.000
         TRR       R7,R1           PNB ADDRESS                          0149.000
         LA        R7,CNP.BUF                                           0150.000
         TRR       R2,R6           SAVE R2                      ETRN361 0151.000
         LW        R2,PROFOA.O,X2  GET OPTION TABLE ADDRESS     ETRN361 0152.000
         TBM       OPT.B.TR,OPT.FLGS,X2  ENHANCED TRUNCATE?     ETRN361 0153.000
         BNS       TRNCT2.5        NO, JUST CALL SVC            ETRN361 0154.000
         TRR       R7,R2           GET CNP ADDRESS              ETRN361 0155.000
         SBM       TRN.EOM,CP.OPTS,X2 SET ENH. TRUNC BIT        ETRN361 0156.000
TRNCT2.5 CEQU      $                                            ETRN361 0157.000
         SVC2.26                   H.VOMM,7                             0158.000
         TRR       R6,R2           RESTORE R2                   ETRN361 0159.000
         POPSTP                    RESTORE R1                           0160.000
*                                                                       0161.000
* CHECK FOR ANY ERRORS, AND NOTE THEM                                   0162.000
*                                                                       0163.000
         CHECKERR  MOD.VOM,NORTN   R7=ERRORCODE ELSE 0                  0164.000
         BNZ       TRNCT1          BRANCH IF ERRORS                     0165.000
*                                                                       0166.000
* THE TRUNCATE WAS SUCCESSFUL SO PRINT AN AUDIT TRAIL LINE.             0167.000
* OBTAIN THE RD FIRST OF ALL (INTO RD.BUF)                              0168.000
*                                                                       0169.000
         LA        R7,RD1.BUF      TO HOLD THE RD                       0170.000
         BL        GETRD1                                               0171.000
         BCT       1,TRNCT1        BRANCH IF ERRORS                     0172.000
*                                                                       0173.000
         BL        AUDIT0                                               0174.000
         BU        TRNCT2          LOOP FOR NEXT PROTOTYPE BLOCK        0175.000
*                                                                       0176.000
* ERRORS WERE DETECTED DURING THE TRUNCATE FUNCTION                     0177.000
* THE ERROR CODE IS IN R7                                               0178.000
* CALL AN ERROR ROUTINE WHICH USES R7 AND R2 (PROTOTYPE BLOCK           0179.000
* ADDRESS) TO PRINT AN ERROR MESSAGE.                                   0180.000
*                                                                       0181.000
TRNCT1   BL        ERROR                                                0182.000
         BU        TRNCT2          LOOP FOR NEXT PROTOTYPE BLOCK        0183.000
*                                                                       0184.000
* THERE ARE NO MORE PROTOTYPE BLOCKS SO THE HANDLING OF THIS            0185.000
* COMMAND HAS FINISHED.                                                 0186.000
*                                                                       0187.000
TRNCT0   EQU       $                                                    0188.000
         POP                       RESTORE REGISTERS                    0189.000
         TRSW      R0                                                   0190.000
*                                                                       0191.000
* A.CMD    - ACTION WHEN VALID TRUNCATE COMMAND IS PARSED               0192.000
*                                                                       0193.000
         SPACE                                                          0194.000
A.CMD    LA        R7,C.TRUNCA     GET ADDRESS OF COMMAND PROCESSOR     0195.000
         STW       R7,COMDADDR     SAVE FOR DISPATCHER                  0196.000
         TRSW      R0              RETURN                               0197.000
         BOUND     1W                                                   0198.000
         TITLE     TRUNCATE COMMAND STATE TABLES                        0199.000
*++                                                                     0200.000
* S.TRNCAT - STATE TABLES FOR THE TRUNCATE COMMAND                      0201.000
*                                                                       0202.000
* COMMAND SYNTAX:                                                       0203.000
*                                                                       0204.000
* TRUNCATE                                                              0205.000
*                                                                       0206.000
* OPTIONS:                                                              0207.000
*                                                                       0208.000
*--                                                                     0209.000
         SPACE                                                          0210.000
S.TRNCAT STATE                     STATE TABLE FOR TRUNCATE             0211.000
           TRAN    NOBLNK,A.GLOBAL      POSITION OPTION BLOCK FOR       0212.000
*                                       GLOBAL OPTIONS                  0213.000
SF.10     STATE                                                         0214.000
           TRAN    EOS,,PERR006         ERROR -- MUST HAVE AT LEAST ONE 0215.000
*                                       PATHNAME                        0216.000
           TRAN    TSTEXP,,SF.20,SS.KWSYN     IS IT A KEYWORD ???       0217.000
           TRAN    NOBLNK,,SF.30              NOT A KEYWORD -- MUST BE A0218.000
*                                            ACTUAL PATHNAME            0219.000
SF.20     STATE                                                         0220.000
           TRAN    SUBEXP,,SF.30,SS.INP,NOB.M       IS IT "PATH=" KEYWOR0221.000
           TRAN    SUBEXP,,SF.10,SS.OPT,NOB.M       CHECK FOR LEGAL OPTI0222.000
*                                                 KEYWORDS              0223.000
           ERRVAL  INVKEY                         INVALID KEYWORD       0224.000
SF.30     STATE                                                         0225.000
           TRAN    EOS,,PERR006              ERROR -- MUST HAVE AT LEAST0226.000
*                                            ONE PATHNAME               0227.000
           TRAN    NOBLNK,A.LOCAL            POSITION TO 1ST LOCAL      0228.000
*                                            OPTION BLOCK               0229.000
         STATE                                                          0230.000
           TRAN    SUBEXP,A.LOCAL,SF.40,SSF.LIST   GET PATHNAME & LOCAL 0231.000
SF.40       TRAN    EOS,A.CMD,EXIT            EXIT PARSE -- SUCCESSFUL  0232.000
*                                            ALSO PLUG ENTRY ADDRESS    0233.000
*                                            SYNTAX VIOLATION           0234.000
         STATE                                                          0235.000
         SPACE     3                                                    0236.000
SSF.LIST  STATE                               INPUT FILE LIST           0237.000
           TRAN    SUBEXP,,,SS.PATNM,NOB.M                              0238.000
SSF.SL10  STATE                                                         0239.000
           TRAN    TSTEXP,,,SS.KWSYN          LOOK FOR AN OPTION KEYWORD0240.000
           TRAN    LAMBDA,,SSF.SL20           MUST NOT BE ANY           0241.000
         STATE                                                          0242.000
           TRAN    SUBEXP,,SSF.SL10,SS.OPT,NOB.M   GET AN OPTION        0243.000
SSF.SL20  STATE                                                         0244.000
           TRAN    COMMA,A.LOCAL,SSF.SL30,,NOB.M   GET MORE IF IN LIST  0245.000
           TRAN    NOBLNK,,EXIT              EXIT THIS SUBEXPRESSION    0246.000
SSF.SL30  STATE                                                         0247.000
           TRAN    SUBEXP,,SSF.LIST,SS.INP,NOB.M+LMB.M   "PATH=" KEYWOR 0248.000
         STATE                                                          0249.000
         SPACE     5                                                    0250.000
SS.OPT   STATE                     OPTIONS APPLICABLE FOR THIS COMMAND  0251.000
           TRAN    KEYWD,,,K.OPTS,NOB.M                                 0252.000
         STATE                                                          0253.000
         SPACE     4                                                    0254.000
K.OPTS   EQU       $                         DELETE RESOURCE  -- OPTIONS0255.000
         KEYWRD    BRIEF,,SS.BRIE,3          BRIEF OPTION !32B01 ECKW-340256.000
         KEYWRD    TRUNC_AU,,SS.TRUN,3       TRUNCATE OPTION    ETRN361 0257.000
         DATAW     0                         END OF LIST                0258.000
         SPACE     2                                                    0259.000
END      END                                                            0260.000
