*RENAME COMMAND                                         HEADER  FUPREN  0001.000
         M.PGM     FUP.REN,MPX-32,3.6.1,00                              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 COMMAND:                                        0031.000
*                                                                       0032.000
*                  'RENAME'                                             0033.000
*-                                                                      0034.000
*+                                                                      0035.000
*        ENVIRONMENT                                                    0036.000
*                                                                       0037.000
*-                                                                      0038.000
*                                                                       0039.000
*    EXTERNAL REFERENCES:                                               0040.000
*                                                                       0041.000
         EXT       GEN.M030        'VOLUME NAMES NOT THE SAME'  MESSAGE 0042.000
         EXT       GETPROTO        GET NEXT PROTOTYPE ENTRY             0043.000
         EXT       GETRD1          GET RD BY RID                        0044.000
         EXT       RD1.BUF         TO HOLD AN RD                        0045.000
         EXT       ERROR           ERROR HANDLER                        0046.000
         EXT       ERROR2          ERROR HANDLER                        0047.000
         EXT       AUDIT3          AUDIT TRAIL ROUTINE                  0048.000
         EXT       STACKPTR        STACK POINTER SAVE CELL              0049.000
         EXT       F.RENM          FUNCTION STRING                      0050.000
         EXT       FUN.SAVE        ADDRESS OF FUNCTION STRING           0051.000
         EXT       CNP.BUF         CNP BUFFER                           0052.000
         EXT       BUILDCNP        BUILDS A CNP                         0053.000
         EXT       BUILDPNB        BUILDS A PNB                         0054.000
         EXT       COPYSTRG        COPY A STRING                        0055.000
         EXT       PNB.BUF         HOLDS A PNB                          0056.000
*                                                                       0057.000
*  FOR PARSING                                                          0058.000
*                                                                       0059.000
         EXT       PERR006         ERROR MESSAGE                        0060.000
         EXT       A.GLOBAL        SET UP FOR GLOBAL OPTIONS            0061.000
         EXT       SS.KWSYN        CHECK FOR KEYWORD SYNTAX             0062.000
         EXT       SS.FROM         PARSE THE "FROM=" KEYWORD            0063.000
         EXT       A.LOCAL         SET UP FOR LOCAL OPTIONS             0064.000
         EXT       SS.PATNM        PARSE THE "FROM" PATHNAME            0065.000
         EXT       FROMPATH        ERROR MESSAGE                        0066.000
         EXT       SS.PATN2        PARSE THE "TO" PATHNAME              0067.000
         EXT       TOPATH          ERROR MESSAGE                        0068.000
         EXT       SS.TO           PARSE THE "TO=" KEYWORD              0069.000
         EXT       SS.CONF         TO PARSE THE CONFIRM BOOLEAN OPTION  0070.000
         EXT       SS.BRIE         SYNTAX GRAPH FOR BRIEF OPTION        0071.000
         EXT       COMDADDR        HOLD ROUTINE ENTRY POINT ADDR        0072.000
         EXT       INVKEY          ERROR MESSAGE                        0073.000
         SPACE                                                          0074.000
         EXT       FLAGBITS        PROGRAM GLOBAL BOOLEAN FLAG BITS     0075.000
         EXT       FLAGS           BOOLEAN FLAG BITS                    0076.000
         EXT       RIO1BUFF        READ INTO "IO1BUFF" FROM TEMP FILE   0077.000
         EXT       PRONUM          # PROTOTYPES USER IPUT FOR COMMAND   0078.000
         EXT       IO1COUNT        # ENTRY(S) IN "IO1BUFF"              0079.000
         EXT       PROTOTYP        PROTOTYPE TABLE                      0080.000
         EXT       IO1BUFF         DATA BUFFER                          0081.000
         EXT       RN.NAME         WILD CARD RENAME ROUTINE             0082.000
         EXT       BUILDRR1        BUILD RRS TYPE 1 ENTRY      84-0835  0083.000
         EXT       ALCFCB          LFC=ALC                     84-0835  0084.000
         EXT       X.ALOC          ALLOCATE                    84-0835  0085.000
         EXT       X.DALC          DEALLOCATE FILE ROUTINE     84-0835  0086.000
         SPACE                                                          0087.000
*                                                                       0088.000
*    EXTERNAL DEFINITIONS                                               0089.000
*                                                                       0090.000
         SPACE                                                          0091.000
         DEF       S.RENAME        STATE TABLE FOR THE COMMAND          0092.000
         DEF       C.RENAME        PROCEDURE ENTRY                      0093.000
         SPACE                                                          0094.000
*                                                                       0095.000
*    SYSTEM MACRO CALLS FOR DEFINITIONS AND EQUATES                     0096.000
*                                                                       0097.000
         SPACE                                                          0098.000
         LIST      NOMAC                                       *CS      0099.000
         M.REQS                    REGISTER EQUATES                     0100.000
         M.CNP                                                          0101.000
         SPACE                                                          0102.000
*                                                                       0103.000
*    LOCAL DEFINITIONS                                                  0104.000
*                                                                       0105.000
         SPACE                                                          0106.000
         STINIT                    TPARSE DEFINITIONS AND INIT          0107.000
         SPACE                                                          0108.000
*                                                                       0109.000
*    LOCAL STORAGE                                                      0110.000
*                                                                       0111.000
         BOUND     1D                                                   0112.000
PNB.FROM REZ       18W             'FROM' PNB (SAME SIZE AS PNB.BUF)    0113.000
         BOUND     1F              FILE BOUNDARY               84-0835  0114.000
SAVREGS  REZ       8W              SAV AREA                    84-0835  0115.000
PROTADDR REZ       1W              SAVE OF PROTOTYPE ADDRESS            0116.000
         SPACE                                                          0117.000
IO11ST.F EQU       7               SET IF 1ST I/O HAS ALREADY BEEN DONE 0118.000
*                                  FOR "IO1" TEMPORARY FILE             0119.000
         TITLE     'RENAME FILE' FUP COMMAND                            0120.000
         SPACE                                                          0121.000
         CSECT                                                          0122.000
         SPACE                                                          0123.000
*                                                                       0124.000
* ROUTINE C.RENAME - TOP LEVEL ENTRY FOR 'RENAME FILE'.                 0125.000
*                                                                       0126.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0127.000
*        COMMAND DISPATCHER AFTER THE 'RENAME FILE' COMMAND             0128.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0129.000
*                                                                       0130.000
C.RENAME EQU       $                                                    0131.000
         PUSH                      SAVE REGISTERS                       0132.000
         LA        R7,F.RENM       FUNCTION STRING                      0133.000
         STW       R7,FUN.SAVE                                          0134.000
         SPACE                                                          0135.000
         TBM       GWILDT.F,FLAGBITS  WILD CARDS USED IN ANY "TO"       0136.000
*                                     (DESTINATION) PATHNAME ???        0137.000
         BNS       RENAME3         GO FOR NO WILD CARDS USED            0138.000
         TBM       IO1USE.F,FLAGBITS  "IO1" TEMPORARY FILE USED ???     0139.000
         BNS       RENAM0          GO FOR FILE NOT USED                 0140.000
         ZBM       IO11ST.F,FLAGS  EFFECT A (LOGICAL) REWIND            0141.000
         BL        RIO1BUFF        READ FILE                            0142.000
         BU        RENAM0.5        JOIN COMMON CODE                     0143.000
         SPACE     2                                                    0144.000
RENAM0   EQU       $                                                    0145.000
         TBM       GWILD.F,FLAGBITS  WILD CARDS USED IN ANY FROM        0146.000
*                                    PATHNAME ???                       0147.000
         BS        RENAM0.5        GO IF WILD CARDS USED                0148.000
*  COPY "PROTOTYP" BUFFER TO "IO1BUFF" BUFFER                           0149.000
         LW        R0,PRONUM       RETAIN # ENTRY(S) IN BUFFER          0150.000
         STW       R0,IO1COUNT                                          0151.000
         LA        R2,PROTOTYP     SOURCE                               0152.000
         LA        R3,IO1BUFF      DESTINATION                          0153.000
         LI        R4,IO3MXIDX     LENGTH OF BUFFER (IN BYTES)          0154.000
         BL        COPYSTRG        COPY IO3BUFF TO IO1BUFF              0155.000
         SPACE                                                          0156.000
RENAM0.5 EQU       $                                                    0157.000
         BL        RN.NAME         PERFORM THE WILD CARD RENAME         0158.000
         SPACE                                                          0159.000
*                                                                       0160.000
* GET THE NEXT PROTOTYPE ENTRY FOR THE RENAME.                          0161.000
* CC1 WILL BE SET IF A PROTOTYPE DOES NOT EXIST                         0162.000
*                                                                       0163.000
RENAME3  BL        GETPROTO                                             0164.000
         BCT       1,RENAME1       BRANCH IF NO MORE                    0165.000
         STW       R2,PROTADDR     SAVE ADDRESS OF PROTOTYPE            0166.000
*                                                                       0167.000
* THE VOLUME NAMES MUST BE THE SAME, CHECK THIS                         0168.000
*                                                                       0169.000
         LD        R6,PROFVN.O,R2  'FROM' VOLUME NAME (FIRST D-WORD)    0170.000
         CAMD      R6,PROTVN.O,R2  COMPARE WITH 'TO' NAME               0171.000
         BNE       RENAME4         BRANCH IF NOT THE SAME               0172.000
         LD        R6,PROFVN.O+1D,R2    'FROM' SECOND D-WORD            0173.000
         CAMD      R6,PROTVN.O+1D,R2    COMPARE WITH 'TO' NAME          0174.000
         BNE       RENAME4         BRANCH IF NOT THE SAME               0175.000
*                                                                       0176.000
* CALL THE ROUTINE BUILDCNP TO SET UP THE CALLER NOTIFICATION           0177.000
* PACKAGE.                                                              0178.000
* R7 CONTAINS THE OPTION HALF WORD FOR THE CNP.                         0179.000
* CNP.BUF IS SET UP ON EXIT                                             0180.000
*                                                                       0181.000
         ZR        R7                                                   0182.000
         BL        BUILDCNP                                             0183.000
*                                                                       0184.000
* BUILD A PNB FOR THE ORIGINAL FILENAME.                                0185.000
* R2 CONTAINS THE ADDRESS OF THE PROTOTYPE BLOCK                        0186.000
* ON RETURN R7 CONTAINS THE PATHNAME DESCRIPTOR READY FOR               0187.000
* THE SERVICE CALL.                                                     0188.000
*                                                                       0189.000
         BL        BUILDPNB                                             0190.000
*                                                                       0191.000
* SAVE THE PNB DESCRIPTOR FOR THE 'FROM' FILE AND THEN CALL ROUTINE     0192.000
* BUILDPNB AGAIN FOR THE 'TO' FILE.                                     0193.000
*                                                                       0194.000
* COPY THE PNB OUT OF PNB.BUF TO LOCAL STORAGE, ELSE IT GETS SCROGGED   0195.000
*                                                                       0196.000
         STF       R0,SAVREGS      SAV                         84-0835  0197.000
         LI        R5,18W          PNB LENGTH                  84-0835  0198.000
         LA        R6,PNB.BUF      PNB.BUF ADDRESS             84-0835  0199.000
         LW        R7,ALCFCB       LFC TO PUT INTO RRS         84-0835  0200.000
         BL        BUILDRR1        BUILD RRS TYPE 1 ENTRY      84-0835  0201.000
         LA        R5,ALCFCB       ALCFCB ADDRESS              84-0835  0202.000
         BL        X.ALOC          TRY TO ALLOCATE             84-0835  0203.000
         BCF       1,RENAME7       IF OK, SKIP ERROR HANDLING  84-0835  0204.000
         LW        R2,PROTADDR                                 84-0835  0205.000
         BL        ERROR                                                0206.000
         BU        RENAME3         LOOP FOR NEXT PROTOTYPE     84-0835  0207.000
RENAME7  LF        R0,SAVREGS      RESTORE                     84-0835  0208.000
         SRL       R7,24           COUNT TO R7                          0209.000
         TRR       R7,R4           FOR COPYSTRG ROUTINE                 0210.000
         LA        R2,PNB.BUF      'FROM' FILE PNB                      0211.000
         LA        R3,PNB.FROM     LOCAL SAVE AREA                      0212.000
         BL        COPYSTRG        DO THE COPY                          0213.000
*                                                                       0214.000
         LA        R5,PNB.FROM     'FROM' FILE PNB                      0215.000
         SLA       R5,8                                                 0216.000
         SRLD      R4,8            'FROM' FILE DESCRIPTOR               0217.000
*                                                                       0218.000
         LW        R2,PROTADDR     RETRIEVE PROTOTYPE ADDRESS           0219.000
         ADI       R2,PROTFN.O     FIL/DIR/VOL FOR 'TO' FILE            0220.000
         BL        BUILDPNB                                             0221.000
*                                                                       0222.000
* NOW SET UP THE REGISTERS FOR THE SERVICE CALL                         0223.000
*                                                                       0224.000
         PUSHSTP                   SAVE R1                              0225.000
         TRR       R7,R2           'TO' FILE DESCRIPTOR                 0226.000
         TRR       R5,R1           'FROM' FILE DESCRIPTOR               0227.000
         LA        R7,CNP.BUF      CNP ADDRESS                          0228.000
         SVC2.2D                   H.VOMM,14                            0229.000
         POPSTP                    RESTORE R1                           0230.000
         LW        R2,PROTADDR     RESTORE PROTOTYPE ADDRESS            0231.000
*                                                                       0232.000
* CHECK FOR ANY ERRORS, AND NOTE THEM                                   0233.000
*                                                                       0234.000
         CHECKERR  MOD.VOM,NORTN                                        0235.000
         BNZ       RENAME2         BRANCH IF ERRORS                     0236.000
*                                                                       0237.000
* THE RENAME WAS SUCCESSFUL SO PRINT AN AUDIT TRAIL LINE.               0238.000
* OBTAIN THE RD FIRST OF ALL (INTO RD1.BUF)                             0239.000
*                                                                       0240.000
         ADI       R2,PROTFN.O     GET 'TO' FILES RD                    0241.000
         LA        R7,RD1.BUF      TO HOLD THE RD                       0242.000
         BL        GETRD1                                               0243.000
         BCT       1,RENAME2       BRANCH IF ERRORS                     0244.000
*                                                                       0245.000
         LW        R2,PROTADDR     RETRIEVE PROTOTYPE ADDRESS           0246.000
         BL        AUDIT3                                               0247.000
         LA        R5,ALCFCB                                   84-0835  0248.000
         BL        X.DALC          DEALLOCATE ALCFCB           84-0835  0249.000
         BU        RENAME3         LOOP FOR NEXT PROTOTYPE              0250.000
RENAME1  POP                       RESTORE REGISTERS                    0251.000
         TRSW      R0                                                   0252.000
*                                                                       0253.000
* ERRORS WERE DETECTED DURING THE RENAME FUNCTION                       0254.000
* THE ERROR CODE IS IN R7                                               0255.000
* CALL AN ERROR ROUTINE WHICH USES R7 AND R2 (PROTOTYPE BLOCK           0256.000
* ADDRESS) TO PRINT AN ERROR MESSAGE.                                   0257.000
*                                                                       0258.000
RENAME2  BL        ERROR                                                0259.000
         LA        R5,ALCFCB                                   84-0835  0260.000
         BL        X.DALC          DEALLOCATE ALCFCB           84-0835  0261.000
         BU        RENAME3         LOOP FOR NEXT PROTOTYPE              0262.000
*                                                                       0263.000
* THE VOLUME NAMES ARE NOT THE SAME, SO ERROR.                          0264.000
*                                                                       0265.000
RENAME4  LA        R7,GEN.M030     'VOLUME NAMES NOT THE SAME'          0266.000
         BL        ERROR2                                               0267.000
         BU        RENAME3         LOOP FOR NEXT PROTOTYPE              0268.000
         TITLE     RENAME COMMAND STATE TABLES & ACTION ROUTINES        0269.000
*                                                                       0270.000
* A.CMD    - ACTION WHEN VALID RENAME COMMAND IS PARSED                 0271.000
*                                                                       0272.000
         SPACE                                                          0273.000
A.CMD    LA        R7,C.RENAME     GET ADDRESS OF COMMAND PROCESSOR     0274.000
         STW       R7,COMDADDR     SAVE FOR DISPATCHER                  0275.000
         TRSW      R0              RETURN TO PARSER                     0276.000
         SPACE                                                          0277.000
         BOUND     1W              ALIGN                                0278.000
         SPACE     2                                                    0279.000
*++                                                                     0280.000
* S.RENAME - STATE TABLES FOR THE RENAME COMMAND                        0281.000
*                                                                       0282.000
* COMMAND SYNTAX:                                                       0283.000
*                                                                       0284.000
* RENAME  [GOPT]  [FROM=]  PATHNAME  [TO=]  PATHNAME  [LOPT]  [ , ... ] 0285.000
*                                                                       0286.000
* OPTIONS:                                                              0287.000
*                                                                       0288.000
*        CONFIRM=BOOL                                                   0289.000
*        BRIEF=BOOL                                                     0290.000
*--                                                                     0291.000
         SPACE                                                          0292.000
S.RENAME STATE                     STATE TABLE FOR RENAME COMMAND       0293.000
           TRAN    NOBLNK,A.GLOBAL      POSITION OPTION BLOCK FOR       0294.000
*                                       GLOBAL OPTIONS                  0295.000
S.10     STATE                                                          0296.000
           TRAN    EOS,,PERR006         ERROR -- MUST HAVE AT LEAST ONE 0297.000
*                                       PATHNAME                        0298.000
           TRAN    TSTEXP,,S.20,SS.KWSYN    IS IT A KEYWORD ???         0299.000
           TRAN    NOBLNK,,S.30              NOT A KEYWORD -- MUST BE AN0300.000
*                                            ACTUAL PATHNAME            0301.000
S.20     STATE                                                          0302.000
           TRAN    SUBEXP,,S.30,SS.FROM,NOB.M      IS IT "FROM=" KEYWORD0303.000
           TRAN    SUBEXP,,S.10,SS.OPT,NOB.M      CHECK FOR LEGAL GLOBAL0304.000
*                                                 KEYWORDS              0305.000
           ERRVAL  INVKEY                         INVALID KEYWORD       0306.000
S.30     STATE                                                          0307.000
           TRAN    EOS,,PERR006              ERROR -- MUST HAVE AT LEAST0308.000
*                                            ONE PATHNAME               0309.000
           TRAN    NOBLNK,A.LOCAL            POSITION TO 1ST LOCAL      0310.000
*                                            OPTION BLOCK               0311.000
         STATE                                                          0312.000
           TRAN    SUBEXP,A.LOCAL,S.40,SS.SL00   GET PATHNAME & LOCAL OP0313.000
S.40       TRAN    EOS,A.CMD,EXIT            EXIT PARSE -- SUCCESSFUL   0314.000
*                                            ALSO PLUG ENTRY ADDRESS    0315.000
*                                            SYNTAX VIOLATION           0316.000
         STATE                                                          0317.000
         SPACE     3                                                    0318.000
SS.SL00  STATE                               INPUT FILE LIST            0319.000
*  GET THE "FROM=" PATHNAME (THIS IS REQUIRED FOR THE RENAME COMMAND !!)0320.000
           TRAN    SUBEXP,,,SS.PATNM,NOB.M                              0321.000
*  ERROR IF DIDN'T FIND THE "FROM=" PATHNAME                            0322.000
           ERRVAL  FROMPATH        TERMINATE PARSE W/ERROR MESSAGE      0323.000
         STATE                                                          0324.000
*  LOOK FOR & REMOVE (IF PRESENT) "TO=" KEYWORD                         0325.000
           TRAN    SUBEXP,,,SS.TO,NOB.M+LMB.M                           0326.000
*  GO TO NEXT STATE EVEN IF OPTIONAL "TO=" KEYWORD NOT PRESENT          0327.000
         STATE                                                          0328.000
*  GET THE "TO=" PATHNAME (REQUIRED FOR RENAME COMMAND !!!)             0329.000
           TRAN    SUBEXP,,,SS.PATN2,NOB.M                              0330.000
*  ERROR IF DIDN'T FIND THE "TO=" PATHNAME !!!                          0331.000
           ERRVAL  TOPATH          TERMINATE PARSE W/ERROR MESSAGE      0332.000
SS.SL10  STATE                                                          0333.000
           TRAN    TSTEXP,,,SS.KWSYN         LOOK FOR AN OPTION KEYWORD 0334.000
           TRAN    LAMBDA,,SS.SL20           MUST NOT BE ANY            0335.000
         STATE                                                          0336.000
           TRAN    SUBEXP,,SS.SL10,SS.OPT,NOB.M GET A LOCAL OPTION      0337.000
SS.SL20  STATE                                                          0338.000
           TRAN    COMMA,A.LOCAL,SS.SL30,,NOB.M   GET MORE IF IN LIST   0339.000
           TRAN    NOBLNK,,EXIT              EXIT THIS SUBEXPRESSION    0340.000
SS.SL30  STATE                                                          0341.000
           TRAN    SUBEXP,,SS.SL00,SS.FROM,NOB.M+LMB.M   "FROM=" KEYWORD0342.000
*  GO TO SPECIFIED STATE EVEN IF DON'T FIND OPTIONAL "FROM=" KEYWORD    0343.000
         STATE                                                          0344.000
         SPACE     5                                                    0345.000
SS.OPT   STATE                     OPTIONS APPLICABLE FOR THIS COMMAND  0346.000
           TRAN    KEYWD,,,K.OPTS,NOB.M                                 0347.000
         STATE                                                          0348.000
         SPACE     5                                                    0349.000
K.OPTS   EQU       $                         SAVE OPTIONS               0350.000
         KEYWRD    CONFIRM,,SS.CONF,3   CONFIRM-BOOL OPT !32B01 ECKW-34 0351.000
         KEYWRD    BRIEF,,SS.BRIE,3     BRIEF-BOOL OPT.  !32B01 ECKW-34 0352.000
         DATAW     0                         END OF LIST                0353.000
         SPACE     2                                                    0354.000
END      END                                                            0355.000
