*RESOLVE ROUTINES                                       HEADER  FUPRES  0001.000
************************************************************************0002.000
*                                                                      *0003.000
*                    PROPRIETARY INFORMATION                           *0004.000
*                    -----------------------                           *0005.000
*   THE INFORMATION CONTAINED HEREIN IS PROPRIETARY TO ENCORE          *0006.000
*   COMPUTER CORPORATION AND/OR ITS VENDORS, AND ITS USE, DISCLOSURE,  *0007.000
*   OR DUPLICATION IS SUBJECT TO THE RESTRICTIONS STATED IN THE        *0008.000
*   STANDARD ENCORE COMPUTER CORPORATION LICENSE TERMS AND CONDITIONS  *0009.000
*   OR THE APPROPRIATE THIRD-PARTY SUBLICENSE AGREEMENT.               *0010.000
*                                                                      *0011.000
*                       RESTRICTED RIGHTS                              *0012.000
*                       -----------------                              *0013.000
*   USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT       *0014.000
*   TO RESTRICTIONS AS SET FOURTH IN SUBDIVISION (c) (1) (ii) OF       *0015.000
*   THE RIGHTS IN TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT       *0016.000
*   252.227.7013                                                       *0017.000
************************************************************************0018.000
* (C) COPYRIGHT 1989 ENCORE COMPUTER CORPORATION                       *0019.000
*     ALL RIGHTS RESERVED                                              *0020.000
************************************************************************0021.000
*                                                                       0022.000
         M.PGM     FUPRES,MPX-32,3.6.1,01                               0023.000
************************************************************************0024.000
*                                                                      *0025.000
*        VOLMGR FUPRES REVISION HISTORY 3.6.1                          *0026.000
*                                                                      *0027.000
************************************************************************0028.000
*                                                                       0029.000
*        VERSION 3.6.0.01 BL02                                  S920607 0030.000
*                                                               S920607 0031.000
*        S920607   12/21/93  10833  TEST CONDITION CODES FOR    S920607 0032.000
*                  ERROR ON RETURN FROM BL TO BUILDRCB.         S920607 0033.000
*                  DEPENDENCY:    FUPUTL REV 3.6.1.01           S920607 0034.000
*                                                                       0035.000
************************************************************************0036.000
*                                                                      *0037.000
*        HISTORY OF FUPRES             MPX 3.5U02A                     *0038.000
*                                                                      *0039.000
************************************************************************0040.000
*        VERSION 3.5U02A.05 BL7                E3RMS35B,CP12364,CP12311B0041.000
*                                                                       0042.000
*        CP12311B  O8/06/93  10833  TEST MV.REMR IN MV.MVTA     CP12311B0043.000
*                  TO DETERMINE IF VOLUME IS REMOTE.            CP12311B0044.000
*                                                                       0045.000
*        CP12364   O8/06/92  10833  USE M.LOGMVT ONLY IF THE    CP12364 0046.000
*                  OS REV IS MPX3.5U02A OR LATER; OTHERWISE     CP12364 0047.000
*                  SEARCH ONLY THE LOCAL MVT.                   CP12364 0048.000
*                                                                       0049.000
*        E3RMS35B  O7/21/92  10833  STORE THE REAL SYSTEM       E3RMS35B0050.000
*                  DIRECTORY NAME INTO THE PROTOTYPE TABLE      E3RMS35B0051.000
*                  ENTRY THAT HAS ALREADY BEEN BUILT. THIS NAME E3RMS35B0052.000
*                  WAS OBTAINED IN FUPMAN FROM THE M.LOC TO GET E3RMS35B0053.000
*                  THE TRUE SYSTEM VOLUME AND DIRECTORY NAMES   E3RMS35B0054.000
*                  AND STORED IN DATA AREA SDIR.  THIS          E3RMS35B0055.000
*                  SUBSTITUTION OCCURS IF ALL THE FOLLOWING     E3RMS35B0056.000
*                  ARE TRUE:  WE HAVE NO SYSTEM VOLUME; WE      E3RMS35B0057.000
*                  ARE RUNNING RMSS3.1 OR LATER; "SYSTEM" HAS   E3RMS35B0058.000
*                  BEEN SPECIFIED FOR BOTH VOLUME AND DIRECTORY E3RMS35B0059.000
*                  NAMES.                                       E3RMS35B0060.000
*                                                                       0061.000
*        VERSION 3.5U02A.04 BL5                                         0062.000
*                                                                       0063.000
*        CP12311  06/1992 11464 REMOVED M.LOC USED TO OBTAIN    CP12311A0064.000
*                         REMOTE RESOURCE FLAGS. CODE IS NOW    CP12311A0065.000
*                         USING REMOTE FLAG FROM THE MVTE       CP12311A0066.000
*                                                                       0067.000
*        VERSION 3.5U02A.03 BL4                                         0068.000
*                                                                       0069.000
*        CP12311  06/19/92 11464 CHANGE CODE TO ADD REMOTE      CP12311 0070.000
*                          FLAGS TO VOLUME AND DIRECTORY PROTO- CP12311 0071.000
*                          TYPES.                               CP12311 0072.000
*                                                                       0073.000
*        VERSION 3.5U02A.02 BL4                                         0074.000
*                                                                       0075.000
*        E3RMS35A 06/09/92 11464 ADD CODE TO SUPPORT WILD CARDS E3RMS35A0076.000
*                          FROM RMS NODES                       E3RMS35A0077.000
*                                                                       0078.000
*                                                                       0079.000
*        VOLMGR REV 3.5.U02A.01                                 E3RMS35 0080.000
*        MODULES: FUPRES (REV 3.5U02A.01)                       E3RMS35 0081.000
*                 FUPGBL (REV 3.5U02A.01)                       E3RMS35 0082.000
*                 FUPMAN (REV 3.5U02A.01)                       E3RMS35 0083.000
*                 SJ.VPRE                                       E3RMS35 0084.000
*        ENHANCEMENT: E3RMS35                                   E3RMS35 0085.000
*                                                               E3RMS35 0086.000
*        05/15/90 10833 CODE IS CHANGED IN MODULES FUPRES,      E3RMS35 0087.000
*                 FUPGBL, AND FUPMAN TO USE THE SVC M.LOGMVT    E3RMS35 0088.000
*                 (H.REMM,32 - SVC 2,X'4D') TO CONSTRUCT THE    E3RMS35 0089.000
*                 VOLUME NAME LIST.  THIS WILL FIND ALL THE     E3RMS35 0090.000
*                 VOLUMES ON THE LOCAL SYSTEM AS WELL AS THE    E3RMS35 0091.000
*                 VOLUMES ON ANY HOST NODE(S) ON AN RMSS3.1     E3RMS35 0092.000
*                 SYSTEM.  ALSO,  IF ON A NODE WITH NO SYSTEM   E3RMS35 0093.000
*                 VOLUME, ABORT WITH ERROR MESSAGE IF USER      E3RMS35 0094.000
*                 ASKS FOR "SYSTEM" VOLUME IN A "RESTORE"       E3RMS35 0095.000
*                 COMMAND (UNDEFINED IN THIS CONTEXT).          E3RMS35 0096.000
************************************************************************0097.000
*+                                                                      0098.000
*        FUNCTIONAL DESCRIPTION                                         0099.000
*                                                                       0100.000
*        THIS ROUTINE CONTROLS THE RESOLVING OF PROTOTYPE PATHNAMES     0101.000
*        INTO COMPLETELY EXPLICIT PATHNAMES CONSISTING OF VOLUME NAME,  0102.000
*        DIRECTORY NAME AND FILE NAME.  IT USES THREE SCRATCH FILES     0103.000
*        ASSIGNED TO LOGICAL FILE CODES IO1, IO2 & IO3.  THIS ROUTINE   0104.000
*        USES THREE "PASSES", ONE FOR EACH OF THE THREE POSSIBLE PATHNAM0105.000
*        COMPONENTS.  AFTER EACH PASS, A SCRATCH FILE IS SORTED SO      0106.000
*        THAT THE NAMES APPEAR IN ASENDING ORDER AND THUS A LIST        0107.000
*        (IE., DIRECTORY) NEED BE READ INTO MEMORY ONLY ONCE.           0108.000
*                                                                       0109.000
*                                                                       0110.000
*-                                                                      0111.000
*        ENVIRONMENT                                                    0112.000
*                                                                       0113.000
*                                                                       0114.000
*    EXTERNAL REFERENCES:                                               0115.000
*                                                                       0116.000
         SPACE                                                          0117.000
*        ROUTINE NAMES                                                  0118.000
         SPACE                                                          0119.000
         EXT       FORMATOT        FORMAT & PRINT A MESSAGE             0120.000
         EXT       REN.NAME        RENAME ROUTINE                       0121.000
         EXT       MATCHNAM                                             0122.000
         EXT       WRAN            RANDOM ACCESS WRITE ROUTINE          0123.000
         EXT       RRAN            RANDOM ACCESS READ ROUTINE           0124.000
         EXT       RSEQ            SEQUENTIAL READ ROUTINE              0125.000
         EXT       M.RWND          REWIND RESOURCE                      0126.000
         EXT       BUILDRR2        BUILD RRS TYPE #2                    0127.000
         EXT       BUILDRR6        BUILD RRS TYPE #6           ! 32B01  0128.000
         EXT       RCB.BUF         ADDRESS OF RCB              ! 32B01  0129.000
         EXT       BLDRR6.S        BUILDS RRS TYPE #6 (SHORT 6W FORM)   0130.000
         EXT       BUILDCNP        BUILD A CNP                          0131.000
         EXT       GETPATH         GET LENGTH OF A NAME, EXCLUDING      0132.000
*                                  TRAILING BLANKS                      0133.000
         EXT       SORTINT         INTERNAL SORT ( .LE. 48 FILES )      0134.000
         EXT       SORTVOL         SORT BY VOLUME NAME                  0135.000
         EXT       SORTDIR         SORT BY VOL & DIR NAMES              0136.000
         EXT       SORTFIL         SORT BY VOL & DIR & FIL NAMES        0137.000
         EXT       FUPABORT        ABORT ROUTINE                        0138.000
         EXT       FUPABRT2        ABORT ROUTINE  --  ENTRY POINT FOR   0139.000
*                                  I/O RELATED ERRORS                   0140.000
         EXT       FUPABRT3        ENTRY POINT -- ABORT ROUTINE         0141.000
         EXT       FUPABRT5        ENTRY POINT -- ABORT ROUTINE         0142.000
         EXT       ERROR4          FORMAT & PRINT ERROR MESSAGE         0143.000
         EXT       ERROR5          PRINT FUNCTION & PATHNAME            0144.000
         EXT       X.ALOCW         GENERAL ALLOCATE WITH WAIT FOR BUSY  0145.000
         EXT       X.ALOC2         ALLOCATE & OPEN A TEMPORARY FILE     0146.000
         EXT       X.DALC          DEALLOCATE RESOURCE ROUTINE          0147.000
         EXT       X.ALOC          ALLOCATE RESOURCE                    0148.000
         EXT       X.OPEN          OPEN RESOURCE                        0149.000
         EXT       BUILDRCB        BUILD AN RCB                ! 32B01  0150.000
         EXT       RIDADDR         8 WORD RID AREA             ! 32B01  0151.000
         SPACE                                                          0152.000
*        DATA TABLES  ( .GT. 2W )                                       0153.000
         SPACE                                                          0154.000
         EXT       PROTOTYP                                             0155.000
         EXT       IO1FCB                                               0156.000
         EXT       IO2FCB                                               0157.000
         EXT       IO3FCB                                               0158.000
         EXT       CNP.BUF         BUFFER IN WHICH TO BUILD A CNP       0159.000
         EXT       RRS.BUF         BUFFER IN WHICH TO BUILD A RRS       0160.000
         EXT       REN.BUF         BUFFER HOLDING DERIVED NAME AFTER    0161.000
         EXT       MVTE.BUF        BUFFER TO HOLD MVT ENTRY     E3RMS35 0162.000
*                                  A RENAME OPERATION                   0163.000
         SPACE                                                          0164.000
*        DATA VARIABLES ( .LE. 2W )                                     0165.000
         SPACE                                                          0166.000
         EXT       IO1Z            LFC G-STRING                         0167.000
         EXT       IO2Z            LFC G-STRING                         0168.000
         EXT       IO3Z            LFC G-STRING                         0169.000
         EXT       ADR.MASK        TO MASK ALL BUT ADDRESS              0170.000
         EXT       PRONUM          # PROTOTYPES USER SPECIFIED          0171.000
         EXT       PRONEXT         USED FOR COUNTING DOWN "PRONUM"      0172.000
         EXT       PROLEN                                               0173.000
         EXT       STACKPTR        STACK POINTER SAVE AREA              0174.000
         EXT       BLANKS          DOUBLE WORD OF SPACES                0175.000
         EXT       SYSTEM          NAME 'SYSTEM  '              E3RMS35B0176.000
         EXT       SDIR            SYSTEM DIRECTORY NAME        E3RMS35B0177.000
         EXT       SDLENGTH        SYSTEM DIRECTORY NAME LENGTH E3RMS35B0178.000
         EXT       FU2ERR1         TEMP FILE ALLOCATION FAILURE - ERROR 0179.000
         EXT       GEN.M002        ERROR MESSAGE                        0180.000
         EXT       GEN.M018        ERROR MESSAGE - VNL IS FULL          0181.000
         EXT       RRS.ACC4        RRS ACCESS - READ, IMPLICIT SHARING  0182.000
         EXT       RRS.OPT1        UNBLOCKED I/O, AUTOMATIC OPEN        0183.000
         EXT       FLAGBITS        GLOBAL FLAG WORD                     0184.000
         EXT       GEN.M019        ERROR MESSAGE                        0185.000
         EXT       GEN.M020        ERROR MESSAGE                        0186.000
         EXT       GEN.M004        ERROR MESSAGE                        0187.000
         EXT       GEN.M007        ERROR MESSAGE                        0188.000
         EXT       GEN.M006        ERROR MESSAGE                        0189.000
         EXT       GEN.M034        M.LOGMVT ERROR               E3RMS35 0190.000
         EXT       CNP.ACC5        CNP OPTION VALUE                     0191.000
         SPACE                                                          0192.000
*                                                                       0193.000
*    EXTERNAL DEFINITIONS                                               0194.000
*                                                                       0195.000
         SPACE                                                          0196.000
         DEF       FUPRESOL        ENTRY POINT FOR WILD CARD NAME MATCHI0197.000
         DEF       TAPBUFF         DATA BUFFER                          0198.000
         DEF       IO1BUFF         DATA BUFFER                          0199.000
         DEF       IO2BUFF         DATA BUFFER                          0200.000
         DEF       IO3BUFF         DATA BUFFER                          0201.000
         DEF       IO2SADDR        RANDOM ACCESS ADDRESS                0202.000
         DEF       IO1COUNT        # ENTRY(S) IN IO1BUFF/IO1 TEMP. FILE 0203.000
         DEF       IO2COUNT        # ENTRY(S) IN IO2BUFF/IO2 TEMP. FILE 0204.000
         DEF       WIO2BUFF        WRITE IO2BUFF TO IO2 TEMP. FILE      0205.000
         DEF       RIO2BUFF        READ IO2 TEMP FILE INTO IO2BUFF      0206.000
         DEF       COPYSTRG        STRING COPY ROUTINE                  0207.000
         DEF       IO1BIDX         PREV/CURR ENTRY IN IO1BUFF           0208.000
         DEF       IO2BIDX         PREV/CURR ENTRY IN IO2BUFF           0209.000
         DEF       IO1SADDR        RAND. ACC. ADDR. FOR IO1 TEMP FILE   0210.000
         DEF       IO1BLEN         ADDR LAST ENTRY IN IO1BUFF           0211.000
         DEF       IO2BLEN         ADDR LAST ENTRY IN IO2BUFF           0212.000
         DEF       RIO1BUFF        READ ROUTINE FOR IO1BUFF             0213.000
         DEF       CON.IO          INTERMEDIATE ROUTINE                 0214.000
         DEF       FLAGS           BOOLEAN FLAG BITS                    0215.000
         DEF       WIO1BUFF        ROUTINE TO ADMINISTER "IO1BUFF" &    0216.000
*                                  "IO1" TEMPORARY FILE                 0217.000
         DEF       RN.NAME         WILD CARD RENAME ROUTINE             0218.000
*                                                                       0219.000
*                                                                       0220.000
*                                                                       0221.000
         SPACE                                                          0222.000
*                                                                       0223.000
*    SYSTEM MACRO CALLS FOR DEFINITIONS AND EQUATES                     0224.000
*                                                                       0225.000
         SPACE                                                          0226.000
         LIST      NOMAC,NODATA                                    *CS  0227.000
         M.EQUS                    REGISTER/SYSTEM EQUATES              0228.000
         M.DN.TEQ                  DIRECTORY ENTRY EQUATES              0229.000
         M.RR.TEQ                  RESOURCE REQUIREMENT SUMMARY EQUATES 0230.000
         M.MV.TEQ                  MOUNTED VOLUME TABLE EQUATES         0231.000
         M.CNP                     CALLER NOTIFICATION PACKAGE EQUATES  0232.000
         M.VEQUS                   GENERAL VOLUME LAYOUT EQUATES        0233.000
         M.VA.TEQ                  VOLUME ASSIGNMENT TABLE EQUATES      0234.000
         M.FCB.                    FILE CONTROL BLOCK EQUATES           0235.000
         SPACE                                                          0236.000
*                                                                       0237.000
*    LOCAL DEFINITIONS                                                  0238.000
*                                                                       0239.000
         SPACE                                                          0240.000
RD.RDFLG EQU       7W              RD FLAG HALF WORD                    0241.000
QUOTED.F EQU       31              THIS BIT IN R6 SET IF NAME QUOTED    0242.000
QUOTE.F  EQU       7               NAME ON COMMAND LINE WAS QUOTED      0243.000
REMM14   EQU       14              H.REMM ERROR CODE FOR:  RESOURCE     0244.000
REMM2    EQU       2               H.REMM ERROR CODE FOR:  SPECIFIED    0245.000
*  ACCESS MODE NOT ALLOWED                                              0246.000
*  ALREADY ALLOCATED BY THE REQUESTING TASK                             0247.000
         SPACE                                                          0248.000
         SPACE                                                          0249.000
*                                                                       0250.000
*    LOCAL STORAGE                                                      0251.000
*                                                                       0252.000
*        DATA AREA                                                      0253.000
*                                                                       0254.000
*                                                                       0255.000
*!       DATAB     C'@'            RESERVE SPACE FOR   E3RMS25A CP12311 0256.000
*!       BOUND     1D                                   CP12311 CP12311A0257.000
*!N.BLK  DATAD     C'!VOL    '                          CP12311 CP12311A0258.000
*!R.PATH REZ       18                                   E3RMS35 CP12311 0259.000
*!OL.NAMEDATAD     C'                '                  CP12311 CP12311A0260.000
*!       DATAW     C'!DIRSYST'                          CP12311 CP12311A0261.000
*!       BOUND     1D                                  E3RMS35A CP12311A0262.000
*!D.DIR  REZ       192W                                E3RMS35A CP12311A0263.000
*!N.VEC  DATAW     0                                   E3RMS35A CP12311 0264.000
*!N.VEC  GEN       8/32,24/A(PN.BLK)                    CP12311 CP12311A0265.000
*                                                                       0266.000
         BOUND     1D                                                   0267.000
         SPACE                                                          0268.000
R3.5U02A DATAD     C'3.5 U02A'     MPX REVISION 3.5U02A         CP12364 0269.000
         SPACE                                                  CP12364 0270.000
VNLBUFF  RES       VNLMXIDX        8 * 192 * 4B; VOLUME NAME LIST (VNL) 0271.000
*                                  BUFFER                               0272.000
         SPACE                                                          0273.000
IO1BUFF  RES       IO1MXIDX             8 * 192 * 4B; PROTOTYPE BUFFER  0274.000
*                                       16W PER ENTRY; 96 ENTRIES/BUFFER0275.000
         SPACE                                                          0276.000
IO3BUFF  RES       IO3MXIDX             NAME LIST BUFFER FOR DIRECTORIES0277.000
*                                       AND VOLUME NAME LIST(S)         0278.000
*                                       8 * 192 * 4B;                   0279.000
         SPACE                                                          0280.000
IO2BUFF  RES       IO2MXIDX             8 * 192 * 4B;  PROTOTYPE BUFFER 0281.000
*                                       16W PER ENTRY; 96 ENTRIES/BUFFER0282.000
         SPACE                                                          0283.000
TAPBUFF  RES       TAPMXIDX             8 * 192 * 4B; FOR TAPE OUTPUT   0284.000
         SPACE                                                          0285.000
FLAGS    RES       1W                   PROGRAM CONTROL BIT FLAGS       0286.000
         SPACE                                                          0287.000
*        32 (POSSIBLE) FLAGS                                            0288.000
READ.F   EQU       0               SET - READ DATA FROM FILE            0289.000
TERM.F   EQU       1               SET - EXACT MATCH, GET NEXT PROTO    0290.000
FIRST.F  EQU       2               SET - DON'T DO COMPARISON UPON       0291.000
*                                  VOLUME NAME AND/OR DIRECTORY NAME    0292.000
INIT1.F  EQU       3               SET - INITIALIZE BUFFER POINTERS     0293.000
INIT2.F  EQU       4               SET - INITIALIZE BUFFER POINTERS     0294.000
INIT3.F  EQU       5               SET - INITIALIZE BUFFER POINTERS     0295.000
INIT4.F  EQU       6               SET - INITIALIZE BUFFER POINTERS     0296.000
IO11ST.F EQU       7               SET - 1ST I/O HAS ALREADY BEEN DONE  0297.000
IO21ST.F EQU       8               SET - 1ST I/O HAS ALREADY BEEN DONE  0298.000
FAIL.F   EQU       9               SET - ALLOCATE/OPEN FAILED FOR A DIR.0299.000
IO3EOF.F EQU       10              SET - EOF/EOM IS EMMINANT ON NEXT I/O0300.000
IO31ST.F EQU       11              SET - 1ST I/O HAS ALREADY BEEN DONE  0301.000
INITIO1  EQU       12              SET - INITIALIZE IO1BUFF & POINTERS  0302.000
INITIO3  EQU       13              SET - INITIALIZE IO3BUFF & POINTERS  0303.000
UIO2.F   EQU       14              INDICATE TEMP FILE 2 WAS USED        0304.000
USEIO3B  EQU       15              SET - USE IO3BUFF IN WIO1BUFF RTN.   0305.000
         SPACE                                                          0306.000
*        ROUTINE JUMP TABLE                                             0307.000
PROUTINE EQU       $                                                    0308.000
         DATAW     L               GET VOLUME PROTOTYPE                 0309.000
         DATAW     M               GET DIRECTORY PROTOTYPE              0310.000
         DATAW     N               GET FILE PROTOTYPE                   0311.000
NROUTINE EQU       $                                                    0312.000
         DATAW     R               GET VOLUME NAME                      0313.000
         DATAW     S               GET DIRECTORY NAME                   0314.000
         DATAW     T               GET FILE NAME                        0315.000
MROUTINE EQU       $                                                    0316.000
         DATAW     X               PLANT MATCHED VOLUME NAME IN BUFFER  0317.000
         DATAW     Y               PLANT MATCHED DIR. NAME IN BUFFER    0318.000
         DATAW     Z               PLANT MATCHED FILE NAME IN BUFFER    0319.000
EROUTINE EQU       $                                                    0320.000
         DATAW     X1X             WRAP UP TEMP FILE I/O & SET FLAGS    0321.000
         DATAW     Y1Y             WRAP UP TEMP FILE I/O & SET FLAGS    0322.000
         DATAW     Z1Z             WRAP UP TEMP FILE I/O & SET FLAGS    0323.000
         SPACE     2                                                    0324.000
PREVVOL  RES       1W                   MVT ENTRY ADDRESS               0325.000
PREVDIR  RES       1W                   ABSOLUTE BLOCK # OF DIR. R.D.   0326.000
         SPACE     2                                                    0327.000
IO1BIDX  RES       1W                   INDEX OF NEXT VALID ENTRY IN    0328.000
*                                       "IO1BUFF"                       0329.000
IO1COUNT RES       1W                   # OF ENTRIES FOR "IO1BUFF"      0330.000
*                                       AND/OR IO1 SCRATCH FILE         0331.000
IO1SADDR RES       1W                   RANDOM ACCESS ADDRESS           0332.000
IO1BLEN  RES       1W                   LAST VALID INDEX INTO "IO1BUFF" 0333.000
*                                       FOR PARTIAL DATA TRANSFERS LESS 0334.000
*                                       THAN A FULL BUFFER.             0335.000
         SPACE                                                          0336.000
IO2BIDX  RES       1W                   INDEX OF NEXT VALID ENTRY IN    0337.000
*                                       "IO2BUFF"                       0338.000
IO2COUNT RES       1W                   # OF ENTRIES FOR "IO2BUFF"      0339.000
*                                       AND/OR IO2 SCRATCH FILE         0340.000
IO2SADDR RES       1W                   RANDOM ACCESS ADDRESS           0341.000
IO2BLEN  RES       1W                   LAST VALID INDEX INTO "IO2BUFF" 0342.000
*                                       FOR PARTIAL DATA TRANSFERS LESS 0343.000
*                                       THAN A FULL BUFFER.             0344.000
         SPACE                                                          0345.000
IO3BIDX  RES       1W                   IDX TO NEXT FREE "IO3BUFF" ENTRY0346.000
IO3COUNT RES       1W                   # OF ENTRIES FOR "IO3BUFF"      0347.000
*                                       AND/OR IO3 SCRATCH FILE         0348.000
IO3SADDR RES       1W                   RANDOM ACCESS ADDRESS           0349.000
IO3BLEN  RES       1W                   LAST VALID INDEX INTO "IO3BUFF" 0350.000
*                                       FOR PARTIAL DATA TRANSFERS LESS 0351.000
*                                       THAN A FULL BUFFER.             0352.000
         SPACE                                                          0353.000
ERR.BLK  REZ       2W                                                   0354.000
         SPACE                                                          0355.000
VNLBIDX  RES       1W                   IDX TO NEXT FREE "VNLBUFF" ENTRY0356.000
VNLCOUNT RES       1W                   # OF ENTRIES FOR "VNLBUFF"      0357.000
VNLBLEN  RES       1W                   LAST VALID INDEX INTO "VNLBUFF" 0358.000
         SPACE                                                          0359.000
RN.ERR   DATAB     C' DERIVED DESTINATION %Z NAME %Z',0                 0360.000
EXCEED16 DATAB     C'EXCEEDS 16 CHARACTERS',0                           0361.000
INVALID  DATAB     C'HAS INVALID WILDCARD USAGE',0                      0362.000
VOL      DATAB     C'VOLUME',0                                          0363.000
DIR      DATAB     C'DIRECTORY',0                                       0364.000
FIL      DATAB     C'FILE',0                                            0365.000
         SPACE                                                          0366.000
         SPACE     2                                                    0367.000
         TITLE WILD CARD RESOLUTION ROUTINE                             0368.000
         SPACE                                                          0369.000
         CSECT                                                          0370.000
         SPACE                                                          0371.000
*                                                                       0372.000
*        INPUT:    (IMPLICIT) ENTRY(S) IN THE PROTOTYPE TABLE           0373.000
*                                                                       0374.000
*        OUTPUT:   CC1 = 1  IF NO MATCHING FILE NAME(S) FOUND           0375.000
*                  CC1 = 0  IF AT LEAST ONE MATCHING NAME FOUND.        0376.000
*                           ALSO -- SORTED FILE OF PROTOTYPE ENTRY(S)   0377.000
*                           (TEMP. FILE ASSOCIATED WITH LFC "IO1")      0378.000
*                                                                       0379.000
         SPACE                                                          0380.000
FUPRESOL EQU       $                                                    0381.000
         SPACE                                                          0382.000
*                                                                       0383.000
*        BUFFER/FILE USAGE ...                                          0384.000
*                                                                       0385.000
*        VOLUME NAMES ------>  IO1BUFF                                  0386.000
*        DIRECTORY NAMES --->  IO2BUFF                                  0387.000
*        FILE NAMES -------->  IO1BUFF                                  0388.000
*        DIRECTORY DATA ---->  IO3BUFF                                  0389.000
*        VNL --------------->  VNLBUFF       VOLUME NAME LIST (VNL)     0390.000
*                                                                       0391.000
         SPACE                                                          0392.000
MAIN     EQU       $                                                    0393.000
         ANMW      R0,ADR.MASK     INITIALIZE CC'S FOR RETURN           0394.000
         PUSH                      SAVE REGS                            0395.000
         ZMW       FLAGS                INITIALIZE CONTROL FLAGS        0396.000
         ZR        R7              (VOLUME) INDEX TO ROUTINE JUMP TABLE 0397.000
         SBM       INIT1.F,FLAGS   INITIALIZE PROTO. TABLE INDEX(S)     0398.000
         SBM       READ.F,FLAGS    READ VOLUME LIST                     0399.000
         SBM       INIT2.F,FLAGS                                        0400.000
         SBM       INIT3.F,FLAGS                                        0401.000
         ZBM       IO2USE.F,FLAGBITS INITIALIZE                         0402.000
         ZMW       IO1COUNT        INITIALIZE # OF DERIVED PROTOTYPE    0403.000
*                                  ENTRIES                              0404.000
         BL        A               PRODUCES ACTUAL VOLUME NAMES         0405.000
         BS        MAI.080         BRANCH IF NO MATCHES                 0406.000
*        SORT BY VOLUME NAME                                            0407.000
         BCF       CC2,MAI.010     GO FOR INTERNAL SORT                 0408.000
*  DO EXTERNAL SORT                                                     0409.000
         LA        R2,IO1FCB       ADDRESS OF FCB FOR FILE TO BE SORTED 0410.000
         LA        R3,IO1COUNT     # OF RECORDS WRITTEN                 0411.000
         BL        SORTVOL         GO SET-UP & SORT                     0412.000
         BU        MAI.020                                              0413.000
         SPACE                                                          0414.000
MAI.010  EQU       $                                                    0415.000
*  DO INTERNAL SORT                                                     0416.000
         LA        R2,IO1BUFF      BUFFER CONTAINING ENTRY(S) TO SORT   0417.000
         LA        R3,IO1COUNT     # ENTRY(S) IN BUFFER TO SORT         0418.000
         LI        R4,PRONM.O      LENGTH OF KEY - IE., VOLUME NAME     0419.000
         BL        SORTINT         IN MEMORY SORT                       0420.000
         SPACE                                                          0421.000
MAI.020  EQU       $                                                    0422.000
         ADI       R7,1W           (DIR) INDEX TO ROUTINE JUMP TABLE    0423.000
         SBM       INIT1.F,FLAGS   INITIALIZE PROTO. TABLE INDEX(S)     0424.000
         SBM       INIT2.F,FLAGS                                        0425.000
         SBM       INIT3.F,FLAGS                                        0426.000
         ZBM       IO11ST.F,FLAGS  INITIALIZE                           0427.000
         ZBM       IO21ST.F,FLAGS  INITIALIZE                           0428.000
         ZMW       IO2COUNT        INITIALIZE                           0429.000
         BL        A                                                    0430.000
         BS        MAI.080         BRANCH IF NO MATCHES                 0431.000
*        SORT BY VOLUME NAME & DIRECTORY NAME                           0432.000
         BCF       CC2,MAI.030     GO FOR INTERNAL SORT                 0433.000
*  DO EXTERNAL SORT                                                     0434.000
         LA        R2,IO2FCB       ADDRESS OF FCB FOR FILE TO BE SORTED 0435.000
         LA        R3,IO2COUNT     # OF RECORDS WRITTEN                 0436.000
         BL        SORTDIR         GO SET-UP & SORT                     0437.000
         SBM       IO2USE.F,FLAGBITS INDICATE IO2 SCR. FILE USED        0438.000
         BU        MAI.040                                              0439.000
         SPACE                                                          0440.000
MAI.030  EQU       $                                                    0441.000
*  DO INTERNAL SORT                                                     0442.000
         LA        R2,IO2BUFF      BUFFER CONTAINING ENTRY(S) TO SORT   0443.000
         LA        R3,IO2COUNT     # ENTRY(S) IN BUFFER TO SORT         0444.000
         LI        R4,PRONM.O*2    LENGTH OF KEY - IE., VOLUME NAME &   0445.000
*                                  DIRECTORY NAME                       0446.000
         BL        SORTINT         IN MEMORY SORT                       0447.000
         SPACE                                                          0448.000
MAI.040  EQU       $                                                    0449.000
         SPACE                                                          0450.000
         TBM       DONLY.F,FLAGBITS     LOOKING ONLY FOR DIRECTORY(S) ??0451.000
         BS        MAI.EXIT        GO FOR ONLY WANT DIRECTORY(S)        0452.000
         ADI       R7,1W           (FILE) INDEX TO ROUTINE JUMP TABLE   0453.000
         ZMW       IO1COUNT        INITIALIZE ENTRY COUNT               0454.000
         ZBM       IO11ST.F,FLAGS  INITIALIZE                           0455.000
         ZBM       IO21ST.F,FLAGS   INITIALIZE                          0456.000
         SBM       READ.F,FLAGS    INITIALIZE                           0457.000
         SBM       INIT1.F,FLAGS   INITIALIZE PROTO. TABLE INDEX(S)     0458.000
         SBM       INIT2.F,FLAGS                                        0459.000
         SBM       INIT3.F,FLAGS                                        0460.000
         BL        A                                                    0461.000
         BS        MAI.080         BRANCH IF NO MATCHES                 0462.000
*        SORT BY VOLUME NAME & DIRECTORY NAME & FILE NAME               0463.000
         BCF       CC2,MAI.050     GO FOR INTERNAL SORT                 0464.000
*  DO EXTERNAL SORT                                                     0465.000
         LA        R2,IO1FCB       ADDRESS OF FCB FOR FILE TO BE SORTED 0466.000
         LA        R3,IO1COUNT     # OF RECORDS WRITTEN                 0467.000
         BL        SORTFIL         GO SET-UP & SORT                     0468.000
         SBM       IO1USE.F,FLAGBITS    INDICATE SCRATCH FILE WAS USED  0469.000
         BU        MAI.060                                              0470.000
         SPACE                                                          0471.000
MAI.050  EQU       $                                                    0472.000
*  DO INTERNAL SORT                                                     0473.000
         LA        R2,IO1BUFF      BUFFER CONTAINING ENTRY(S) TO SORT   0474.000
         LA        R3,IO1COUNT     # ENTRY(S) IN BUFFER TO SORT         0475.000
         LI        R4,PRONM.O*3    LENGTH OF KEY - IE., VOLUME NAME &   0476.000
*                                  DIRECTORY NAME & FILE NAME           0477.000
         BL        SORTINT         IN MEMORY SORT                       0478.000
         SPACE                                                          0479.000
MAI.060  EQU       $                                                    0480.000
         ZBM       IO11ST.F,FLAGS  INITIALIZE FOR READER                0481.000
         SPACE                                                          0482.000
*                                                                       0483.000
*             NEED TO ELIMINATE DUPLICATE ENTRIES !!!                   0484.000
*                                                                       0485.000
         SPACE                                                          0486.000
MAI.EXIT EQU       $                                                    0487.000
         ZBM       IO3.F,FLAGBITS  LFC "IO3" IN USE ???                 0488.000
         BNS       MAI.EX10        GO FOR LFC "IO3" NOT IN USE          0489.000
         LA        R5,IO3FCB       FCB ADDRESS                          0490.000
         BL        X.DALC          DEALLOCATE RESOURCE ON LFC "IO3"     0491.000
         BNS       MAI.EX10        GO FOR SUCCESSFUL DEALLOCATION       0492.000
*        PROCESS DEALLOCATION ERRORS                                    0493.000
*                                                                       0494.000
         LA        R6,GEN.M006     ERROR MESSAGE                        0495.000
*        R7 HAS MODULE #/ERROR #  RETURNED FROM SYSTEM SERVICE          0496.000
         BL        FUPABORT        ABORT ROUTINE                        0497.000
         SPACE     2                                                    0498.000
MAI.EX10 EQU       $                                                    0499.000
         POP                       RESTORE REGS                         0500.000
         TRSW      R0              RETURN                               0501.000
         SPACE     2                                                    0502.000
MAI.080  EQU       $                                                    0503.000
         SBM       CC1,0W,X1       INDICATE NO MATCHES (OF PATHNAMES)   0504.000
         BU        MAI.EXIT        GO TO ROUTINE EXIT POINT             0505.000
MAI.END  EQU       $                                                    0506.000
         SPACE     5                                                    0507.000
*++                                                                     0508.000
*        PROCESS A PASS OF "MAIN"                                       0509.000
*        INPUT:    R7 = INDEX TO ROUTINE JUMP TABLE                     0510.000
*                                                                       0511.000
*-                                                                      0512.000
         SPACE                                                          0513.000
A        EQU       $                                                    0514.000
         ANMW      R0,ADR.MASK          INITIALIZE CC'S FOR RETURN      0515.000
         PUSH                           SAVE REGS                       0516.000
A.005    TRR       R7,R2                DITTO ROUTINE JUMP TABLE INDEX  0517.000
         BL        *PROUTINE,X2         GET A PROTOTYPE                 0518.000
*                                                                       0519.000
*        ROUTINE EXIT POINT                                             0520.000
*                                                                       0521.000
         BS        *EROUTINE,X2         BRANCH WHEN PROTOTYPES EXHAUSTED0522.000
*                                                                       0523.000
         ZBM       FIRST.F,FLAGS        FIRST PROTOTYPE ?               0524.000
         BS        A.030                YES - SKIP PROTOTYPE COMPARISON 0525.000
         TRR       R7,R7                DEALING WITH VOLUME NAME PROTOS?0526.000
         BZ        A.020                YES - DON'T SET READ FLAG       0527.000
*                                       IE., ONLY ONE VOLUME LIST       0528.000
         BL        COMPAREP             COMPARE CURRENT PROTO WITH      0529.000
*                                       PREVIOUS, NEED TO READ IN NEW   0530.000
*                                       DIRECTORY IF PROTOS DIFFER      0531.000
         BNS       A.020                BRANCH IF VOL & DIR SAME        0532.000
         SBM       READ.F,FLAGS         READ IN NEW DIRECTORY           0533.000
         SPACE                                                          0534.000
A.020    SBM       INIT2.F,FLAGS        SET INDEX TO 1ST ENTRY OF BUFFER0535.000
A.030    TRR       R7,R2                DITTO JUMP TABLE INDEX          0536.000
         BL        *NROUTINE,X2         GET A NAME                      0537.000
         BS        A.005                BRANCH IF NAMES EXHAUSTED       0538.000
         BL        MATCHNAM             COMPARE PROTO AND NAME          0539.000
         BS        A.030                BRANCH FOR NO MATCH             0540.000
         BCT       CC2,A.080            BRANCH FOR WILD CARD MATCH      0541.000
         SBM       TERM.F,FLAGS         NON-WILD CARD MATCH -- NO MORE  0542.000
*                                       MATCHES POSSIBLE, GET NEXT PROTO0543.000
A.080    XCR       R7,R3                GET JUMP TABLE IDX INTO IDX REG 0544.000
         BL        *MROUTINE,X3         PROCESS MATCHED NAME            0545.000
         ZBM       TERM.F,FLAGS         WAS IT WILD CARD MATCH ?        0546.000
         BNS       A.030                YES - BRANCH & GET NEXT NAME    0547.000
         BU        A.005                NO - GET NEXT PROTOTYPE         0548.000
         SPACE     2                                                    0549.000
*++                                                                     0550.000
*        COMPAREP -- GOAL IS TO ALLOCATE A DIRECTORY ONLY ONCE, EVEN    0551.000
*        THOUGH IT MIGHT HAVE TO BE READ MULTIPLE TIMES IF THE ENTIRE   0552.000
*        DIRECTORY WILL NOT FIT INTO THE (DIRECTORY) BUFFER.            0553.000
*                                                                       0554.000
*        TWO CASES:                                                     0555.000
*                                                                       0556.000
*        1).  GET DIRECTORY NAME -- COMPARE VOLUME NAMES (MVT ENTRY     0557.000
*             ADDRESSES) BECAUSE WANT TO LOOK FOR DIRECTORY NAME IN     0558.000
*             THE APPROPRIATE ROOT DIRECTORY.                           0559.000
*                                                                       0560.000
*        2).  GET FILE NAME -- COMPARE VOLUME NAMES (MVT ENTRY          0561.000
*             ADDRESSES) AND THEN COMPARE DIRECTORY NAMES (RES. DESCR.  0562.000
*             BLOCK #) BECAUSE WANT USER DIRECTORY ON APPROPRIATE VOLUME0563.000
*                                                                       0564.000
*        INPUT:    R7 = INDEX INTO ROUTINE JUMP TABLE                   0565.000
*                  (IMPLICIT)  "FAIL.F" FLAG IN VARIABLE "FLAGS"        0566.000
*        OUTPUT:   CC1 = 1 IF CURRENT & PREVIOUS VOLUME NAME AND/OR     0567.000
*                          DIRECTORY NAME NOT EQUAL                     0568.000
*                  CC1 = 0 CURRENT & PREVIOUS VOLUME/DIRECTORY NAME EQUA0569.000
*                  CC2 = 1 IF DIRECTORY NAME NOT EQUAL, BUT VOLUME NAME 0570.000
*                          EQUAL                                        0571.000
*                  CC2 = 0 OTHERWISE                                    0572.000
*                                                                       0573.000
*        ------->  OR  <-------                                         0574.000
*                                                                       0575.000
*                  RETURN TO GET NEXT PROTOTYPE IF NAMES ARE SAME       0576.000
*                  AND ALLOCATION/OPEN HAS ALREADY FAILED ONCE !!!      0577.000
*                                                                       0578.000
*-                                                                      0579.000
         SPACE                                                          0580.000
COMPAREP EQU       $                                                    0581.000
         ANMW      R0,ADR.MASK          INITIALIZE CC'S FOR RETURN      0582.000
         PUSH                           SAVE REGS                       0583.000
         CI        R7,1W           RESOLVING DIRECTORY NAMES ???        0584.000
         BEQ       COMP.010        BRANCH FOR DIRECTORY                 0585.000
         LW        R2,IO2BIDX      ADDR OF GETFIL PROTOTYPE             0586.000
         BU        COMP.020                                             0587.000
COMP.010 LW        R2,IO1BIDX      ADDR OF GETDIR PROTOTYPE             0588.000
COMP.020 EQU       $                                                    0589.000
         LW        R4,PROFMV.O,X2  MVT ENTRY ADDRESS FOR VOLUME (NAME)  0590.000
*                                  OF CURRENT ENTRY                     0591.000
         CAMW      R4,PREVVOL      CURRENT = PREVIOUS ???               0592.000
         BNE       COMP.080        BRANCH IF VOLUME NAMES NOT EQUAL     0593.000
         CI        R7,1W           RESOLVING DIRECTORY NAMES ???        0594.000
         BNE       COMP.030        BRANCH IF RESOLVING FILE NAMES       0595.000
*        SAME ROOT DIRECTORY                                            0596.000
         TBM       FAIL.F,FLAGS    ALLOC/OPEN FAILED FOR THIS DIRECTORY?0597.000
         BNS       COMP.090        DIR(S) SAME; ALLOC/OPEN SUCCESSFUL   0598.000
         BU        COMP.100        DIR(S) SAME; ALLOC/OPEN FAILED       0599.000
COMP.030 EQU       $               ROOT DIR(S) SAME; NOW CHECK USER DIR 0600.000
         TBM       FAIL.F,FLAGS    ALLOC/OPEN FAILED ???                0601.000
         BS        COMP.110        BRANCH IF FAILED                     0602.000
         LW        R4,PROFRD.O,X2  DIRECTORY RES. DESCR. BLOCK #        0603.000
         CAMW      R4,PREVDIR      CURRENT = PREVIOUS ???               0604.000
         BEQ       COMP.090        BRANCH IF EQUAL, VOL & DIR BOTH =    0605.000
COMP.070 SBM       CC2,0W,X1       DIR. NAMES NOT = ; VOL NAMES =       0606.000
COMP.080 SBM       CC1,0W,X1       INDICATE NAME(S) NOT SAME            0607.000
COMP.090 ZBM       FAIL.F,FLAGS    RESET ALLOC/OPEN FAILURE FLAG        0608.000
         POP                            RESTORE REGS                    0609.000
         TRSW      R0                   RETURN                          0610.000
         SPACE     2                                                    0611.000
COMP.100 LA        R0,A.005        NEW RETURN ADDRESS                   0612.000
         STW       R0,0W,X1        PLANT ON STACK                       0613.000
         BU        COMP.090        GO TO ROUTINE EXIT POINT             0614.000
         SPACE     2                                                    0615.000
COMP.110 LW        R4,PROFRD.O,X2  DIRECTORY RES. DESCR. BLOCK #        0616.000
         CAMW      R4,PREVDIR      CURRENT = PREVIOUS ???               0617.000
         BNE       COMP.070                                             0618.000
         BU        COMP.100                                             0619.000
         SPACE     5                                                    0620.000
*++                                                                     0621.000
*        GET VOLUME PROTOTYPE                                           0622.000
*                                                                       0623.000
*  VOLUME NAME PROTOTYPES ARE ALWAYS OBTAINED FROM THE MEMORY RESIDENT  0624.000
*  PROTOTYPE TABLE.  THESE ARE THE VOLUME NAMES WHICH WERE ACTUALLLY    0625.000
*  EXPLICITLY ENTERED ON THE COMMAND LINE OR ARE IMPLICIT DEFAULT       0626.000
*  WORKING VOLUME NAMES.                                                0627.000
*                                                                       0628.000
*        INPUT:    BIT FLAG IN WORD VARIABLE "FLAGS"                    0629.000
*        OUTPUT:   R3 = ADDRESS OF PROTOTYPE                            0630.000
*                  R5 = LENGTH (IN BYTES) OF PROTOTYPE                  0631.000
*                  R6, # 0  IF NAME QUOTED,                             0632.000
*                  R6, = 0  IF NAME NOT QUOTED                          0633.000
*                  CC1 = 1 IF END, OTHERWISE CC1 = 0                    0634.000
*--                                                                     0635.000
         SPACE                                                          0636.000
L        EQU       $                                                    0637.000
         ANMW      R0,ADR.MASK          INITIALIZE CC'S FOR RETURN      0638.000
         ZR        R6                   INITIALIZE                      0639.000
         PUSH                           SAVE REGS                       0640.000
         ZBM       INIT1.F,FLAGS        RESET INDEX INTO PROTO. TABLE ? 0641.000
         BNS       L.010                NO                              0642.000
         LA        R0,PROTOTYP          INITIALIZE POINTER TO TABLE     0643.000
         SUI       R0,PROSZ.O                                           0644.000
         STW       R0,PRONEXT                                           0645.000
         LW        R5,PRONUM            # PROTOTYPES (ZERO BIAS)        0646.000
         STW       R5,PROLEN            SAVE                            0647.000
L.010    LI        R5,-1                DECREMENT COUNT OF REMAINING    0648.000
         ARMW      R5,PROLEN            # OF PROTOTYPES                 0649.000
         BNN       L.020                BRANCH IF PROTOTYPE REMAINING   0650.000
         SBM       CC1,0W,X1            AT END INDICATOR (R0 ON STACK)  0651.000
         BU        L.EXIT               GO TO ROUTINE EXIT POINT        0652.000
L.020    LW        R2,PRONEXT           POINTER INTO PROTOTYPE TABLE    0653.000
         ADI       R2,PROSZ.O           POINTER TO CURRENT ENTRY        0654.000
         STW       R2,PRONEXT           SAVE UPDATED POINTER            0655.000
         LB        R5,PROFVL.O,X2            LENGTH OF VOL PROTO.       0656.000
         TBM       QUOTE.F,PROFVF.O,X2  WAS NAME ON COMMAND LINE QUOTED 0657.000
         BNS       L.030           GO FOR NAME NOT QUOTED               0658.000
         SBM       QUOTED.F,6W,X1       INDICATE VOLUME NAME WAS QUOTED 0659.000
L.030    STW       R5,5W,X1             RETURN R5 (PLANT ON STACK)      0660.000
         LA        R3,PROFVN.O,X2            ADDR. OF VOL. PROTO. FIELD 0661.000
         STW       R3,3W,X1             RETURN R3 (PLANT ON STACK)      0662.000
L.EXIT   POP                            RESTORE REGS                    0663.000
         TRSW      R0                   RETURN                          0664.000
L.END    EQU       $                    END OF ROUTINE                  0665.000
         SPACE     2                                                    0666.000
*++                                                                     0667.000
*        GET DIRECTORY PROTOTYPE                                        0668.000
*        INPUT:    BIT FLAG IN WORD VARIABLE "FLAGS"                    0669.000
*        OUTPUT:   R3 = ADDRESS OF PROTOTYPE                            0670.000
*                  R5 = LENGTH (IN BYTES) OF PROTOTYPE                  0671.000
*                  R6, # 0  IF NAME QUOTED,                             0672.000
*                  R6, = 0  IF NAME NOT QUOTED                          0673.000
*                  CC1 = 1 IF END, OTHERWISE CC1 = 0                    0674.000
*                                                                       0675.000
*        END OF PROTOTYPE ENTRIES WILL BE DETERMINED BY VARIABLE        0676.000
*        "IO1COUNT".  EOF UPON READ SHOULD NEVER OCCUR IF THE TEMP FILE 0677.000
*        WAS USED TO HOLD ENTRY(S) IN EXCESS OF THE # THAT WOULD        0678.000
*        FIT IN THE BUFFER "IO1BUFF".                                   0679.000
*        THE VARIABLE "IO1BLEN" IS USED ONLY TO INDICATE WHEN TO READ   0680.000
*        ANOTHER BUFFER OF ENTRY(S).                                    0681.000
*                                                                       0682.000
*-                                                                      0683.000
         SPACE                                                          0684.000
M        EQU       $                                                    0685.000
         ANMW      R0,ADR.MASK          INITIALIZE CC'S FOR RETURN      0686.000
         ZR        R6                   INITIALIZE                      0687.000
         PUSH                           SAVE REGS                       0688.000
         LI        R0,-1                DECREMENT COUNT OF REMAINING    0689.000
         ARMW      R0,IO1COUNT          ENTRIES                         0690.000
         BNN       M.002                BRANCH IF HAVE ENTRY            0691.000
         SBM       CC1,0W,X1            INDICATE "END" FOR RETURN       0692.000
         BU        M.EXIT               GO TO ROUTINE EXIT POINT        0693.000
M.002    EQU       $                                                    0694.000
         ZBM       INIT1.F,FLAGS        RESET INDEX INTO PROTO. TABLE ? 0695.000
         BNS       M.005                NO                              0696.000
         SBM       FIRST.F,FLAGS        INDICATE FIRST PROTOTYPE        0697.000
         BU        M.010                                                0698.000
M.005    LW        R2,IO1BIDX           INDEX TO 1ST AVAILABLE ENTRY    0699.000
         LW        R0,PROFMV.O,X2       MVT ENTRY ADDRESS               0700.000
         STW       R0,PREVVOL           SAVE FOR LATER COMPARISON       0701.000
         ADI       R2,PROSZ.O           POINTER TO CURRENT ENTRY        0702.000
         CAMW      R2,IO1BLEN           PAST LAST VALID INDEX ?         0703.000
         BLT       M.040                BRANCH IF NOT                   0704.000
M.010    TBM       IO11ST.F,FLAGS       SCRATCH FILE #1 USED            0705.000
         BNS       M.020                BRANCH IF NOT                   0706.000
         BL        RIO1BUFF             READ BUFFER FULL OF ENTRIES     0707.000
M.020    LA        R2,IO1BUFF           INITIALIZE POINTER TO BUFFER    0708.000
         LI        R0,IO1MXIDX          LENGTH OF BUFFER                0709.000
         ADR       R2,R0                ABSOLUTE ADDR -- END OF BUFFER  0710.000
         STW       R0,IO1BLEN           SAVE FOR COMPARISONS            0711.000
M.040    EQU       $                                                    0712.000
         STW       R2,IO1BIDX           SAVE UPDATED POINTER            0713.000
         LW        R2,PROFPA.O,X2       PROTOTYPE ENTRY ADDRESS         0714.000
         TBM       EXPSYSVN,FLAGBITS    EXPLICIT SYSTEM VOL?    E3RMS35B0715.000
         BNS       M.045                NO - SPECIFIED VOLUME   E3RMS35B0716.000
         TBM       C.NOSVOL,C.BIT       NO SYSTEM VOLUME NODE?  E3RMS35B0717.000
         BNS       M.045                NO - CONTINUE           E3RMS35B0718.000
         TBM       C.RMS3.1,C.RMS       RMSS3.1 OR LATER?       E3RMS35B0719.000
         BNS       M.045                NO - KEEP OLD FUNCT.    E3RMS35B0720.000
         LD        R6,SYSTEM            EXPLICIT SYSTEM DIR?    E3RMS35B0721.000
         CAMD      R6,PROFDN.O,X2       COMPARE TO PROTOTYPE    E3RMS35B0722.000
         BNE       M.045                SPECIFIED DIRECTORY     E3RMS35B0723.000
         LD        R6,BLANKS            2ND HALF                E3RMS35B0724.000
         CAMD      R6,PROFDN.O+1D,X2    JUST TO BE SURE         E3RMS35B0725.000
         BNE       M.045                NOT EXPLICIT SYSTEM DIR E3RMS35B0726.000
         LA        R3,SDIR              ADDR OF SYS DIR NAME    E3RMS35B0727.000
         LD        R6,0D,X3             GET REAL SYS DIR NAME   E3RMS35B0728.000
         STD       R6,PROFDN.O,X2       STORE IN PROTOTYPE      E3RMS35B0729.000
         LD        R6,1D,X3             2ND HALF                E3RMS35B0730.000
         STD       R6,PROFDN.O+1D,X2    STORE AWAY              E3RMS35B0731.000
         LB        R6,SDLENGTH          GET DIR NAME LENGTH     E3RMS35B0732.000
         STB       R6,PROFDL.O,X2       STORE IN PROTOTYPE      E3RMS35B0733.000
M.045    CEQU      $                                            E3RMS35B0734.000
         LB        R5,PROFDL.O,X2            DIRECTORY PROTO. LENGTH    0735.000
         TBM       QUOTE.F,PROFDF.O,X2  DIRECTORY NAME ON COMMAND LINE  0736.000
*                                       QUOTED ???                      0737.000
         BNS       M.050           GO FOR DIRECTORY NAME NOT QUOTED     0738.000
         SBM       QUOTED.F,6W,X1       INDICATE DIR. NAME QUOTED       0739.000
M.050    LA        R3,PROFDN.O,X2            ADDR OF DIRECTORY PROTO.   0740.000
         STW       R3,3W,X1             RETURN R3 (PLANT ON STACK)      0741.000
         STW       R5,5W,X1             RETURN R5 (PLANT ON STACK)      0742.000
M.EXIT   POP                            RESTORE REGS                    0743.000
         TRSW      R0                   RETURN                          0744.000
M.END    EQU       $                    END OF ROUTINE                  0745.000
         SPACE     5                                                    0746.000
*++                                                                     0747.000
*        GET FILE PROTOTYPE                                             0748.000
*        INPUT:    BIT FLAG IN WORD VARIABLE "FLAGS"                    0749.000
*        OUTPUT:   R3 = ADDRESS OF PROTOTYPE                            0750.000
*                  R5 = LENGTH (IN BYTES) OF PROTOTYPE                  0751.000
*                  R6, # 0  IF NAME QUOTED,                             0752.000
*                  R6, = 0  IF NAME NOT QUOTED                          0753.000
*                  CC1 = 1 IF END, OTHERWISE CC1 = 0                    0754.000
*                                                                       0755.000
*        END OF PROTOTYPE ENTRIES WILL BE DETERMINED BY VARIABLE        0756.000
*        "IO2COUNT".  EOF UPON READ SHOULD NEVER OCCUR IF THE TEMP FILE 0757.000
*        WAS USED TO HOLD ENTRY(S) IN EXCESS OF THE # THAT WOULD        0758.000
*        FIT IN THE BUFFER "IO2BUFF".                                   0759.000
*        THE VARIABLE "IO2BLEN" IS USED ONLY TO INDICATE WHEN TO READ   0760.000
*        ANOTHER BUFFER OF ENTRY(S).                                    0761.000
*                                                                       0762.000
*-                                                                      0763.000
         SPACE                                                          0764.000
N        EQU       $                                                    0765.000
         ANMW      R0,ADR.MASK          INITIALIZE CC'S FOR RETURN      0766.000
         ZR        R6                   INITIALIZE                      0767.000
         PUSH                           SAVE REGS                       0768.000
         LI        R0,-1                DECREMENT COUNT OF REMAINING    0769.000
         ARMW      R0,IO2COUNT          ENTRIES                         0770.000
         BNN       N.010                BRANCH IF HAVE ENTRY            0771.000
         SBM       CC1,0W,X1            INDICATE "END" FOR RETURN       0772.000
         BU        N.EXIT               GO TO ROUTINE EXIT POINT        0773.000
N.010    EQU       $                                                    0774.000
         ZBM       INIT1.F,FLAGS        RESET INDEX INTO PROTO. TABLE ? 0775.000
         BNS       N.020                NO                              0776.000
         SBM       FIRST.F,FLAGS        INDICATE FIRST PROTOTYPE        0777.000
         BU        N.030                                                0778.000
N.020    LW        R2,IO2BIDX           INDEX TO 1ST AVAILABLE ENTRY    0779.000
         LW        R0,PROFMV.O,X2       MVT ENTRY ADDRESS               0780.000
         STW       R0,PREVVOL           SAVE FOR LATER COMPARISON       0781.000
         LW        R0,PROFRD.O,X2       DIR. RES. DESCR. BLOCK #        0782.000
         STW       R0,PREVDIR           SAVE FOR LATER COMPARISON       0783.000
         ADI       R2,PROSZ.O           POINTER TO CURRENT ENTRY        0784.000
         CAMW      R2,IO2BLEN           PAST LAST VALID INDEX ?         0785.000
         BLT       N.050                BRANCH IF NOT                   0786.000
N.030    TBM       UIO2.F,FLAGS         SCRATCH FILE #2 USED  ???       0787.000
         BNS       N.040                GO FOR NOT USED                 0788.000
         BL        RIO2BUFF             READ BUFFER FULL OF ENTRIES     0789.000
N.040    LA        R2,IO2BUFF           INITIALIZE POINTER TO BUFFER    0790.000
         LI        R0,IO2MXIDX          LENGTH OF BUFFER                0791.000
         ADR       R2,R0                ABSOLUTE ADDR -- END OF BUFFER  0792.000
         STW       R0,IO2BLEN           SAVE FOR COMPARISONS            0793.000
N.050    EQU       $                                                    0794.000
         STW       R2,IO2BIDX           SAVE UPDATED POINTER            0795.000
         LW        R2,PROFPA.O,X2       PROTOTYPE ENTRY ADDRESS         0796.000
         LB        R5,PROFFL.O,X2  FILE PROTOTYPE NAME LENGTH           0797.000
         TBM       QUOTE.F,PROFFF.O,X2  FILE NAME SPECIFIED ON          0798.000
*                                       COMMAND LINE QUOTED ???         0799.000
         BNS       N.060           GO FOR FILE NAME NOT QUOTED          0800.000
         SBM       QUOTED.F,6W,X1       INDICATE DIR. NAME QUOTED       0801.000
N.060    LA        R3,PROFFN.O,X2  ADDR. OF FILE PROTOTYPE ENTRY        0802.000
         STW       R3,3W,X1             RETURN R3 (PLANT ON STACK)      0803.000
         STW       R5,5W,X1             RETURN R5 (PLANT ON STACK)      0804.000
N.EXIT   POP                            RESTORE REGS                    0805.000
         TRSW      R0                   RETURN                          0806.000
N.END    EQU       $                    END OF ROUTINE                  0807.000
         SPACE     5                                                    0808.000
*++                                                                     0809.000
*        GET VOLUME NAME                                                0810.000
*        *** ASSUMPTION ***  ALL OF VOLUME NAME LIST WILL FIT INTO      0811.000
*        BUFFER "VNLBUFF" AT ONE TIME                                   0812.000
*        INPUT:    BIT FLAGS IN WORD VARIABLE "FLAGS"                   0813.000
*        OUTPUT:   R2 = ADDRESS OF A VOLUME NAME                        0814.000
*                  R4 = LENGTH (IN BYTES) OF VOLUME NAME                0815.000
*                  CC1 = 1 IF END, OTHERWISE CC1 = 0                    0816.000
*-                                                                      0817.000
         SPACE                                                          0818.000
R        EQU       $                                                    0819.000
         ANMW      R0,ADR.MASK          INITIALIZE CC'S FOR RETURN      0820.000
         PUSH                           SAVE REGS                       0821.000
         TBM       F.VNL,FLAGBITS  HAS VOLUME NAME LIST BEEN CREATED ???0822.000
         BS        R.010           GO FOR ALREADY EXISTS                0823.000
         BL        GETVLIST             YES - READ IN VOLUME NAME LIST  0824.000
R.010    ZBM       INIT2.F,FLAGS        RESET IDX INTO VOL NAME LIST ?  0825.000
         BNS       R.020                NO                              0826.000
         LA        R0,VNLBUFF-VNLSZ.O   INITIALIZE POINTER INTO TABLE   0827.000
         STW       R0,VNLBIDX           SAVE POINTER                    0828.000
R.020    LW        R3,VNLBIDX           IDX INTO VOL NAME LIST          0829.000
         ADI       R3,VNLSZ.O           POINTER TO CURRENT ENTRY        0830.000
         CAMW      R3,VNLBLEN           PAST LAST VALID INDEX ???       0831.000
         BLT       R.030                BRANCH IF NOT                   0832.000
         SBM       CC1,0W,X1            AT END INDICATOR (R0 ON STACK)  0833.000
         BU        R.EXIT               GO TO ROUTINE EXIT POINT        0834.000
R.030    STW       R3,VNLBIDX           SAVE UPDATED POINTER            0835.000
         LA        R2,VNLVN.O,X3        ADDRESS OF VOLUME NAME          0836.000
         LW        R4,VNLVL.O,X3        LENGTH OF VOLUME NAME           0837.000
         STW       R2,2W,X1             RETURN R2 (PLANT ON STACK)      0838.000
         STW       R4,4W,X1             RETURN R4 (PLANT ON STACK)      0839.000
R.EXIT   POP                            RESTORE REGS                    0840.000
         TRSW      R0                   RETURN                          0841.000
R.END    EQU       $                                                    0842.000
         TITLE     GETVLIST  --  CREATE THE VOLUME NAME LIST            0843.000
*+                                                                      0844.000
*  GETVLIST  --                                                         0845.000
*        PREPARE A VOLUME NAME LIST (VNL) BASED ON INFORMATION          0846.000
*        CONTAINED IN THE MVT & VAT.                   THE VNL WILL     0847.000
*        BE BUILT IN BUFFER "VNLBUFF".  EACH ENTRY HAS A 4W FIXED       0848.000
*        LENGTH FIELD CONTAINING THE VOLUME NAME  &  A 1W LENGTH        0849.000
*        INDICATOR  &  1W CONTAINING THE MVT ENTRY ADDRESS FOR          0850.000
*        THE NAMED VOLUME.  EACH VNL ENTRY IS 8W LONG.                  0851.000
*                                                                       0852.000
*        *** ASSUMPTION ***  ALL OF VOLUME NAME LIST WILL FIT INTO      0853.000
*        BUFFER AT ONE TIME.  192 VNL ENTRIES WILL FIT INTO VNLBUFF !!! 0854.000
*                                                                       0855.000
*        THE VNL IS USED FOR MATCHING WILDCARD VOLUME NAMES AND         0856.000
*        TO DETERMINE IF USER EXPLICITLY STATED VOLUME NAME(S) ACTUALLY 0857.000
*        EXIST & THE USER HAS SOME KIND OF ACCESS TO THESE VOLUME(S)    0858.000
*        BASED UPON THE EXISTENCE OF VAT ENTRY(S) IN THE TSA.           0859.000
*                                                                       0860.000
*-                                                                      0861.000
         SPACE                                                          0862.000
GETVLIST EQU       $                                                    0863.000
         PUSH                      SAVE REGS                            0864.000
         SBM       F.VNL,FLAGBITS  VOLUME NAME LIST NOW EXISTS          0865.000
*!       LW        R2,C.MVTA       MOUNTED VOLUME TABLE ADDRESS E3RMS35 0866.000
*!       LNH       R5,C.MVTN       # MVT ENTRY(S) POSSIBLE, ALT E3RMS35 0867.000
*                                  ALL MAY NOT BE ACTIVE                0868.000
         LA        R3,VNLBUFF      INITIALIZE POINTER TO VNL BUFFER     0869.000
         STW       R3,VNLBIDX      ADDRESS OF 1ST ENTRY POSITION        0870.000
         TRR       R3,R0           DITTO                                0871.000
         ADI       R0,VNLMXIDX     (PAST) LAST ENTRY ADDRESS            0872.000
         STW       R0,VNLBLEN      (PAST) LAST VALID ENTRY ADDRESS      0873.000
         ZMW       VNLCOUNT        INITIALIZE VNL COUNT                 0874.000
*                                                                       0875.000
*  MAKE VNL ENTRIES FOR THE SYSTEM VOLUME AND ALL PUBLIC VOLUMES        0876.000
*                                                                       0877.000
GETV.010 EQU       $                                                    0878.000
         M.OSREV                   GET MPX REVISION LEVEL       CP12364 0879.000
         CAMD      R6,R3.5U02A     MPX3.5U02A OR LATER?         CP12364 0880.000
         BLT       GETV.031        NO - CANNOT USE M.LOGMVT     CP12364 0881.000
         ZR        R5              INDEX FOR M.LOGMVT           E3RMS35 0882.000
         LA        R2,MVTE.BUF     BUFFER TO HOLD MVT ENTRY     E3RMS35 0883.000
GETV.015 CEQU      $                                            E3RMS35 0884.000
         SVC2.4D                   H.REMM,32 - M.LOGMVT         E3RMS35 0885.000
         BNS       GETV.018        SUCCESSFULLY COPIED MVTE     E3RMS35 0886.000
         LA        R7,GEN.M034     M.LOGMVT ERROR               E3RMS35 0887.000
         BL        FUPABRT3        ABORT                        E3RMS35 0888.000
GETV.018 CEQU      $                                            E3RMS35 0889.000
         CI        R5,0            REACHED END OF MVT?          E3RMS35 0890.000
         BEQ       GETV.035        IF SO, GO ON                 E3RMS35 0891.000
         TBM       MV.ACTV,MV.FLAGS,X2  IS ENTRY ACTIVE ???             0892.000
         BNS       GETV.030        GO FOR INACTIVE ENTRY                0893.000
         TBM       MV.PUBLC,MV.FLAGS,X2  IS IT A PUBLIC VOLUME ???      0894.000
         BS        GETV.020        GO FOR PUBLIC VOLUME                 0895.000
         TBM       MV.SYS,MV.FLAGS,X2   IS IT THE SYSTEM VOLUME ???     0896.000
         BNS       GETV.030        GO FOR NOT THE SYSTEM VOLUME         0897.000
GETV.020 BL        MAKEVNLE        CREATE A VOLUME NAME LIST ENTRY      0898.000
*!TV.030 ADI       R2,MV.SIZE      NEXT MVT ENTRY               E3RMS35 0899.000
*!       BIB       R5,GETV.010     LOOP TIL DONE                E3RMS35 0900.000
GETV.030 CEQU      $               NEXT MVT ENTRY               E3RMS35 0901.000
         BU        GETV.015        LOOP UNTIL END OF MVT        E3RMS35 0902.000
*                                                               CP12364 0903.000
* WE CANNOT USE M.LOGMVT BECAUSE THE OS REV DOES NOT SUPPORT IT CP12364 0904.000
*                                                               CP12364 0905.000
GETV.031 CEQU      $                                            CP12364 0906.000
         LW        R2,C.MVTA       MOUNTED VOLUME TABLE ADDRESS CP12364 0907.000
         LNH       R5,C.MVTN       # MVT ENTRY(S) POSSIBLE      CP12364 0908.000
         BZ        GETV.035        IF NONE, WE ARE FINISHED     CP12364 0909.000
GETV.032 CEQU      $                                            CP12364 0910.000
         TBM       MV.ACTV,MV.FLAGS,X2  IS ENTRY ACTIVE ???     CP12364 0911.000
         BNS       GETV.034        GO FOR INACTIVE ENTRY        CP12364 0912.000
         TBM       MV.PUBLC,MV.FLAGS,X2  IS IT A PUBLIC VOLUME ?CP12364 0913.000
         BS        GETV.033        GO FOR PUBLIC VOLUME         CP12364 0914.000
         TBM       MV.SYS,MV.FLAGS,X2   IS IT THE SYSTEM VOLUME CP12364 0915.000
         BNS       GETV.034        GO FOR NOT THE SYSTEM VOLUME CP12364 0916.000
GETV.033 BL        MAKEVNLE        CREATE A VOL NAME LIST ENTRY CP12364 0917.000
GETV.034 ADI       R2,MV.SIZE      NEXT MVT ENTRY               CP12364 0918.000
         BIB       R5,GETV.032     LOOP TIL DONE                CP12364 0919.000
GETV.035 CEQU      $               FINISHED MVT                 E3RMS35 0920.000
*                                                                       0921.000
*  MAKE VNL ENTRYS FOR ALL EXPLICITLY MOUNTED VOLUMES, IE., THOSE FOR   0922.000
*  WHICH VAT ENTRYS EXIST                                               0923.000
*                                                                       0924.000
         LW        R4,ADR.MASK     TO MASK MVT ADDR IN VAT ENTRY        0925.000
         LW        R3,C.TSAD       TSA ADDRESS                          0926.000
         LNB       R5,T.VATN,X3    # VAT ENTRY(S)                       0927.000
         BZ        GETV.060        GO IF NO VAT ENTRY(S)                0928.000
         LW        R3,T.VATA,X3    VAT (AREA IN TSA) ADDRESS            0929.000
GETV.040 EQU       $                                                    0930.000
         TBM       VA.AVAIL,VA.ACCS,X3  IS ENTRY ACTIVE ???             0931.000
         BS        GETV.050        GO FOR INACTIVE ENTRY                0932.000
         LMW       R2,VA.MVTA,X3   MVT ENTRY ADDRESS                    0933.000
         BL        MAKEVNLE        MAKE A VNL ENTRY                     0934.000
GETV.050 EQU       $                                                    0935.000
         ADI       R3,VA.SIZE      NEXT VAT ENTRY                       0936.000
         BIB       R5,GETV.040     LOOP TIL DONE                        0937.000
GETV.060 EQU       $                                                    0938.000
         LW        R0,VNLBIDX      (PAST) LAST VALID ENTRY ADDRESS      0939.000
         STW       R0,VNLBLEN      SAVE FOR LATER COMPARISONS           0940.000
         POP                       RESTORE REGS                         0941.000
         TRSW      R0              RETURN                               0942.000
         TITLE     MAKEVNLE  --  CREATE A VOLUME NAME LIST ENTRY        0943.000
*+                                                                      0944.000
*                                                                       0945.000
*  MAKEVNLE  --  MAKE A VOLUME NAME LIST (VNL) ENTRY                    0946.000
*                                                                       0947.000
*  INPUT:                                                               0948.000
*        R2 = ADDRESS OF A MOUNTED VOLUME TABLE ENTRY                   0949.000
*        "VNLBIDX" CONTAINS 1ST AVAILABLE ENTRY ADDRESS                 0950.000
*                                                                       0951.000
*  OUTPUT:                                                              0952.000
*        VNL ENTRY BUILT IN THE BUFFER                                  0953.000
*        VNL COUNT & (BUFFER) ENTRY ADDRESS UPDATED                     0954.000
*                                                                       0955.000
*-                                                                      0956.000
         SPACE                                                          0957.000
MAKEVNLE EQU       $                                                    0958.000
         PUSH                      SAVE REGS                            0959.000
         LW        R3,VNLBIDX      1ST AVAILABLE ENTRY ADDRESS          0960.000
         CAMW      R3,VNLBLEN      BUFFER FULL ???                      0961.000
         BLT       MAKE.010        GO FOR BUFFER NOT FULL               0962.000
*  VOLUME NAME LIST IS FULL                                             0963.000
         LA        R7,GEN.M018     ERROR MESSAGE                        0964.000
         BL        FUPABRT3        ENTRY POINT -- ABORT ROUTINE         0965.000
         SPACE     2                                                    0966.000
MAKE.010 LD        R6,MV.VOLNM,X2        1ST HALF OF VOLUME NAME        0967.000
         STD       R6,VNLVN.O,X3   PLANT IN VNL ENTRY                   0968.000
         LD        R6,MV.VOLNM+1D,X2        2ND HALF OF VOLUME NAME     0969.000
         STD       R6,VNLVN.O+1D,X3     PLANT IN VNL ENTRY              0970.000
*!       STW       R2,VNLMV.O,X3   PLANT MVT ENTRY ADDR. IN VNL E3RMS35 0971.000
         LW        R7,MV.MVTA,X2   GET MVT ENTRY ADDRESS        E3RMS35 0972.000
         BNZ       MAKE.012                                     CP12364 0973.000
*                                                               CP12364 0974.000
* IF MV.MVTA CONTAINS ZERO, WE ARE ON AN OS REV BEFORE          CP12364 0975.000
* MPX3.5U02A.  STORE THE INDEX TO THE LOCAL MVT WHICH IS IN R2  CP12364 0976.000
* INTO THE VOLUME NAME LIST ENTRY AND CONTINUE.                 CP12364 0977.000
*                                                               CP12364 0978.000
         STW       R2,VNLMV.O,X3   STORE LOCAL ADDRESS IN VNL   CP12364 0979.000
         BU        MAKE.015        NO NEED TO CHECK IF REMOTE   CP12364 0980.000
MAKE.012 CEQU      $                                            CP12364 0981.000
*                                                               CP12364 0982.000
* IF MV.MVTA IS NON-ZERO, WE HAVE AN MVTE ADDRESS AND WE        CP12364 0983.000
* ARE ON MPX3.5U02A OR LATER.  STORE THIS ADDRESS INTO THE      CP12364 0984.000
* VOLUME NAME LIST AND TEST FOR POSSIBLE REMOTE VOLUME.         CP12364 0985.000
*                                                               CP12364 0986.000
         STW       R7,VNLMV.O,X3   PUT IN VNL ENTRY             E3RMS35 0987.000
*        LH        R7,MV.MVTA,X2   GET REMOTE FLAGS     CP12311 CP12311B0988.000
*        BZ        MAKE.015        NOT A REMOTE VOLUME  CP12311 CP12311B0989.000
         TBM       MV.REMR,MV.MVTA,X2  REMOTE VOLUME?           CP12311B0990.000
         BNS       MAKE.015        NO - CONTINUE                CP12311B0991.000
         LH        R7,MV.UDTI,X2   GET UDT INDEX                CP12311A0992.000
         STH       R7,VNLUD.O,X3   PUT IN VNL                   CP12311A0993.000
MAKE.015 CEQU      $                                            CP12311A0994.000
         LA        R7,VNLVN.O,X3   ADDRESS OF VOLUME NAME IN VNL ENTRY  0995.000
         BL        GETPATH         GET LENGTH OF VOLUME NAME EXCLUDING  0996.000
*                                  TRAILING BLANKS                      0997.000
         SRL       R7,24           ISOLATE LENGTH                       0998.000
         STW       R7,VNLVL.O,X3   PUT IN VNL ENTRY                     0999.000
         ADI       R3,VNLSZ.O      POINTER TO NEXT VNL ENTRY            1000.000
         STW       R3,VNLBIDX      SAVE FOR NEXT TIME                   1001.000
         ABM       31,VNLCOUNT     INCREMENT # ENTRY(S) IN VNL          1002.000
         POP                       RESTORE REGS                         1003.000
         TRSW      R0              RETURN                               1004.000
         SPACE     5                                                    1005.000
*+                                                                      1006.000
*        GET DIRECTORY NAME                                             1007.000
*                                                                       1008.000
*        THERE IS ONLY ONE ROOT DIRECTORY PER VOLUME !                  1009.000
*                                                                       1010.000
*        INPUT:    BIT FLAGS IN WORD VARIABLE "FLAGS"                   1011.000
*        OUTPUT:   R2 = ADDRESS OF A DIRECTORY NAME                     1012.000
*                  R4 = LENGTH (IN BYTES) OF DIRECTORY NAME             1013.000
*                  CC1 = 1 IF END, OTHERWISE CC1 = 0                    1014.000
*                                                                       1015.000
*        ----->  OR  <-----                                             1016.000
*                                                                       1017.000
*                  CC1 = 1  AND "FAIL.F" IN VARIABLE "FLAGS" SET        1018.000
*                  FOR ALLOCATION/OPEN FAILURE FOR A DIRECTORY          1019.000
*-                                                                      1020.000
         SPACE                                                          1021.000
S        EQU       $                                                    1022.000
         SPACE                                                          1023.000
         ANMW      R0,ADR.MASK     INTIALIZE CC'S FOR RETURN            1024.000
         PUSH                      SAVE REGS                            1025.000
         SPACE     2                                                    1026.000
*                                                                       1027.000
*                                                                       1028.000
*        END OF A DIRECTORY WILL BE DETERMINED BY EOF WHILE             1029.000
*        READING THAT DIRECTORY.  DATA TRANSFER COUNT FROM FCB WILL     1030.000
*        DETERMINE LAST VALID ENTRY IN THE BUFFER.                      1031.000
*                                                                       1032.000
*                                                                       1033.000
*        CHECK FOR ACTIVE DIRECTORY ENTRY.                              1034.000
*                                                                       1035.000
*        CHECK RESOURCE TYPE; MAKE SURE ROOT DIRECTORY ENTRY IS FOR A   1036.000
*        DIRECTORY AND NOT FOR A FILE, MEMORY PARTITION, ETC.           1037.000
*                                                                       1038.000
*        TALLY LENGTH OF STRING, IE., THE DIRECTORY NAME.               1039.000
*                                                                       1040.000
*                                                                       1041.000
         SPACE     2                                                    1042.000
         ZBM       READ.F,FLAGS    ALLOCATE ROOT DIRECTORY ???          1043.000
         BNS       S.010           NO -- ASSUME ALREADY ALLOCATED       1044.000
         BL        GETROOT         ALLOCATE ROOT DIRECTORY              1045.000
         BNS       S.010           BRANCH IF ALLOCATE/OPEN SUCC CP12311A1046.000
*!       BNS       S.010           BRANCH IF ALLOCATE/OPEN SUCC CP12311 1047.000
*!       BNS       S.005           BRANCH IF ALLOCATE/O CP12311 CP12311A1048.000
         SBM       CC1,0W,X1       ALLOCATE/OPEN FAILURE                1049.000
         SBM       FAIL.F,FLAGS    FOR "COMPAREP" ROUTINE               1050.000
         BU        S.EXIT          GO TO ROUTINE EXIT POINT             1051.000
*!.005   CEQU      $                                    CP12311 CP12311A1052.000
*!       LW        R2,IO1BIDX      GET VOLUME PROTOTYPE CP12311 CP12311A1053.000
*!       LD        R6,X'20',X2     GET THE VOLUME NAME  CP12311 CP12311A1054.000
*!       STD       R6,VOL.NAME     PUT VOL NAME IN BLOCKCP12311 CP12311A1055.000
*!       TRR       R1,R5           SAVE R1              CP12311 CP12311A1056.000
*!       M.LOC     PN.VEC,RD.DIR   GO LOCATE THE VOLUME CP12311 CP12311A1057.000
*!       BNS       S.007           BRANCH NO ERROR      CP12311 CP12311A1058.000
*!007    CEQU      $                                    CP12311 CP12311A1059.000
*!       TRR       R5,R1           RESTORE R1           CP12311 CP12311A1060.000
*!       TRR       R6,R3           GET RD ADDRESS IN INDCP12311 CP12311A1061.000
*!       LH        R7,RD.RDFLG,X3  GET REMOTE FLAGS     CP12311 CP12311A1062.000
*!       STH       R7,PROFMV.O,X2  SET THE REMOTE FLAGS CP12311 CP12311A1063.000
S.010    ZBM       INIT2.F,FLAGS   INITIALIZE/REINITIALIZE - READ FROM  1064.000
*                                  BEGINNING ???                        1065.000
         BNS       S.020           NO - CONTINUE FROM CURRENT POSITION  1066.000
         ZBM       IO3EOF.F,FLAGS  INITIALIZE                           1067.000
         LA        R2,IO3FCB       FCB ADDRESS                          1068.000
         BL        M.RWND          REWIND THE DIRECTORY FILE            1069.000
         BCT       CC2,S.015       GO FOR I/O ERROR(S)                  1070.000
*                                                                       1071.000
*  BOM DOESN'T APPEAR TO BE SET AFTER A REWIND, AT LEAST FOR THE        1072.000
*  CASE OF AN ALLOCATE/OPEN IMMEDIATELY FOLLOWED BY A REWIND.           1073.000
*                                                                       1074.000
         BU        S.030                                                1075.000
*!       BCT       CC3,S.030       GO FOR BOM INDICATION                1076.000
S.015    EQU       $                                                    1077.000
*  I/O ERROR(S) INDICATED AND/OR BOM NOT INDICATED AFTER A REWIND       1078.000
         LA        R6,GEN.M007     ERROR MESSAGE                        1079.000
         BL        FUPABRT2        ABORT ROUTINE - ENTRY POINT FOR      1080.000
*                                  I/O RELATED PROBLEMS                 1081.000
         SPACE     2                                                    1082.000
S.020    LW        R3,IO3BIDX      INDEX INTO "IO3BUFF"                 1083.000
S.025    ADI       R3,DN.SIZE      POINTER TO "CURRENT" ENTRY           1084.000
         CAMW      R3,IO3BLEN      PAST LAST VALID INDEX ???            1085.000
         BLT       S.050           NO -- BRANCH                         1086.000
*                                  YES -- READ ANOTHER BUFFER FULL      1087.000
S.030    EQU       $                                                    1088.000
         BL        RIO3BUFS        GO READ                              1089.000
         BNS       S.050           BRANCH IF NOT EOF/EOM                1090.000
         SBM       CC1,0W,X1       INDICATE END-OF-DIRECTORY            1091.000
         BU        S.EXIT          GO TO ROUTINE EXIT POINT             1092.000
         SPACE     2                                                    1093.000
S.050    EQU       $                                                    1094.000
         STW       R3,IO3BIDX      SAVE UPDATED POINTER                 1095.000
*        FIND AN ACTIVE DIRECTORY ENTRY                                 1096.000
         TBM       DN.ACTIV,DN.FLAGS,X3      ENTRY ACTIVE ???           1097.000
         BNS       S.025                BRANCH IF INACTIVE              1098.000
*        CHECK RESOURCE TYPE;  MAKE SURE ENTRY IS FOR A DIRECTORY       1099.000
         LH        R7,DN.RTYPE,X3       RESOURCE TYPE                   1100.000
         CI        R7,DN.DIR            IS IT A PERMANENT DIRECTORY ??? 1101.000
         BNE       S.025           BRANCH IF NOT PERMANENT DIRECTORY    1102.000
         LW        R2,IO1BIDX      GET THE VOL PROTOTYPE        CP12311 1103.000
         LH        R7,PROFRT.O,X2  GET REMOTE FLAGS             CP12311A1104.000
*        LH        R7,PROFMV.O,X2  GET REMOTE FLAGS     CP12311 CP12311A1105.000
         BZ        S.060           NOT REMOTE                   CP12311 1106.000
         STH       R7,DN.RDFLG,X3  SET THE REMOTE FLAGS         CP12311 1107.000
S.060    CEQU      $                                            CP12311 1108.000
         LA        R7,DN.IDNAM,X3  ADDRESS OF DIRECTORY NAME            1109.000
         STW       R7,2W,X1        PLANT ON STACK FOR RETURN            1110.000
         BL        GETPATH         FIND LENGTH EXCLUDING TRAILING BLANKS1111.000
         SRL       R7,24           ISOLATE LENGTH                       1112.000
         STW       R7,4W,X1        PLANT ON STACK FOR RETURN            1113.000
S.EXIT   POP                       RESTORE REGS                         1114.000
         TRSW      R0              RETURN                               1115.000
S.END    EQU       $                                                    1116.000
         SPACE     5                                                    1117.000
*+                                                                      1118.000
*        GET FILE NAME                                                  1119.000
*                                                                       1120.000
*                                                                       1121.000
*        INPUT:    BIT FLAGS IN WORD VARIABLE "FLAGS"                   1122.000
*        OUTPUT:   R2 = ADDRESS OF A FILE NAME                          1123.000
*                  R4 = LENGTH (IN BYTES) OF FILE NAME                  1124.000
*                  CC1 = 1 IF END, OTHERWISE CC1 = 0                    1125.000
*-                                                                      1126.000
         SPACE                                                          1127.000
T        EQU       $                                                    1128.000
         SPACE                                                          1129.000
         ANMW      R0,ADR.MASK     INTIALIZE CC'S FOR RETURN            1130.000
         PUSH                      SAVE REGS                            1131.000
         SPACE     2                                                    1132.000
*                                                                       1133.000
*                                                                       1134.000
*        END OF A DIRECTORY WILL BE DETERMINED BY EOF WHILE             1135.000
*        READING THAT DIRECTORY.  DATA TRANSFER COUNT FROM FCB WILL     1136.000
*        DETERMINE LAST VALID ENTRY IN THE BUFFER.                      1137.000
*                                                                       1138.000
*                                                                       1139.000
*        CHECK FOR ACTIVE DIRECTORY ENTRY.                              1140.000
*                                                                       1141.000
*        CHECK RESOURCE TYPE; MAKE SURE DIRECTORY ENTRY IS FOR A        1142.000
*        FILE AND/OR A MEMORY PARTITION AND NOT A DIRECTORY             1143.000
*                                                                       1144.000
*        TALLY LENGTH OF STRING, IE., THE FILE NAME.                    1145.000
*                                                                       1146.000
*                                                                       1147.000
         SPACE     2                                                    1148.000
*                                                                       1149.000
*  CHECK STATUS OF THIS FLAG WHEN NEED TO ALLOCATE NEW DIRECTORY        1150.000
*                                                                       1151.000
         ZBM       READ.F,FLAGS    ALLOCATE DIRECTORY ???               1152.000
         BNS       T.010           NO -- ASSUME ALREADY ALLOCATED       1153.000
         BL        GETDIR          ALLOCATE DIRECTORY AND GET A         1154.000
         BNS       T.010           BRANCH IF ALLOCATE/OPEN SUCCESSFUL   1155.000
         SBM       CC1,0W,X1       ALLOCATE/OPEN FAILURE                1156.000
         SBM       FAIL.F,FLAGS    FOR "COMPAREP" ROUTINE               1157.000
         BU        T.EX            GO TO ROUTINE EXIT POINT             1158.000
T.010    ZBM       INIT2.F,FLAGS   INITIALIZE/REINITIALIZE - READ FROM  1159.000
*                                  BEGINNING ???                        1160.000
         BNS       T.020           NO - CONTINUE FROM CURRENT POSITION  1161.000
         ZBM       IO3EOF.F,FLAGS  INITIALIZE                           1162.000
         LA        R2,IO3FCB       FCB ADDRESS                          1163.000
         BL        M.RWND          REWIND THE DIRECTORY FILE            1164.000
         BCT       CC2,T.015       GO FOR I/O ERROR(S)                  1165.000
         BU        T.030           BOM NOT INDICATED UPON REWIND        1166.000
*  AFTER ALLOCATE/OPEN                                                  1167.000
*        BCT       CC3,T.030       GO FOR BOM INDICATION                1168.000
T.015    EQU       $                                                    1169.000
*  I/O ERROR(S) INDICATED AND/OR BOM NOT INDICATED AFTER A REWIND       1170.000
         LA        R6,GEN.M007     ERROR MESSAGE                        1171.000
         BL        FUPABRT2        ABORT ROUTINE - ENTRY POINT FOR      1172.000
*                                  I/O RELATED PROBLEMS                 1173.000
         SPACE     2                                                    1174.000
T.020    LW        R3,IO3BIDX      INDEX INTO "IO3BUFF"                 1175.000
T.025    ADI       R3,DN.SIZE      POINTER TO "CURRENT" ENTRY           1176.000
         CAMW      R3,IO3BLEN      PAST LAST VALID INDEX ???            1177.000
         BLT       T.050           NO -- BRANCH                         1178.000
*                                  YES -- READ ANOTHER BUFFER FULL      1179.000
T.030    EQU       $                                                    1180.000
         BL        RIO3BUFS        GO READ                              1181.000
         BNS       T.050           BRANCH IF NOT EOF/EOM                1182.000
         SBM       CC1,0W,X1       INDICATE END-OF-DIRECTORY            1183.000
         BU        T.EX            GO TO ROUTINE EXIT POINT             1184.000
         SPACE     2                                                    1185.000
T.050    EQU       $                                                    1186.000
         STW       R3,IO3BIDX      SAVE UPDATED POINTER                 1187.000
*        FIND AN ACTIVE DIRECTORY ENTRY                                 1188.000
         TBM       DN.ACTIV,DN.FLAGS,X3      ENTRY ACTIVE ???           1189.000
         BNS       T.025                BRANCH IF INACTIVE              1190.000
*        CHECK RESOURCE TYPE;  MAKE SURE ENTRY IS OF THE DESIRED TYPE   1191.000
         LH        R7,DN.RTYPE,X3       RESOURCE TYPE                   1192.000
         TBM       PONLY.F,FLAGBITS     WILD CARD SEARCH FOR MEMORY     1193.000
*  PARTITION DEFINITIONS ONLY ???                                       1194.000
         BS        T.060           GO FOR LOOKING ONLY FOR MEM. PART'S. 1195.000
         CI        R7,DN.FILE           IS IT A PERMANENT FILE ???      1196.000
         BEQ       T.070           GO FOR FOUND PERMANENT FILE          1197.000
         TBM       PANDF.F,FLAGBITS     WILD CARD SEARCH FOR FILES AND  1198.000
*  MEMORY PARTITION DEFINITIONS ???                                     1199.000
         BNS       T.025           GO FOR FILES ONLY; DIDN'T FIND FILE  1200.000
T.060    EQU       $                                                    1201.000
         CI        R7,DN.MEM       STATIC MEMORY PARTITION ???          1202.000
         BEQ       T.070           GO FOR FOUND STATIC MEMORY PARTITION 1203.000
         CI        R7,DN.TMEM      DYNAMIC MEMORY PARTITION ???         1204.000
         BNE       T.025           GO FOR DIDN'T FIND IT                1205.000
T.070    EQU       $                                                    1206.000
         LW        R2,IO2BIDX      GET DIR PROTOTYPE ADDRESS    CP12311 1207.000
         LH        R7,PROFRT.O,X2  GET REMOTE FLAGS & UDTI      CP12311A1208.000
*        LH        R7,30H,X2       GET REMOTE FLAGS     CP12311 CP12311A1209.000
         BZ        T.080           NOT A REMOTE DIRECTORY       CP12311 1210.000
         STH       R7,DN.RDFLG,X3  SET THE REMOTE FLAGS         CP12311 1211.000
T.080    CEQU      $                                            CP12311 1212.000
         LA        R7,DN.IDNAM,X3  ADDRESS OF RESOURCE NAME             1213.000
         STW       R7,2W,X1        PLANT ON STACK FOR RETURN            1214.000
         BL        GETPATH         FIND LENGTH EXCLUDING TRAILING BLANKS1215.000
         SRL       R7,24           ISOLATE LENGTH                       1216.000
         STW       R7,4W,X1        PLANT ON STACK FOR RETURN            1217.000
T.EX     POP                       RESTORE REGS                         1218.000
         TRSW      R0              RETURN                               1219.000
T.ENDD   EQU       $                                                    1220.000
         TITLE     ALLOCATE & OPEN A ROOT DIRECTORY                     1221.000
*+                                                                      1222.000
*        GETROOT -- ALLOCATE & OPEN A ROOT DIRECTORY                    1223.000
*                                                                       1224.000
*        ALLOCATE ROOT DIRECTORY BY RID, SHORT 6W FORM; IE.,            1225.000
*        1W = BLOCK # OF ROOT DIRECTORY DESCRIPTOR -- A FIXED LOCATION  1226.000
*             ON EVERY VOLUME, BLOCK # EQUATED IN MACRO LIBRARY.        1227.000
*        1W = MVT ENTRY ADDRESS OF VOLUME UNDER CONSIDERATION.          1228.000
*                                                                       1229.000
*        REMEMBER:  NEED VOLUME NAME IN ORDER TO GET THE ROOT DIRECTORY 1230.000
*        FROM THE PROPER VOLUME.                                        1231.000
*                                                                       1232.000
*        INPUT:    (IMPLICIT)  ADDRESS OF A PROTOTYPE ENTRY IN WORD     1233.000
*                  VARIABLE "IO1BIDX"                                   1234.000
*                                                                       1235.000
*        OUTPUT:   AN ALLOCATED & OPENED ROOT DIRECTORY ASSOCIATED WITH 1236.000
*                  LOGICAL FILE CODE "IO3"                              1237.000
*                                                                       1238.000
*        CC1 = 0  FOR SUCCESSFUL ALLOCATION & OPEN                      1239.000
*        CC1 = 1  FOR NO ACCESS ALLOWED                                 1240.000
*                                                                       1241.000
*-                                                                      1242.000
         SPACE                                                          1243.000
GETROOT  EQU       $                                                    1244.000
         ANMW      R0,ADR.MASK     INITIALIZE RETURN CC'S               1245.000
         PUSH                      SAVE REGS                            1246.000
*                                                                       1247.000
*  BUILD AN RRS ENTRY OF TYPE 6; IE., ALLOCATE BY SHORT RID             1248.000
*                                                                       1249.000
         LW        R2,IO1BIDX      ADDRESS OF PROTOTYPE ENTRY           1250.000
         LI        R0,VO.RDA       ROOT DIR. DESCR. SECTOR ADDR.        1251.000
         STW       R0,PROFRD.O,X2  PLANT IN PROTOTYPE ENTRY             1252.000
*                                  NEED THIS TO BUILD THE RRS           1253.000
*                                                                       1254.000
*  PUT DIRECTORY NAME "ROOT" INTO THE PROTOTYPE ENTRY IN CASE THERE     1255.000
*  IS AN ERROR;  THIS WILL ENABLE A SENSIBLE ERROR MESSAGE TO BE OUTPUT 1256.000
*                                                                       1257.000
         LW        R0,=C'ROOT'     THE "ROOT" DIRECTORY                 1258.000
         STW       R0,PROFDN.O,X2  PLANT IN DIRECTORY NAME FIELD        1259.000
         LW        R0,BLANKS       1W OF SPACES                         1260.000
         STW       R0,PROFDN.O+1W,X2  PLANT IN PROTOTYPE                1261.000
         STW       R0,PROFDN.O+2W,X2  PLANT IN PROTOTYPE                1262.000
         STW       R0,PROFDN.O+3W,X2  PLANT IN PROTOTYPE                1263.000
         LW        R7,IO3Z         LFC G-STRING                         1264.000
         BL        BLDRR6.S        BUILD RRS TYPE #6 (6W FORM)IN RRS.BUF1265.000
         SPACE     2                                                    1266.000
GET.COM  EQU       $               COMMON CODE                          1267.000
         LA        R3,RRS.BUF      ADDRESS OF RRS BUFFER                1268.000
         LW        R0,RRS.ACC4     READ ACCESS, IMPLICIT SHARING        1269.000
         STW       R0,RR.ACCS,X3   PLANT IN RRS ENTRY                   1270.000
         LW        R0,RRS.OPT1     UNBLOCKED I/O, AUTOMATIC OPEN        1271.000
         STW       R0,RR.OPTS,X3   PLANT IN RRS ENTRY                   1272.000
*  ALLOCATE & OPEN; (INDEFINITE WAIT IF BUSY !!!)                       1273.000
         LA        R5,IO3FCB       FCB ADDRESS -- NEEDED FOR AUTO. OPEN 1274.000
         SBM       IO3.F,FLAGBITS       LFC "IO3" IN USE ???            1275.000
         BNS       GET.COM2        GO FOR LFC NOT IN USE                1276.000
         BL        X.DALC          BUILD CNP & CALL DEALLOCATE SYS. SER.1277.000
         BNS       GET.COM2        GO FOR SUCCESSFUL DEALLOCATION       1278.000
*                                                                       1279.000
*        PROCESS DEALLOCATION ERRORS                                    1280.000
*                                                                       1281.000
         LA        R6,GEN.M006     ERROR MESSAGE                        1282.000
*        R7 HAS MODULE #/ERROR #  RETURNED FROM SYSTEM SERVICE          1283.000
         BL        FUPABORT        ABORT ROUTINE                        1284.000
         SPACE     2                                                    1285.000
GET.COM2 EQU       $                                                    1286.000
         BL        X.ALOCW         WAIT FOR DIRECTORY IF BUSY           1287.000
         BNS       GETR.020        GO FOR SUCCESSFUL ALLOCATE/OPEN      1288.000
*                                                                       1289.000
*  SEE IF ERROR WAS:  NO ACCESS ALLOWED                                 1290.000
*                                                                       1291.000
         TRR       R7,R5           DITTO                                1292.000
         SLL       R5,8            MASK MODULE #/ERROR #  COMBO         1293.000
         SRL       R5,8                                                 1294.000
***  CAUTION:  ERROR NUMBERS MAY BE NOT STABLE YET !!!                  1295.000
         CI        R5,REMM2        IS ERROR:  NO ACCESS ALLOWED ???     1296.000
         BEQ       GETR.010        GO FOR NO ACCESS ALLOWED             1297.000
*                                                                       1298.000
*  SOME OTHER TYPE OF ALLOCATION/OPEN ERROR HAS OCCURED                 1299.000
*                                                                       1300.000
         LA        R6,GEN.M019     ERROR MESSAGE                        1301.000
         BU        GETR.015        JOIN COMMON PROCESSING               1302.000
         SPACE     2                                                    1303.000
GETR.010 EQU       $                                                    1304.000
*                                                                       1305.000
*  NO ACCESS IS ALLOWED  --  PRINT ERROR MESSAGE & CONTINUE             1306.000
*                                                                       1307.000
*                                                                       1308.000
*  MAYBE SHOULD PRINT ERROR MESSAGE ONLY IF NAME WAS EXPLICITY STATED   1309.000
*  IE., NOT DERIVED FROM A WILD CARD.                                   1310.000
*                                                                       1311.000
         LA        R6,GEN.M020     ERROR MESSAGE                        1312.000
GETR.015 EQU       $                                                    1313.000
*  R2 = ADDRESS OF PROTOTYPE ENTRY                                      1314.000
*  R7 RETURN AS MODULE #/ERROR #  FROM SERVICE CALL                     1315.000
         BL        ERROR4          ABORT ROUTINE  -- ENTRY POINT        1316.000
         SBM       CC1,0W,X1       INDICATE ALLOCATION/OPEN FAILURE !   1317.000
         ZBM       IO3.F,FLAGBITS  LFC "IO3" NOT IN USE SINCE ALLOCATION1318.000
*                                  FAILED                               1319.000
         SPACE                                                          1320.000
GETR.020 EQU       $                                                    1321.000
         POP                       RESTORE REGS                         1322.000
         TRSW      R0              RETURN                               1323.000
         TITLE     GETDIR -- ALLOCATE & OPEN A DIRECTORY                1324.000
*+                                                                      1325.000
*        GETDIR -- ALLOCATE & OPEN USER LEVEL DIRECTORY                 1326.000
*                                                                       1327.000
*        ALLOCATE USER LEVEL DIRECTORY BY FULL RID.                     1328.000
*                                                                       1329.000
*        INPUT:    (IMPLICIT)  ADDRESS OF A PROTOTYPE ENTRY IN WORD     1330.000
*                  VARIABLE "IO2BIDX"                                   1331.000
*                                                                       1332.000
*        OUTPUT:   AN ALLOCATED & OPENED USER LEVEL DIRECTORY ASSOCIATED1333.000
*                  WITH LOGICAL FILE CODE "IO3"                         1334.000
*                                                                       1335.000
*                                                                       1336.000
*-                                                                      1337.000
         SPACE                                                          1338.000
GETDIR   EQU       $                                                    1339.000
         ANMW      R0,ADR.MASK     INITIALIZE RETURN CC'S               1340.000
         PUSH                      SAVE REGS                            1341.000
         LW        R2,IO2BIDX      ADDRESS OF A PROTOTYPE ENTRY         1342.000
         LA        R2,PROFVN.O,X2  ADDR. OF RID WITHIN PROTOTYPE ENTRY  1343.000
         LW        R7,IO3Z         LFC G-STRING                         1344.000
         BL        BUILDRR6        BUILD AN RRS ENTRY OF TYPE 6         1345.000
         LW        R2,IO2BIDX      ADDRESS OF PROTOTYPE ENTRY           1346.000
         BU        GET.COM         JOIN COMMON CODE                     1347.000
         TITLE     PLACE MATCHED NAME & PROTOTYPE # IN BUFFER           1348.000
*+                                                                      1349.000
*        PLANT MATCHED VOLUME NAME & PROTOTYPE # IN COLLECTION BUFFER.  1350.000
*        INPUT:    R2 = VOLUME NAME, ADDRESS                            1351.000
*                  R4 = VOLUME NAME, LENGTH IN BYTES                    1352.000
*                                                                       1353.000
*                                                                       1354.000
*                                                                       1355.000
*-                                                                      1356.000
         SPACE                                                          1357.000
X        EQU       $                                                    1358.000
         XCR       R3,R7                RESTORE TO ORIGINAL PLACES      1359.000
         PUSH                           SAVE REGS                       1360.000
         ZBM       INIT3.F,FLAGS        INITIALIZE BUFFER & INDEX ?     1361.000
         BS        X.010                YES - INITIALIZE                1362.000
         LW        R3,IO1BIDX           INDEX TO 1ST AVAILABLE ENTRY    1363.000
         ADI       R3,PROSZ.O           INDEX TO CURRENT ENTRY          1364.000
         CAMW      R3,IO1BLEN               END OF BUFFER ?             1365.000
         BLT       X.030                NO - BRANCH, IT'S OK            1366.000
         BL        WIO1BUFF             WRITE OUT BUFFER                1367.000
X.010    LA        R3,IO1BUFF           INITIALIZE POINTER TO BUFFER    1368.000
         LA        R0,IO1BUFF+IO1MXIDX  INITIALIZE LAST VALID INDEX     1369.000
         STW       R0,IO1BLEN           INTO BUFFER                     1370.000
X.030    STW       R3,IO1BIDX           SAVE UPDATED POINTER            1371.000
         STB       R4,PROFVL.O,X3  SAVE SIGNIFICANT LENGTH OF VOL. NAME 1372.000
         TRR       R3,R5                SAVE POINTER                    1373.000
         ADI       R3,PROFVN.O             POSITION TO VOLUME NAME FIELD1374.000
         ABM       31,IO1COUNT          BUMP ENTRY COUNT                1375.000
         LI        R4,PRONM.O      MAX. LENGTH OF VOL. NAME W/TRAILING  1376.000
*                                  BLANKS POSSIBLE                      1377.000
         BL        COPYSTRG             COPY VOLUME NAME INTO BUFFER    1378.000
         LW        R4,PRONEXT      CURRENT ENTRY IN PROTOTYPE TABLE     1379.000
         TRR       R5,R3                GET POINTER INTO IO1BUFF        1380.000
         STW       R4,PROFPA.O,X3  PUT MEM. RES. PROTO. TABLE ENTRY     1381.000
*                                  ADDRESS INTO BUFFER PROTO. ENTRY     1382.000
         LW        R2,VNLBIDX      ADDR. OF VOLUME NAME LIST ENTRY      1383.000
         LW        R0,VNLMV.O,X2        MVT ENTRY ADDR FOR VOLUME       1384.000
         STW       R0,PROFMV.O,X3       PUT INTO IO1BUFF ENTRY          1385.000
         LW        R0,=X'000000F0' REMOTE FLAG MASK             CP12331A1386.000
         ANMB      R0,VNLMV.O,X2   MASK OFF RIGHT NIBBLE        CP12311A1387.000
         BZ        X.040           NOT A REMOTE RESOURCE        CP12311A1388.000
         SLL       R0,8            SHIFT INTO POSITION          CP12311A1389.000
         ORMH      R0,VNLUD.O,X2   MERGE UDTI AND REMOTE FLAGS  CP12311A1390.000
         STH       R0,PROFRT.O,X3  PUT INTO PROTO TYPE          CP12311A1391.000
X.040    CEQU      $                                            CP12311A1392.000
*                                                                       1393.000
*  COPY "TO" PATHNAME (IF IT EXISTS) FROM SOURCE TO DESTINATION         1394.000
*                                                                       1395.000
         TRR       R4,R2                                                1396.000
         LA        R2,PROTFN.O,X2  START ADDR. OF "TO" PATHNAME (SOURCE)1397.000
         LA        R3,PROTFN.O,X3  START ADDR. OF "TO" PATHNAME (DEST.) 1398.000
         LI        R4,PRONM.O*3    TOTAL LENGTH OF 3 PATHNAME PARTS     1399.000
         BL        COPYSTRG        COPY SOURCE TO DESTINATION           1400.000
         POP                            RESTORE REGS                    1401.000
         TRSW      R0                   RETURN                          1402.000
X.END    EQU       $                                                    1403.000
         SPACE     5                                                    1404.000
*+                                                                      1405.000
*        PLANT MATCHED DIRECTORY NAME IN COLLECTION BUFFER              1406.000
*        INPUT:    BIT FLAGS IN WORD VARIABLE "FLAGS"                   1407.000
*                  R2 = DIRECTORY NAME, ADDRESS                         1408.000
*                  R4 = DIRECTORY NAME, LENGTH IN BYTES                 1409.000
*                                                                       1410.000
*-                                                                      1411.000
         SPACE                                                          1412.000
Y        EQU       $                                                    1413.000
         XCR       R3,R7                RESTORE TO ORIGINAL PLACES      1414.000
         PUSH                           SAVE REGS                       1415.000
         ZBM       INIT3.F,FLAGS        INITIALIZE BUFFER & INDEX ?     1416.000
         BS        Y.010                YES - INITIALIZE                1417.000
         LW        R3,IO2BIDX           INDEX TO 1ST AVAILABLE ENTRY    1418.000
         ADI       R3,PROSZ.O           POINTER TO CURRENT ENTRY        1419.000
         CAMW      R3,IO2BLEN           END OF BUFFER ?                 1420.000
         BLT       Y.030                NO - BRANCH, IT'S OK            1421.000
         BL        WIO2BUFF             WRITE OUT BUFFER                1422.000
         SBM       UIO2.F,FLAGS         INDICATE TEMP. FILE USED        1423.000
Y.010    LA        R3,IO2BUFF           POINTER TO CURRENT ENTRY        1424.000
         LA        R0,IO2BUFF+IO2MXIDX  INITIALIZE LAST VALID POINTER   1425.000
         STW       R0,IO2BLEN           VALUE                           1426.000
Y.030    STW       R3,IO2BIDX           SAVE UPDATED POINTER VALUE      1427.000
         LW        R2,IO1BIDX      SOURCE PROTOTYPE ADDRESS             1428.000
         LI        R4,PROSZ.O      # BYTES IN A PROTOTYPE ENTRY         1429.000
         BL        COPYSTRG        COPY SOURCE PROTO. TO DESTINATION    1430.000
         LW        R2,2W,X1        REGAIN (R2) DIR. NAME ADDR. FROM STAC1431.000
         TRR       R3,R5                SAVE POINTER                    1432.000
         ABM       31,IO2COUNT          BUMP ENTRY COUNT                1433.000
         ADI       R3,PROFDN.O          ADDR OF DIR. NAME FIELD IN ENTRY1434.000
         LI        R4,PRONM.O      MAX. POSSIBLE LENGTH OF DIRECTORY    1435.000
*  NAME INCLUDING ANY TRAILING BLANKS                                   1436.000
         BL        COPYSTRG             COPY DIRECTORY NAME INTO BUFFER 1437.000
         LW        R2,IO3BIDX      DIRECTORY ENTRY UNDER CONSIDERATION  1438.000
         LA        R2,DN.DATE,X2   ADDR. OF 2ND HALF OF RID             1439.000
         TRR       R5,R3           ADDR. OF PROTO. ENTRY UNDER CONSIDERA1440.000
         LA        R3,PROFDA.O,X3  PLACE TO PUT 2ND HALF OF RID         1441.000
         LI        R4,4W           # BYTES TO COPY (2ND HALF OF RID)    1442.000
         BL        COPYSTRG        COPY                                 1443.000
         LW        R2,IO3BIDX      DIRECTORY ENTRY UNDER CONSIDERATION  1444.000
         LW        R4,DN.DOFF,X2   DIRECTORY RES. DESCR. BLOCK #        1445.000
         TRR       R5,R3           ADDR. OF PROTO. ENTRY UNDER CONSIDERA1446.000
         STW       R4,PROFR2.O,X3        DIR. RES. DESCR. BLOCK #       1447.000
*!                                                     E3RMS35A CP12311 1448.000
*!FORM THE VOLUME NAME AND DIRECTORY INTO PATHNAME VEC E3RMS35A CP12311 1449.000
*!                                                     E3RMS35A CP12311 1450.000
*!       LW        R2,IO1BIDX      GET PROTOTYPE ADDRE E3RMS35A CP12311 1451.000
*!       LB        R4,PROFMV.O,X2  GET REMOTE FLAGS    E3RMS35A CP12311 1452.000
*!       BZ        Y.040           NOT REMOTE CONTINUE E3RMS35A CP12311 1453.000
*!       TRR       R5,R2           RESTORE POINTER     E3RMS35A CP12311 1454.000
*!       ADI       R2,X'20'        POINT TO VOLUME NAM E3RMS35A CP12311 1455.000
*!       LA        R3,DIR.PATHN    ADDRESS OF PATHNAME E3RMS35A CP12311 1456.000
*!       LI        R4,16           # OF BYTES IN DIREC E3RMS35A CP12311 1457.000
*!       BL        BLD.PN          GO BUILD PATH NAME  E3RMS35A CP12311 1458.000
*!                                                     E3RMS35A CP12311 1459.000
*!GO LOCATE THE DIRECTORY. RD IS USED BY ROUTINE 'Z' T E3RMS35A CP12311 1460.000
*!DETERMINE WHETHER OR NOT THE DIRECTORY IS REMOTE     E3RMS35A CP12311 1461.000
*!                                                     E3RMS35A CP12311 1462.000
*!       TRR       R1,R5           SAVE STACK POINTER  E3RMS35A CP12311 1463.000
*!       LW        R1,PN.VEC       GET PATH NAME VECTO E3RMS35A CP12311 1464.000
*!       LA        R6,RD.DIR       RD ADDRESS          E3RMS35A CP12311 1465.000
*!       ZR        R7              CLEAR STATUS        E3RMS35A CP12311 1466.000
*!       SVC       2,X'2C'         GO LOCATE DIRECTORY E3RMS35A CP12311 1467.000
*!       BS        ERROR4          LOCATE HAD A PROBLE E3RMS35A CP12311 1468.000
*!       TRR       R5,R1           RESTORE STACK POINT E3RMS35A CP12311 1469.000
*!                                                                      1470.000
*!                                                                      1471.000
*!       NEED FOLLOWING ITEMS FROM INPUT BUFFER ENTRY:                  1472.000
*!       1). VOLUME NAME                                                1473.000
*!       2). MVT ENTRY ADDRESS                                          1474.000
*!       3). PROTOTYPE ENTRY ADDRESS                                    1475.000
*!       4). "TO" PATHNAME (IF PRESENT)                                 1476.000
*!                                                                      1477.000
*!.040   CEQU      $                                   E3RMS35A CP12311 1478.000
         POP                       RESTORE REGS                         1479.000
         TRSW      R0              RETURN                               1480.000
Y.END    EQU       $                                                    1481.000
         SPACE     5                                                    1482.000
*+                                                                      1483.000
*        PLANT MATCHED FILE NAME IN COLLECTION BUFFER                   1484.000
*        INPUT:    BIT FLAGS IN WORD VARIABLE "FLAGS"                   1485.000
*                  R2 = FILE NAME, ADDRESS                              1486.000
*                  R4 = FILE NAME, LENGTH IN BYTES                      1487.000
*                                                                       1488.000
*-                                                                      1489.000
         SPACE                                                          1490.000
Z        EQU       $                                                    1491.000
         XCR       R3,R7                RESTORE TO ORIGINAL PLACES      1492.000
         PUSH                           SAVE REGS                       1493.000
         ZBM       INIT3.F,FLAGS        INITIALIZE BUFFER & INDEX ?     1494.000
         BS        Z.010                YES - INITIALIZE                1495.000
         LW        R3,IO1BIDX           INDEX TO 1ST AVAILABLE ENTRY    1496.000
         ADI       R3,PROSZ.O           POINTER TO CURRENT ENTRY        1497.000
         CAMW      R3,IO1BLEN           END OF BUFFER ?                 1498.000
         BLT       Z.020                NO - BRANCH, IT'S OK            1499.000
         BL        WIO1BUFF             WRITE OUT BUFFER                1500.000
Z.010    LA        R3,IO1BUFF           POINTER TO CURRENT ENTRY        1501.000
         LA        R0,IO1BUFF+IO1MXIDX  INITIALIZE LAST VALID POINTER   1502.000
         STW       R0,IO1BLEN           VALUE                           1503.000
Z.020    STW       R3,IO1BIDX           SAVE UPDATED POINTER VALUE      1504.000
         ABM       31,IO1COUNT          BUMP ENTRY COUNT                1505.000
         LW        R2,IO2BIDX           POINTER TO INPUT ENTRY          1506.000
         LI        R4,PROSZ.O           # BYTES TO TRANSFER             1507.000
         BL        COPYSTRG             COPY INPUT ENTRY TO OUTPUT ENTRY1508.000
         TRR       R3,R5                SAVE POINTER TO OUTPUT ENTRY    1509.000
         ADI       R3,PROFFN.O          ADDRESS OF FILE NAME FIELD      1510.000
         LW        R2,2W,X1             OBTAIN ORIGINAL FROM STACK      1511.000
         LI        R4,PRONM.O      MAX. POSSIBLE NAME LENGTH INCLUDING  1512.000
*  ANY TRAILING BLANKS                                                  1513.000
         BL        COPYSTRG             MATCHED FILENAME TO OUTPUT ENTRY1514.000
         LW        R2,IO3BIDX      DIRECTORY ENTRY UNDER CONSIDERATION  1515.000
         LA        R2,DN.DATE,X2   ADDR. OF 2ND HALF OF RID             1516.000
         TRR       R5,R3           ADDR. OF PROTO. ENTRY UNDER CONSIDERA1517.000
         LA        R3,PROFDA.O,X3  PLACE TO PUT 2ND HALF OF RID         1518.000
         LI        R4,4W           # BYTES TO COPY (2ND HALF OF RID)    1519.000
         BL        COPYSTRG        COPY                                 1520.000
*!       LH        R5,RD.RDFLG+RD.DIR   GET REMOTE FLA E3RMS35A CP12311 1521.000
*!       STH       R5,12,X3        UPDATE REMOTE FLAGS E3RMS35A CP12311 1522.000
         POP                            RESTORE REGS                    1523.000
         TRSW      R0                   RETURN                          1524.000
Z.END    EQU       $                                                    1525.000
         SPACE     5                                                    1526.000
*+                                                                      1527.000
*        COPY A BYTE STRING FROM SOURCE TO DESTINATION.                 1528.000
*        INPUT:    R2 = SOURCE ADDRESS                                  1529.000
*                  R3 = DESTINATION ADDRESS                             1530.000
*                  R4 = LENGTH OF STRING                                1531.000
*-                                                                      1532.000
         SPACE                                                          1533.000
COPYSTRG EQU       $                                                    1534.000
         PUSH                           SAVE REGS                       1535.000
         TRN       R4,R4                NEGATE SOURCE COUNT FOR LOOP CNT1536.000
COPYS.10 LB        R5,0B,X2             GET BYTE FROM SOURCE            1537.000
         STB       R5,0B,X3             PUT IN DESTINATION              1538.000
         ABR       R2,31                INCR. BYTE (SOURCE) ADDR.       1539.000
         ABR       R3,31                INCR. BYTE (DESTINATION) ADDR.  1540.000
         BIB       R4,COPYS.10          LOOP TIL DONE                   1541.000
         POP                            RESTORE REGS                    1542.000
         TRSW      R0                   RETURN                          1543.000
         SPACE     5                                                    1544.000
*!                                                                      1545.000
*!*****************************************************************     1546.000
*!                                                                      1547.000
*!       BUILD  PATH NAME VECTOR                                        1548.000
*!                                                                      1549.000
*!       ENTRY:                                                         1550.000
*!       R2 = SOURCE                                                    1551.000
*!       R3 = DESTINATION                                               1552.000
*!                                                                      1553.000
*!       EXIT:                                                          1554.000
*!       R7 = LENGTH                                                    1555.000
*!                                                                      1556.000
*!*****************************************************************     1557.000
*!                                                     E3RMS35A CP12311 1558.000
*!D.PN   CEQU      $                                   E3RMS35A CP12311 1559.000
*!       PUSH                                          E3RMS35A CP12311 1560.000
*!       TRR       R3,R7           SAVE ADDRES OF PN V E3RMS35A CP12311 1561.000
*!       SUI       R7,1            BACK TO BEGINING    E3RMS35A CP12311 1562.000
*!       ORMW      R7,=X'03000000' ADD IN DELIMITERS   E3RMS35A CP12311 1563.000
*!       TRN       R4,R4           MAKE COUNTER NEG    E3RMS35A CP12311 1564.000
*!       TRR       R2,R6           SAVE ADDRESS OF PAT E3RMS35A CP12311 1565.000
*!D.10   CEQU      $                                   E3RMS35A CP12311 1566.000
*!       LB        R5,0B,X2        GET BYTE OF PATH    E3RMS35A CP12311 1567.000
*!       CI        R5,X'20'        MORE TO VOLMME NAME E3RMS35A CP12311 1568.000
*!       BEQ       BLD.20          NO, GO DO DISRECTOR E3RMS35A CP12311 1569.000
*!       STB       R5,0B,X3        PLACE BYTE IN PATH  E3RMS35A CP12311 1570.000
*!       ABR       R7,7            BUMP PATH NAME LENG E3RMS35A CP12311 1571.000
*!       ABR       R2,31           BUMP SOURCE POINTER E3RMS35A CP12311 1572.000
*!       ABR       R3,31           BUMP DESTINATION PO E3RMS35A CP12311 1573.000
*!       BIB       R4,BLD.10       CONTINUE BUILDING   E3RMS35A CP12311 1574.000
*!D.20   CEQU      $                                   E3RMS35A CP12311 1575.000
*!       TRR       R6,R2           RESTORE R2          E3RMS35A CP12311 1576.000
*!       SUI       R2,X'10'        MOVE BACK TO DIRECT E3RMS35A CP12311 1577.000
*!       LW        R5,=G'('        GET START OF DIRECT E3RMS35A CP12311 1578.000
*!       STB       R5,0B,X3        PLACE IN PATH NAME  E3RMS35A CP12311 1579.000
*!       ABR       R3,31           BUMP DESTINATION PO E3RMS35A CP12311 1580.000
*!       LI        R4,-16          MAX SIZE OF DIRECTO E3RMS35A CP12311 1581.000
*!D.30   CEQU      $                                   E3RMS35A CP12311 1582.000
*!       LB        R5,0B,X2        GET BYTE OF SOURCE  E3RMS35A CP12311 1583.000
*!       CI        R5,X'20'        MORE TO DIRECTORY N E3RMS35A CP12311 1584.000
*!       BEQ       BLD.40          NO, WE'RE FINISHED  E3RMS35A CP12311 1585.000
*!       STB       R5,0B,X3        PLACE BYTE IN PATHN E3RMS35A CP12311 1586.000
*!       ABR       R7,7            BUMP PATH NAME LENG E3RMS35A CP12311 1587.000
*!       ABR       R2,31           BUMP SOURCE POINTER E3RMS35A CP12311 1588.000
*!       ABR       R3,31           BUMP DESTINATION PO E3RMS35A CP12311 1589.000
*!       BIB       R4,BLD.30       CONTINUE BUILDING   E3RMS35A CP12311 1590.000
*!D.40   CEQU      $                                   E3RMS35A CP12311 1591.000
*!       LW        R5,=G')'        GET END OF DIRECTOR E3RMS35A CP12311 1592.000
*!       STB       R5,0B,X3        TERMINATE PATH NAME E3RMS35A CP12311 1593.000
*!       STW       R7,PN.VEC       SAVE THE VECTOR     E3RMS35A CP12311 1594.000
*!       POP                                           E3RMS35A CP12311 1595.000
*!       TRSW      R0                                  E3RMS35A CP12311 1596.000
*!                                                                      1597.000
*++                                                                     1598.000
*        WRAP UP SCRATCH FILE I/O & SET FLAGS FOR "MAIN".               1599.000
*        INPUT:    BIT FLAGS IN WORD VARIABLE "FLAGS"                   1600.000
*        OUTPUT:   CC1 = 1 FOR NO MATCHES FOUND,                        1601.000
*                  CC1 = 0 OTHERWISE                                    1602.000
*                  CC2 = 1 FOR EXTERNAL SORT,                           1603.000
*                  CC2 = 0 FOR INTERNAL SORT                            1604.000
*-                                                                      1605.000
         SPACE                                                          1606.000
X1X      EQU       $                                                    1607.000
         TBM       IO11ST.F,FLAGS       SCRATCH FILE #1 USED ?          1608.000
         BS        X1X.010               YES - BRANCH                   1609.000
         TBM       INIT3.F,FLAGS        ANY MATCHES AT ALL ?            1610.000
         BNS       X1X.020               YES - BRANCH                   1611.000
         SBM       CC1,0W,X1            NO MATCHES -- INDICATE FOR RTN  1612.000
         BU        X1X.020               GO TO ROUTINE EXIT POINT       1613.000
X1X.010   BL        WIO1BUFF             GO WRITE OUT THE DATA          1614.000
         SBM       CC2,0W,X1            INDICATE MUST DO EXTERNAL SORT  1615.000
X1X.020   LA        R7,IO1FCB            SCRATCH FILE #1 (IO1) FCB      1616.000
*!       BL        M.CLSE               CLOSE THE SCRATCH FILE          1617.000
          POP                            RESTORE REGS                   1618.000
         TRSW      R0              RETURN (TO MAIN LEVEL -- THIS MODULE)1619.000
X1X.END  EQU       $                                                    1620.000
         SPACE     5                                                    1621.000
*++                                                                     1622.000
*        WRAP UP SCRATCH FILE I/O & SET FLAGS FOR "MAIN".               1623.000
*        INPUT:    BIT FLAGS IN WORD VARIABLE "FLAGS"                   1624.000
*        OUTPUT:   CC1 = 1 FOR NO MATCHES FOUND,                        1625.000
*                  CC1 = 0 OTHERWISE                                    1626.000
*                  CC2 = 1 FOR EXTERNAL SORT,                           1627.000
*                  CC2 = 0 FOR INTERNAL SORT                            1628.000
*-                                                                      1629.000
         SPACE                                                          1630.000
Y1Y      EQU       $                                                    1631.000
         TBM       IO21ST.F,FLAGS       SCRATCH FILE #2 USED ?          1632.000
         BS        Y1Y.010               YES - BRANCH                   1633.000
         TBM       INIT3.F,FLAGS        ANY MATCHES AT ALL ?            1634.000
         BNS       Y1Y.020               YES - BRANCH                   1635.000
         SBM       CC1,0W,X1            NO MATCHES -- INDICATE FOR RTN  1636.000
         BU        Y1Y.020               GO TO ROUTINE EXIT POINT       1637.000
Y1Y.010   BL        WIO2BUFF             GO WRITE OUT THE DATA          1638.000
         SBM       CC2,0W,X1            INDICATE MUST DO EXTERNAL SORT  1639.000
Y1Y.020   LA        R7,IO2FCB            SCRATCH FILE #1 (IO2) FCB      1640.000
*!       BL        M.CLSE               CLOSE THE SCRATCH FILE          1641.000
          POP                            RESTORE REGS                   1642.000
         TRSW      R0              RETURN (TO MAIN LEVEL -- THIS MODULE)1643.000
Y1Y.END  EQU       $                                                    1644.000
         SPACE     5                                                    1645.000
*++                                                                     1646.000
*        WRAP UP SCRATCH FILE I/O & SET FLAGS FOR "MAIN".               1647.000
*        INPUT:    BIT FLAGS IN WORD VARIABLE "FLAGS"                   1648.000
*        OUTPUT:   CC1 = 1 FOR NO MATCHES FOUND,                        1649.000
*                  CC1 = 0 OTHERWISE                                    1650.000
*                  CC2 = 1 FOR EXTERNAL SORT,                           1651.000
*                  CC2 = 0 FOR INTERNAL SORT                            1652.000
*-                                                                      1653.000
         SPACE                                                          1654.000
Z1Z      EQU       $                                                    1655.000
         TBM       IO11ST.F,FLAGS       SCRATCH FILE #1 USED ?          1656.000
         BS        Z1Z.010               YES - BRANCH                   1657.000
         TBM       INIT3.F,FLAGS        ANY MATCHES AT ALL ?            1658.000
         BNS       Z1Z.020               YES - BRANCH                   1659.000
         SBM       CC1,0W,X1            NO MATCHES -- INDICATE FOR RTN  1660.000
         BU        Z1Z.020               GO TO ROUTINE EXIT POINT       1661.000
Z1Z.010   BL        WIO1BUFF             GO WRITE OUT THE DATA          1662.000
         SBM       CC2,0W,X1            INDICATE MUST DO EXTERNAL SORT  1663.000
Z1Z.020   LA        R7,IO1FCB            SCRATCH FILE #1 (IO1) FCB      1664.000
*        BL        M.CLSE               CLOSE THE SCRATCH FILE          1665.000
          POP                            RESTORE REGS                   1666.000
         TRSW      R0              RETURN (TO MAIN LEVEL -- THIS MODULE)1667.000
Z1Z.END  EQU       $                                                    1668.000
         SPACE     5                                                    1669.000
*                                                                       1670.000
*                                                                       1671.000
*                                                                       1672.000
RIO1BUFF EQU       $                                                    1673.000
         SPACE                                                          1674.000
         PUSH                      SAVE REGS                            1675.000
         LA        R3,RRAN         RANDOM ACCESS READ ROUTINE           1676.000
         BU        WIO1.030        JOIN COMMON CODE                     1677.000
         SPACE     5                                                    1678.000
WIO1BUFF EQU       $                                                    1679.000
         SPACE                                                          1680.000
         PUSH                      SAVE REGS                            1681.000
         LA        R3,WRAN         RANDOM ACCESS WRITE                  1682.000
         SPACE                                                          1683.000
WIO1.005 EQU       $                                                    1684.000
         SPACE                                                          1685.000
         TBM       IO1.F,FLAGBITS  IS SCRATCH FILE #1 ALLOCATED ???     1686.000
         BS        WIO1.030        GO FOR FILE ALREADY ALLOCATED        1687.000
*  ALLOCATE & OPEN THE TEMPORARY FILE                                   1688.000
*                                                                       1689.000
***  NOTE:  MUST ALLOCATE THE TEMPORARY FILE WITH READ & UPDATE ACCESS  1690.000
*  SINCE THE SORT CODE USES THE COMPATIBILITY INTERFACE ... AND THE     1691.000
*  INTERFACE ASSIGNS READ ACCESS FOR READ & UPDATE ACCESS FOR READ/WRITE1692.000
*                                                                       1693.000
*!       LW        R7,IO1Z         LOGICAL FILE CODE G-STRING  ! 32B01  1694.000
*!       BL        BUILDRR2        BUILD AN RRS ENTRY OF TYPE 2! 32B01  1695.000
*!       LA        R2,RRS.BUF      BUFFER CONTAINING RRS ENTRY ! 32B01  1696.000
*!       ZBM       RR.OPEN,RR.OPTS,X2   NO AUTOMATIC OPEN      ! 32B01  1697.000
*!       SBM       RR.READ,RR.ACCS,X2   ALSO WANT READ ACCESS  ! 32B01  1698.000
         LI        R7,200          LOAD FILE CREATION SIZE     ! 32B01  1699.000
         BL        BUILDRCB        BUILD RCB EXPLICITLY        ! 32B01  1700.000
         BS        WIO1.007                                     S920607 1701.000
         LA        R2,RIDADDR      RID ADDRESS FOR TYPE 6 RRS  ! 32B01  1702.000
         LW        R4,=X'04000000' EXPLICIT UNBLOCKED          ! 32B01  1703.000
         LW        R6,=X'90000000' READ AND UPDATE ACCESS      ! 32B01  1704.000
         LW        R7,IO1Z         LOGICAL FILE CODE G-STRING  ! 32B01  1705.000
         BL        BUILDRR6        BUILD RRS TYPE 6            ! 32B01  1706.000
         LA        R5,IO1FCB       FCB ADDRESS INTO R5         85-0391  1707.000
         BL        X.ALOC          ALLOCATE THE FILE                    1708.000
         BNS       WIO1.020        GO FOR NO ERROR(S)                   1709.000
*                                                                       1710.000
*  ERROR OCCURED - CHECK ERROR CODE RETURNED TO SEE IF TEMPORARY FILE   1711.000
*  IS ALREADY ALLOCATED BY THIS TASK.                                   1712.000
*                                                                       1713.000
WIO1.007 CEQU      $                                            S920607 1714.000
         TRR       R7,R6           DITTO                                1715.000
         SLL       R6,8            MASK MODULE NUMBER                   1716.000
         SRL       R6,8                                                 1717.000
         CI        R6,REMM14       RESOURCE ALREADY ALLOCATED ???       1718.000
         BEQ       WIO1.010        GO FOR RES. ALREADY ALLOCATED        1719.000
*                                                                       1720.000
*  SOME OTHER ERROR HAS OCCURED - ABORT                                 1721.000
*  R7 CONTAINS MODULE #/ERROR # COMBO AS RETURNED FROM SUBROUTINE       1722.000
*                                                                       1723.000
         LA        R6,GEN.M002     ERROR MESSAGE                        1724.000
         BL        FUPABORT        ABORT ROUTINE - ENTRY POINT          1725.000
         SPACE     2                                                    1726.000
WIO1.010 EQU       $                                                    1727.000
         LA        R2,IO1FCB       FCB ADDRESS                          1728.000
         LW        R2,FCB.FATA,X2  FAT ADDRESS FROM FCB                 1729.000
         TBM       RR.READ,0B,X2   WAS READ ACCESS SPECIFIED AT         1730.000
*  ALLOCATION TIME ???                                                  1731.000
         BS        WIO1.025        GO FOR HAVE READ ACCESS              1732.000
*                                                                       1733.000
*  DON'T HAVE REQUIRED READ ACCESS, MUST DEALLOCATE FILE & REALLOCATE   1734.000
*                                                                       1735.000
         LA        R5,IO1FCB       FCB ADDRESS                          1736.000
         BL        X.DALC          DEALLOCATE FILE                      1737.000
         BNS       WIO1.005        GO FOR NO ERROR(S)                   1738.000
         LA        R6,GEN.M006     ERROR MESSAGE                        1739.000
*  R7 HAS MODULE #/ERROR # RETURNED FROM SERVICE SUBROUTINE             1740.000
         BL        FUPABORT        ABORT ROUTINE                        1741.000
         SPACE     2                                                    1742.000
WIO1.020 EQU       $                                                    1743.000
         LH        R7,CNP.ACC5     UPDATE ACCESS                        1744.000
         LA        R5,IO1FCB       FCB ADDRESS                          1745.000
         BL        X.OPEN          OPEN FILE WITH UPDATE ACCESS         1746.000
         BNS       WIO1.025        GO FOR NO ERROR(S)                   1747.000
*  OPEN FAILED  --  ISSUE ERROR MESSAGE & ABORT                         1748.000
         LA        R6,GEN.M002     ERROR MESSAGE                        1749.000
*  R7 ALREADY CONTAINS MODULE #/ERROR # COMBO AS RETURNED FROM SERVICE  1750.000
*  SUBROUTINE                                                           1751.000
         BL        FUPABORT        ABORT ROUTINE - ENTRY POINT          1752.000
         SPACE     2                                                    1753.000
WIO1.025 EQU       $                                                    1754.000
         SBM       IO1.F,FLAGBITS  INDICATE FILE HAS NOW BEEN ALLOCATED 1755.000
         ZBM       IO11ST.F,FLAGS  INDICATE HAVEN'T PERFORMED 1ST I/O YE1756.000
WIO1.030 EQU       $                                                    1757.000
         SBM       IO11ST.F,FLAGS  IS THIS THE FIRST I/O TO THE         1758.000
*                                  TEMPORARY FILE ???                   1759.000
         BS        WIO1.040        GO FOR NOT 1ST I/O                   1760.000
*                                                                       1761.000
*  INITIALIZE THE RANDOM ACCESS ADDRESS.  RESERVE SECTOR ZERO FOR       1762.000
*  CONTROL INFORMATION                                                  1763.000
*                                                                       1764.000
         LI        R0,1            INITIALIZE                           1765.000
         STW       R0,IO1SADDR     INITIALIZE RANDOM ACCESS ADDRESS     1766.000
         BU        WIO1.050                                             1767.000
         SPACE                                                          1768.000
WIO1.040 EQU       $                                                    1769.000
         SPACE                                                          1770.000
         LI        R0,IOBUFFSZ     # BLOCKS TRANSFERED                  1771.000
         ARMW      R0,IO1SADDR     INCREMENT RANDOM ACCESS ADDRESS      1772.000
*  SET-UP FOR THE I/O                                                   1773.000
WIO1.050 EQU       $                                                    1774.000
         LA        R2,IO1FCB       FCB ADDRESS                          1775.000
         LW        R0,IO1SADDR     GET THE RANDOM ACCESS ADDRESS        1776.000
         STW       R0,FCB.ERAA,X2  PLANT IN FCB                         1777.000
         TBM       USEIO3B,FLAGS   SHOULD WE USE IO3BUFF?               1778.000
         BS        LOADIO3         YES, SO BRANCH                       1779.000
         LA        R6,IO1BUFF      NO, SO USE IO1BUFF ADDRESS           1780.000
         BU        LOAD                                                 1781.000
LOADIO3  LA        R6,IO3BUFF      USE IO3BUFF                          1782.000
LOAD     LI        R7,IOBUFFSZ     # BLOCKS TO TRANSFER                 1783.000
*  DO THE I/O                                                           1784.000
         BL        CON.IO          GO THROUGH INTERMEDIATE ROUTINE(S)   1785.000
*                                  TO FACILITATE PROCESSING OF ERRORS   1786.000
         POP                       RESTORE REGS                         1787.000
         TRSW      R0              RETURN                               1788.000
         PAGE                                                           1789.000
*++                                                                     1790.000
*                                                                       1791.000
*  RIO3BUFS  --  READ DIRECTORY ASSIGNED TO LFC "IO3" INTO BUFFER       1792.000
*  "IO3BUFF".                                                           1793.000
*                                                                       1794.000
*  INPUT:                                                               1795.000
*                                                                       1796.000
*  OUTPUT:                                                              1797.000
*        CC1 = 0  FOR SUCCESSFUL I/O                                    1798.000
*        CC1 = 1  FOR EOF/EOM ON DIRECTORY                              1799.000
*                                                                       1800.000
*--                                                                     1801.000
         SPACE                                                          1802.000
RIO3BUFS EQU       $                                                    1803.000
         SPACE                                                          1804.000
         ANMW      R0,ADR.MASK     INITIALIZE CC'S FOR RETURN           1805.000
         PUSH                      SAVE REGS                            1806.000
         TBM       IO3EOF.F,FLAGS  IS EOF/EOM EMINENT ???               1807.000
         BNS       RIO3.010        GO FOR EOF/EOM NOT EMINENT           1808.000
         SBM       CC1,0W,X1       INDICATE EOF/EOM                     1809.000
         BU        RIO3.EX         GO TO ROUTINE EXIT POINT             1810.000
         SPACE     2                                                    1811.000
RIO3.010 EQU       $                                                    1812.000
         LA        R2,IO3FCB       FCB ADDRESS                          1813.000
         LA        R6,IO3BUFF      DATA BUFFER ADDRESS                  1814.000
         LI        R7,IOBUFFSZ     # BLOCKS TO TRANSFER                 1815.000
         BL        RSEQ            SEQUENTIAL READ                      1816.000
         BCF       CC2,RIO3.020    GO FOR NO I/O ERROR(S)               1817.000
         LA        R6,GEN.M007     ERROR MESSAGE                        1818.000
         BL        FUPABRT2        ABORT ROUTINE - ENTRY POINT FOR I/O  1819.000
*                                  RELATED PROBLEMS                     1820.000
         SPACE     2                                                    1821.000
RIO3.020 EQU       $                                                    1822.000
         BCF       CC1,RIO3.030    GO FOR NOT EOF/EOM                   1823.000
         SBM       CC1,0W,X1       INDICATE EOF/EOM                     1824.000
         BU        RIO3.EX         GO TO ROUTINE EXIT POINT             1825.000
         SPACE     2                                                    1826.000
RIO3.030 EQU       $                                                    1827.000
*                                                                       1828.000
*  CHECK TRANSFER COUNT.                                                1829.000
*  IF SHORT COUNT THEN EOF/EOM WILL OCCUR ON THE NEXT I/O               1830.000
*                                                                       1831.000
         CI        R7,IOBUFFSZ     TRANSFERED EQUAL REQUESTED ???       1832.000
         BEQ       RIO3.040        GO FOR FULL COUNT TRANSFERED         1833.000
         SBM       IO3EOF.F,FLAGS  INDICATE EOF/EOM WILL OCCUR          1834.000
*  ON NEXT I/O.                                                         1835.000
RIO3.040 EQU       $                                                    1836.000
*                                                                       1837.000
*  SET BUFFER END POINTER TO COMPENSATE FOR THE SHORT TRANSFER COUNT    1838.000
*                                                                       1839.000
         LA        R3,IO3BUFF      BUFFER START                         1840.000
         STW       R3,3W,X1        INITIALIZE - RETURN R3 - PLANT ON    1841.000
*                                  STACK                                1842.000
         ADMW      R3,FCB.RECL,X2  ADD IN RECORD TRANSFER LENGTH FROM   1843.000
*  FCB TO GET LOGICAL END OF BUFFER POINTER                             1844.000
         STW       R3,IO3BLEN      SAVE FOR LATER COMPARISONS           1845.000
RIO3.EX  EQU       $                                                    1846.000
         POP                       RESTORE REGS                         1847.000
         TRSW      R0              RETURN                               1848.000
         PAGE                                                           1849.000
*++                                                                     1850.000
*                                                                       1851.000
* CON.IO  --  CALL A FUP I/O ROUTINE (ANOTHER ROUTINE IN THE I/O        1852.000
*             SEQUENCE) TO PREPARE THE FCB.  INTERCEPT ANY ABNORMAL     1853.000
*             CONDITIONS & TAKE APPROPRIATE ACTION.                     1854.000
*                                                                       1855.000
*        INPUT:    R2 = FCB ADDRESS                                     1856.000
*                  R3 = FUP I/O ROUTINE ADDRESS                         1857.000
*                  R6 = DATA BUFFER ADDRESS                             1858.000
*                  R7 = # BLOCKS TO TRANSFER                            1859.000
*                                                                       1860.000
*        OUTPUT:   NO EXPLICIT OUTPUT                                   1861.000
*                                                                       1862.000
*                                                                       1863.000
*--                                                                     1864.000
         SPACE                                                          1865.000
CON.IO   EQU       $                                                    1866.000
         PUSH                      SAVE REGS                            1867.000
         BL        0W,X3           GO TO PRE-DETERMINED I/O ROUTINE     1868.000
         BCF       CC1,IO.10       BRANCH IF NOT EOF/EOM                1869.000
         LA        R6,GEN.M004     ERROR MESSAGE                        1870.000
         BU        IO.15                                                1871.000
IO.10    BCF       CC2,IO.20       BRANCH IF NOT OTHER I/O ERROR(S)     1872.000
         LA        R6,GEN.M007     ERROR MESSAGE                        1873.000
IO.15    BL        FUPABRT2        ABORT ROUTINE -- ENTRY POINT FOR     1874.000
*                                  I/O RELATED PROBLEMS                 1875.000
IO.20    POP                                                            1876.000
         TRSW      R0              RETURN                               1877.000
         SPACE     5                                                    1878.000
*                                                                       1879.000
*                                                                       1880.000
*                                                                       1881.000
RIO2BUFF EQU       $                                                    1882.000
         SPACE                                                          1883.000
         PUSH                      SAVE REGS                            1884.000
         LA        R3,RRAN         RANDOM ACCESS READ ROUTINE           1885.000
         BU        WIO2.030        JOIN COMMON CODE                     1886.000
         SPACE     5                                                    1887.000
*                                                                       1888.000
*                                                                       1889.000
*                                                                       1890.000
         SPACE                                                          1891.000
WIO2BUFF EQU       $                                                    1892.000
         SPACE                                                          1893.000
         PUSH                      SAVE REGS                            1894.000
         LA        R3,WRAN         RANDOM ACCESS WRITE                  1895.000
         SPACE                                                          1896.000
WIO2.005 EQU       $                                                    1897.000
         SPACE                                                          1898.000
         TBM       IO2.F,FLAGBITS  IS SCRATCH FILE #2 ALLOCATED ???     1899.000
         BS        WIO2.030        GO FOR FILE ALREADY ALLOCATED        1900.000
*  ALLOCATE & OPEN THE TEMPORARY FILE                                   1901.000
*                                                                       1902.000
***  NOTE:  MUST ALLOCATE THE TEMPORARY FILE WITH READ & UPDATE ACCESS  1903.000
*  SINCE THE SORT CODE USES THE COMPATIBILITY INTERFACE ... AND THE     1904.000
*  INTERFACE ASSIGNS READ ACCESS FOR READ & UPDATE ACCESS FOR READ/WRITE1905.000
*                                                                       1906.000
*        LW        R7,IO2Z         LOGICAL FILE CODE G-STRING  ! 32B01  1907.000
*        BL        BUILDRR2        BUILD AN RRS ENTRY OF TYPE 2! 32B01  1908.000
*        LA        R2,RRS.BUF      BUFFER CONTAINING RRS ENTRY ! 32B01  1909.000
*        ZBM       RR.OPEN,RR.OPTS,X2   NO AUTOMATIC OPEN      ! 32B01  1910.000
*        SBM       RR.READ,RR.ACCS,X2   ALSO WANT READ ACCESS  ! 32B01  1911.000
         LI        R7,200          LOAD FILE CREATION SIZE     ! 32B01  1912.000
         BL        BUILDRCB        BUILD RCB EXPLICITLY        ! 32B01  1913.000
         BS        WIO2.007                                     S920607 1914.000
         LA        R2,RIDADDR      RID ADDRESS FOR TYPE 6 RRS  ! 32B01  1915.000
         LW        R4,=X'04000000' EXPLICIT UNBLOCKED          ! 32B01  1916.000
         LW        R6,=X'90000000' READ AND UPDATE ACCESS      ! 32B01  1917.000
         LW        R7,IO2Z         LOGICAL FILE CODE G-STRING  ! 32B01  1918.000
         BL        BUILDRR6        BUILD RRS TYPE 6            ! 32B01  1919.000
         LA        R5,IO2FCB       IO2 FCB ADDREES             85-0391  1920.000
         BL        X.ALOC          ALLOCATE THE FILE                    1921.000
         BNS       WIO2.020        GO FOR NO ERROR(S)                   1922.000
*                                                                       1923.000
*  ERROR OCCURED - CHECK ERROR CODE RETURNED TO SEE IF TEMPORARY FILE   1924.000
*  IS ALREADY ALLOCATED BY THIS TASK.                                   1925.000
*                                                                       1926.000
WIO2.007 CEQU      $                                            S920607 1927.000
         TRR       R7,R6           DITTO                                1928.000
         SLL       R6,8            MASK MODULE NUMBER                   1929.000
         SRL       R6,8                                                 1930.000
         CI        R6,REMM14       RESOURCE ALREADY ALLOCATED ???       1931.000
         BEQ       WIO2.010        GO FOR RES. ALREADY ALLOCATED        1932.000
*                                                                       1933.000
*  SOME OTHER ERROR HAS OCCURED - ABORT                                 1934.000
*  R7 CONTAINS MODULE #/ERROR # COMBO AS RETURNED FROM SUBROUTINE       1935.000
*                                                                       1936.000
         LA        R6,GEN.M002     ERROR MESSAGE                        1937.000
         BL        FUPABORT        ABORT ROUTINE - ENTRY POINT          1938.000
         SPACE     2                                                    1939.000
WIO2.010 EQU       $                                                    1940.000
         LA        R2,IO2FCB       FCB ADDRESS                          1941.000
         LW        R2,FCB.FATA,X2  FAT ADDRESS FROM FCB                 1942.000
         TBM       RR.READ,0B,X2   WAS READ ACCESS SPECIFIED AT         1943.000
*  ALLOCATION TIME ???                                                  1944.000
         BS        WIO2.025        GO FOR HAVE READ ACCESS              1945.000
*                                                                       1946.000
*  DON'T HAVE REQUIRED READ ACCESS, MUST DEALLOCATE FILE & REALLOCATE   1947.000
*                                                                       1948.000
         LA        R5,IO2FCB       FCB ADDRESS                          1949.000
         BL        X.DALC          DEALLOCATE FILE                      1950.000
         BNS       WIO2.005        GO FOR NO ERROR(S)                   1951.000
         LA        R6,GEN.M006     ERROR MESSAGE                        1952.000
*  R7 HAS MODULE #/ERROR # RETURNED FROM SERVICE SUBROUTINE             1953.000
         BL        FUPABORT        ABORT ROUTINE                        1954.000
         SPACE     2                                                    1955.000
WIO2.020 EQU       $                                                    1956.000
         LH        R7,CNP.ACC5     UPDATE ACCESS                        1957.000
         LA        R5,IO2FCB       FCB ADDRESS                          1958.000
         BL        X.OPEN          OPEN FILE WITH UPDATE ACCESS         1959.000
         BNS       WIO2.025        GO FOR NO ERROR(S)                   1960.000
*  OPEN FAILED  --  ISSUE ERROR MESSAGE & ABORT                         1961.000
         LA        R6,GEN.M002     ERROR MESSAGE                        1962.000
*  R7 ALREADY CONTAINS MODULE #/ERROR # COMBO AS RETURNED FROM SERVICE  1963.000
*  SUBROUTINE                                                           1964.000
         BL        FUPABORT        ABORT ROUTINE - ENTRY POINT          1965.000
         SPACE     2                                                    1966.000
WIO2.025 EQU       $                                                    1967.000
         SBM       IO2.F,FLAGBITS  INDICATE FILE HAS NOW BEEN ALLOCATED 1968.000
         ZBM       IO21ST.F,FLAGS  INDICATE HAVEN'T PERFORMED 1ST I/O YE1969.000
WIO2.030 EQU       $                                                    1970.000
         SBM       IO21ST.F,FLAGS  IS THIS THE FIRST I/O TO THE         1971.000
*                                  TEMPORARY FILE ???                   1972.000
         BS        WIO2.040        GO FOR NOT 1ST I/O                   1973.000
*                                                                       1974.000
*  INITIALIZE THE RANDOM ACCESS ADDRESS.  RESERVE SECTOR ZERO FOR       1975.000
*  CONTROL INFORMATION                                                  1976.000
*                                                                       1977.000
         LI        R0,1            INITIALIZE                           1978.000
         STW       R0,IO2SADDR     INITIALIZE RANDOM ACCESS ADDRESS     1979.000
         BU        WIO2.050                                             1980.000
         SPACE                                                          1981.000
WIO2.040 EQU       $                                                    1982.000
         SPACE                                                          1983.000
         LI        R0,IOBUFFSZ     # BLOCKS TRANSFERED                  1984.000
         ARMW      R0,IO2SADDR     INCREMENT RANDOM ACCESS ADDRESS      1985.000
*  SET-UP FOR THE I/O                                                   1986.000
WIO2.050 EQU       $                                                    1987.000
         LA        R2,IO2FCB       FCB ADDRESS                          1988.000
         LW        R0,IO2SADDR     GET THE RANDOM ACCESS ADDRESS        1989.000
         STW       R0,FCB.ERAA,X2  PLANT IN FCB                         1990.000
         LA        R6,IO2BUFF      DATA BUFFER ADDRESS                  1991.000
         LI        R7,IOBUFFSZ     # BLOCKS TO TRANSFER                 1992.000
*  DO THE I/O                                                           1993.000
         BL        CON.IO          GO THROUGH INTERMEDIATE ROUTINE(S)   1994.000
*                                  TO FACILITATE PROCESSING OF ERRORS   1995.000
         POP                       RESTORE REGS                         1996.000
         TRSW      R0              RETURN                               1997.000
         SPACE     5                                                    1998.000
*                                                                       1999.000
*                                                                       2000.000
*                                                                       2001.000
RIO3BUFF EQU       $                                                    2002.000
         SPACE                                                          2003.000
         PUSH                      SAVE REGS                            2004.000
         LA        R3,RRAN         RANDOM ACCESS READ ROUTINE           2005.000
         BU        WIO3.030        JOIN COMMON CODE                     2006.000
         SPACE     5                                                    2007.000
*                                                                       2008.000
*                                                                       2009.000
*                                                                       2010.000
         SPACE                                                          2011.000
WIO3BUFF EQU       $                                                    2012.000
         SPACE                                                          2013.000
         PUSH                      SAVE REGS                            2014.000
         LA        R3,WRAN         RANDOM ACCESS WRITE                  2015.000
         SPACE                                                          2016.000
WIO3.005 EQU       $                                                    2017.000
         SPACE                                                          2018.000
         TBM       IO3.F,FLAGBITS  IS SCRATCH FILE #2 ALLOCATED ???     2019.000
         BS        WIO3.030        GO FOR FILE ALREADY ALLOCATED        2020.000
*  ALLOCATE & OPEN THE TEMPORARY FILE                                   2021.000
*                                                                       2022.000
***  NOTE:  MUST ALLOCATE THE TEMPORARY FILE WITH READ & UPDATE ACCESS  2023.000
*  SINCE THE SORT CODE USES THE COMPATIBILITY INTERFACE ... AND THE     2024.000
*  INTERFACE ASSIGNS READ ACCESS FOR READ & UPDATE ACCESS FOR READ/WRITE2025.000
*                                                                       2026.000
*!       LW        R7,IO3Z         LOGICAL FILE CODE G-STRING  ! 32B01  2027.000
*!       BL        BUILDRR2        BUILD AN RRS ENTRY OF TYPE 2! 32B01  2028.000
*!       LA        R2,RRS.BUF      BUFFER CONTAINING RRS ENTRY ! 32B01  2029.000
*!       ZBM       RR.OPEN,RR.OPTS,X2  NO AUTOMATIC OPEN       ! 32B01  2030.000
*!       SBM       RR.READ,RR.ACCS,X2  ALSO WANT READ ACCESS   ! 32B01  2031.000
         LI        R7,200                                      ! 32B01  2032.000
         BL        BUILDRCB                                    ! 32B01  2033.000
         BS        WIO3.007                                     S920607 2034.000
         LA        R2,RIDADDR                                  ! 32B01  2035.000
         LW        R4,=X'04000000'                             ! 32B01  2036.000
         LW        R6,=X'90000000'                             ! 32B01  2037.000
         LW        R7,IO3Z                                     ! 32B01  2038.000
         BL        BUILDRR6                                    ! 32B01  2039.000
         LA        R5,IO3FCB       IO3 FCB ADDRESS             85-0391  2040.000
         BL        X.ALOC          ALLOCATE THE FILE                    2041.000
         BNS       WIO3.020        GO FOR NO ERROR(S)                   2042.000
*                                                                       2043.000
*  ERROR OCCURED - CHECK ERROR CODE RETURNED TO SEE IF TEMPORARY FILE   2044.000
*  IS ALREADY ALLOCATED BY THIS TASK.                                   2045.000
*                                                                       2046.000
WIO3.007 CEQU      $                                            S920607 2047.000
         TRR       R7,R6           DITTO                                2048.000
         SLL       R6,8            MASK MODULE NUMBER                   2049.000
         SRL       R6,8                                                 2050.000
         CI        R6,REMM14       RESOURCE ALREADY ALLOCATED ???       2051.000
         BEQ       WIO3.010        GO FOR RES. ALREADY ALLOCATED        2052.000
*                                                                       2053.000
*  SOME OTHER ERROR HAS OCCURED - ABORT                                 2054.000
*  R7 CONTAINS MODULE #/ERROR # COMBO AS RETURNED FROM SUBROUTINE       2055.000
*                                                                       2056.000
         LA        R6,GEN.M002     ERROR MESSAGE                        2057.000
         BL        FUPABORT        ABORT ROUTINE - ENTRY POINT          2058.000
         SPACE     2                                                    2059.000
WIO3.010 EQU       $                                                    2060.000
         LA        R2,IO3FCB       FCB ADDRESS                          2061.000
         LW        R2,FCB.FATA,X2  FAT ADDRESS FROM FCB                 2062.000
         TBM       RR.READ,0B,X2   WAS READ ACCESS SPECIFIED AT         2063.000
*  ALLOCATION TIME ???                                                  2064.000
         BS        WIO3.025        GO FOR HAVE READ ACCESS              2065.000
*                                                                       2066.000
*  DON'T HAVE REQUIRED READ ACCESS, MUST DEALLOCATE FILE & REALLOCATE   2067.000
*                                                                       2068.000
         LA        R5,IO3FCB       FCB ADDRESS                          2069.000
         BL        X.DALC          DEALLOCATE FILE                      2070.000
         BNS       WIO3.005        GO FOR NO ERROR(S)                   2071.000
         LA        R6,GEN.M006     ERROR MESSAGE                        2072.000
*  R7 HAS MODULE #/ERROR # RETURNED FROM SERVICE SUBROUTINE             2073.000
         BL        FUPABORT        ABORT ROUTINE                        2074.000
         SPACE     2                                                    2075.000
WIO3.020 EQU       $                                                    2076.000
         LH        R7,CNP.ACC5     UPDATE ACCESS                        2077.000
         LA        R5,IO3FCB       FCB ADDRESS                          2078.000
         BL        X.OPEN          OPEN FILE WITH UPDATE ACCESS         2079.000
         BNS       WIO3.025        GO FOR NO ERROR(S)                   2080.000
*  OPEN FAILED  --  ISSUE ERROR MESSAGE & ABORT                         2081.000
         LA        R6,GEN.M002     ERROR MESSAGE                        2082.000
*  R7 ALREADY CONTAINS MODULE #/ERROR # COMBO AS RETURNED FROM SERVICE  2083.000
*  SUBROUTINE                                                           2084.000
         BL        FUPABORT        ABORT ROUTINE - ENTRY POINT          2085.000
         SPACE     2                                                    2086.000
WIO3.025 EQU       $                                                    2087.000
         SBM       IO3.F,FLAGBITS  INDICATE FILE HAS NOW BEEN ALLOCATED 2088.000
         ZBM       IO31ST.F,FLAGS  INDICATE HAVEN'T PERFORMED 1ST I/O YE2089.000
WIO3.030 EQU       $                                                    2090.000
         SBM       IO31ST.F,FLAGS  IS THIS THE FIRST I/O TO THE         2091.000
*                                  TEMPORARY FILE ???                   2092.000
         BS        WIO3.040        GO FOR NOT 1ST I/O                   2093.000
*                                                                       2094.000
*  INITIALIZE THE RANDOM ACCESS ADDRESS.  RESERVE SECTOR ZERO FOR       2095.000
*  CONTROL INFORMATION                                                  2096.000
*                                                                       2097.000
         LI        R0,1            INITIALIZE                           2098.000
         STW       R0,IO3SADDR     INITIALIZE RANDOM ACCESS ADDRESS     2099.000
         BU        WIO3.050                                             2100.000
         SPACE                                                          2101.000
WIO3.040 EQU       $                                                    2102.000
         SPACE                                                          2103.000
         LI        R0,IOBUFFSZ     # BLOCKS TRANSFERED                  2104.000
         ARMW      R0,IO3SADDR     INCREMENT RANDOM ACCESS ADDRESS      2105.000
*  SET-UP FOR THE I/O                                                   2106.000
WIO3.050 EQU       $                                                    2107.000
         LA        R2,IO3FCB       FCB ADDRESS                          2108.000
         LW        R0,IO3SADDR     GET THE RANDOM ACCESS ADDRESS        2109.000
         STW       R0,FCB.ERAA,X2  PLANT IN FCB                         2110.000
         LA        R6,IO3BUFF      DATA BUFFER ADDRESS                  2111.000
         LI        R7,IOBUFFSZ     # BLOCKS TO TRANSFER                 2112.000
*  DO THE I/O                                                           2113.000
         BL        CON.IO          GO THROUGH INTERMEDIATE ROUTINE(S)   2114.000
*                                  TO FACILITATE PROCESSING OF ERRORS   2115.000
         POP                       RESTORE REGS                         2116.000
         TRSW      R0              RETURN                               2117.000
         TITLE     RN.NAME - HANDLE WILD CARD RENAMING                  2118.000
         SPACE                                                          2119.000
*                                                                       2120.000
*  SET CC'S IF NO PROTOTYPE TO OUTPUT, IE., IF ALL WERE ELIMINATED      2121.000
*                                                                       2122.000
         SPACE                                                          2123.000
RN.NAME  EQU       $                                                    2124.000
         ANMW      R0,ADR.MASK     INITIALIZE CC'S FOR RETURN           2125.000
         PUSH                      SAVE REGS                            2126.000
*  INITIALIZE "IO1BUFF" POINTERS                                        2127.000
         SBM       INITIO1,FLAGS                                        2128.000
*  INITIALIZE "IO3BUFF" POINTERS                                        2129.000
         SBM       INITIO3,FLAGS                                        2130.000
         ZMW       IO3COUNT        INITIALIZE # ENTRY(S) RECEIVED       2131.000
         ZBM       IO31ST.F,FLAGS  EFFECT A (LOGICAL) REWIND            2132.000
*  IF TEMPORARY FILE IS ASSIGNED                                        2133.000
         SPACE                                                          2134.000
*                                                                       2135.000
*  CHECK "IO1COUNT" HERE                                                2136.000
*                                                                       2137.000
RN.010   EQU       $                                                    2138.000
         BL        GETIO1                                               2139.000
         BS        RN.060          GO FOR NONE REMAINING                2140.000
*  GET "FROM" VOLUME NAME                                               2141.000
         BL        GETFVN                                               2142.000
*  GET "TO" PROTOTYPE VOLUME NAME                                       2143.000
         BL        GETTPVN                                              2144.000
*  PERFORM THE RENAME                                                   2145.000
         LA        R7,VOL          FOR ERROR MESSAGE IN CASE OF ERROR   2146.000
         BL        REN.NAME                                             2147.000
         BCT       CC1,RN.040                                           2148.000
         BCT       CC3,RN.050                                           2149.000
*  PLANT (DERIVED) VOLUME NAME IN "IO1BUFF"                             2150.000
         LI        R4,PRONM.O      MAX. LENGTH OF NAME                  2151.000
         LA        R2,REN.BUF      NEW VOLUME NAME ADDRESS              2152.000
         LW        R3,IO1BIDX                                           2153.000
         LA        R3,PROTVN.O,X3  ADDRESS OF DESTINATION               2154.000
         BL        COPYSTRG                                             2155.000
*  GET THE "FROM" DIRECTORY NAME                                        2156.000
         BL        GETFDN                                               2157.000
*  GET "TO" PROTOTYPE DIRECTORY NAME                                    2158.000
         BL        GETTPDN                                              2159.000
*  PERFORM THE RENAME                                                   2160.000
         LA        R7,DIR          FOR ERROR MESSAGE IN CASE OF ERROR   2161.000
         BL        REN.NAME                                             2162.000
         BCT       CC1,RN.040                                           2163.000
         BCT       CC3,RN.050                                           2164.000
*  PLANT NEW DIRECTORY NAME IN "IO1BUFF"                                2165.000
         LI        R4,PRONM.O      MAX. LENGTH OF NAME                  2166.000
         LA        R2,REN.BUF                                           2167.000
         LW        R3,IO1BIDX                                           2168.000
         LA        R3,PROTDN.O,X3                                       2169.000
         BL        COPYSTRG                                             2170.000
*  GET "FROM" FILE NAME                                                 2171.000
         BL        GETFFN                                               2172.000
*  GET "TO" PROTOTYPE FILE NAME                                         2173.000
         BL        GETTPFN                                              2174.000
*  PERFORM THE RENAME                                                   2175.000
         LA        R7,FIL          FOR ERROR MESSAGE IN CASE OF ERROR   2176.000
         BL        REN.NAME                                             2177.000
         BCT       CC1,RN.040                                           2178.000
         BCT       CC3,RN.050                                           2179.000
         BL        PLANTIO3                                             2180.000
         BU        RN.010                                               2181.000
         SPACE     2                                                    2182.000
RN.040   EQU       $                                                    2183.000
*  ERROR - DERIVED NAME GREATER THAT 16 CHARACTERS IN LENGTH            2184.000
         LA        R6,EXCEED16     ERROR MESSAGE                        2185.000
RN.045   EQU       $               COMMON CODE FOR BOTH ERRORS          2186.000
         LW        R2,IO1BIDX      ADDR. OF PATHNAME CAUSING ERROR      2187.000
         BL        ERROR5          PRINT FUNCTION & PATHNAME            2188.000
         STW       R7,ERR.BLK      VOLUME OR DIRECTORY OR FILE          2189.000
         STW       R6,ERR.BLK+1W   ERROR MESSAGE SELECTION              2190.000
         LA        R2,RN.ERR       FORMATING STRING                     2191.000
         LA        R3,ERR.BLK      PARAMETER BLOCK                      2192.000
         BL        FORMATOT        FORMAT & PRINT THE ERROR MESSAGE     2193.000
         BU        RN.010          GO BACK FOR NEXT PROTOTYPE/PATHNAME  2194.000
         SPACE     2                                                    2195.000
RN.050   EQU       $                                                    2196.000
*  ERROR - INVALID WILDCARD USAGE                                       2197.000
         LA        R6,INVALID      ERROR MESSAGE                        2198.000
         BU        RN.045          JOIN COMMON CODE                     2199.000
         SPACE     2                                                    2200.000
RN.060   EQU       $                                                    2201.000
         TBM       IO31ST.F,FLAGS  IO3 TEMP FILE USED                   2202.000
         BNS       RN.100          GO FOR FILE NOT USED                 2203.000
*  "IO3" TEMPORARY FILE USED; WRITE LAST BUFFER FULL, REWIND & READ     2204.000
*  COPY "IO3" TEMPORARY FILE TO "IO1" TEMPORARY FILE                    2205.000
         BL        WIO3BUFF                                             2206.000
         ZBM       IO31ST.F,FLAGS  EFFECT A (LOGICAL) REWIND            2207.000
         ZBM       IO11ST.F,FLAGS  EFFECT A (LOGICAL) REWIND            2208.000
         LW        R7,IO3SADDR     RETAIN LENGTH OF FILE                2209.000
         LW        R0,IO3COUNT     RETAIN # ENTRY(S) IN FILE            2210.000
         STW       R0,IO1COUNT                                          2211.000
*                                                                       2212.000
*  TRANSFER DATA FROM "IO3" TEMPORARY FILE TO "IO1" TEMPORARY FILE      2213.000
*                                                                       2214.000
         SBM       USEIO3B,FLAGS   USE IO3BUFF INSTEAD OF IO1BUFF       2215.000
RN.070   EQU       $                                                    2216.000
         BL        RIO3BUFF        READ "IO3" TEMPORARY FILE            2217.000
         BL        WIO1BUFF        WRITE "IO1" TEMPORARY FILE           2218.000
         CAMW      R7,IO3SADDR     DONE TRANSFERING ???                 2219.000
         BGT       RN.070          GO FOR MORE TO DO                    2220.000
         ZBM       USEIO3B,FLAGS   SET BACK TO NORMAL OPERATION         2221.000
         ZBM       IO11ST.F,FLAGS  EFFECT A (LOGICAL) REWIND            2222.000
         BL        RIO1BUFF        READ 1ST BUFFER FULL                 2223.000
         SBM       IO1USE.F,FLAGBITS   INDICATE SCRATCH FILE WAS USED   2224.000
         BU        RN.110          JOIN COMMON CODE                     2225.000
         SPACE     2                                                    2226.000
RN.100   EQU       $                                                    2227.000
*  COPY "IO3BUFF" BUFFER TO "IO1BUFF" BUFFER                            2228.000
         LW        R0,IO3COUNT     RETAIN # ENTRY(S) IN BUFFER          2229.000
         STW       R0,IO1COUNT                                          2230.000
         LA        R2,IO3BUFF      SOURCE                               2231.000
         LA        R3,IO1BUFF      DESTINATION                          2232.000
         LI        R4,IO3MXIDX     LENGTH OF BUFFER (IN BYTES)          2233.000
         BL        COPYSTRG        COPY IO3BUFF TO IO1BUFF              2234.000
         SPACE                                                          2235.000
RN.110   EQU       $                                                    2236.000
         LA        R0,IO1BUFF      SET UP FOR "FUPPRO" MODULE           2237.000
         SUI       R0,PROSZ.O      SO 1ST ENTRY IN BUFFER WILL          2238.000
         STW       R0,IO1BIDX      BE SELECTED                          2239.000
         ZBM       GWILD.F,FLAGBITS     INITIALIZE                      2240.000
         ZBM       SORT.F,FLAGBITS      INITIALIZE                      2241.000
         ZBM       IO3.F,FLAGBITS  LFC "IO3" IN USE ???                 2242.000
         BNS       RN.120          GO FOR LFC "IO3" NOT IN USE          2243.000
         LA        R5,IO3FCB       FCB ADDRESS                          2244.000
         BL        X.DALC          DEALLOCATE RESOURCE ON LFC "IO3"     2245.000
         BNS       RN.120          GO FOR SUCCESSFUL DEALLOCATION       2246.000
*        PROCESS DEALLOCATION ERRORS                                    2247.000
*                                                                       2248.000
         LA        R6,GEN.M006     ERROR MESSAGE                        2249.000
*        R7 HAS MODULE #/ERROR #  RETURNED FROM SYSTEM SERVICE          2250.000
         BL        FUPABORT        ABORT ROUTINE                        2251.000
         SPACE     2                                                    2252.000
RN.120   EQU       $                                                    2253.000
         POP                       RESTORE REGS                         2254.000
         TRSW      R0              RETURN                               2255.000
         SPACE     5                                                    2256.000
*  GET "FROM" VOLUME NAME                                               2257.000
GETFVN   EQU       $                                                    2258.000
         PUSH                      SAVE REGS                            2259.000
         LW        R3,IO1BIDX      CURRENT ENTRY                        2260.000
         LA        R7,PROFVN.O,X3  ADDRESS OF VOLUME NAME               2261.000
         STW       R7,2W,X1        PLANT ON STACK FOR RETURN            2262.000
         BL        GETPATH         GET SIGNIFICANT LENGTH OF NAME       2263.000
         SRL       R7,24           POSITION LENGTH                      2264.000
         STW       R7,4W,X1        PLANT ON STACK FOR RETURN            2265.000
         POP                       RESTORE REGS                         2266.000
         TRSW      R0              RETURN                               2267.000
         SPACE     5                                                    2268.000
*  GET "TO" PROTOTYPE VOLUME NAME                                       2269.000
GETTPVN  EQU       $                                                    2270.000
         ZR        R6              INITIALIZE                           2271.000
         PUSH                      SAVE REGS                            2272.000
         LW        R3,IO1BIDX      CURRENT ENTRY                        2273.000
         LW        R3,PROFPA.O,X3  MEM. RES. PROTOTYPE TABLE ENTRY      2274.000
         LA        R7,PROTVN.O,X3  "TO" PROTOTYPE VOLUME NAME           2275.000
         STW       R7,3W,X1        ADDR. "TO" PROTO. VOL. NAME          2276.000
         LB        R7,PROTVL.O,X3  LENGTH OF NAME                       2277.000
         STW       R7,5W,X1        PLANT ON STACK FOR RETURN            2278.000
         TBM       QUOTE.F,PROTVF.O,X3   PROT. NAME QUOTED ???          2279.000
         BNS       GVN.010         GO FOR NOT QUOTED                    2280.000
         SBM       QUOTED.F,6W,X1  INDICATE QUOTED                      2281.000
GVN.010  EQU       $                                                    2282.000
         POP                       RESTORE REGS                         2283.000
         TRSW      R0              RETURN                               2284.000
         SPACE     5                                                    2285.000
*  GET "FROM" DIRECTORY NAME                                            2286.000
GETFDN   EQU       $                                                    2287.000
         PUSH                      SAVE REGS                            2288.000
         LW        R3,IO1BIDX      CURRENT ENTRY                        2289.000
         LA        R7,PROFDN.O,X3  ADDRESS OF DIRECTORY NAME            2290.000
         STW       R7,2W,X1        PLANT ON STACK FOR RETURN            2291.000
         BL        GETPATH         GET SIGNIFICANT LENGTH OF NAME       2292.000
         SRL       R7,24           POSITION LENGTH                      2293.000
         STW       R7,4W,X1        PLANT ON STACK FOR RETURN            2294.000
         POP                       RESTORE REGS                         2295.000
         TRSW      R0              RETURN                               2296.000
         SPACE     5                                                    2297.000
*  GET "TO" PROTOTYPE DIRECTORY NAME                                    2298.000
GETTPDN  EQU       $                                                    2299.000
         ZR        R6              INITIALIZE                           2300.000
         PUSH                      SAVE REGS                            2301.000
         LW        R3,IO1BIDX      CURRENT ENTRY                        2302.000
         LW        R3,PROFPA.O,X3  MEM. RES. PROTOTYPE TABLE ENTRY      2303.000
         LA        R7,PROTDN.O,X3  "TO" PROTOTYPE DIRECTORY NAME        2304.000
         STW       R7,3W,X1        ADDR. "TO" PROTO. DIR. NAME          2305.000
         LB        R7,PROTDL.O,X3  LENGTH OF NAME                       2306.000
         STW       R7,5W,X1        PLANT ON STACK FOR RETURN            2307.000
         TBM       QUOTE.F,PROTDF.O,X3   PROT. NAME QUOTED ???          2308.000
         BNS       GDN.010         GO FOR NOT QUOTED                    2309.000
         SBM       QUOTED.F,6W,X1  INDICATE QUOTED                      2310.000
GDN.010  EQU       $                                                    2311.000
         POP                       RESTORE REGS                         2312.000
         TRSW      R0              RETURN                               2313.000
         SPACE     5                                                    2314.000
*  GET "FROM" FILE NAME                                                 2315.000
GETFFN   EQU       $                                                    2316.000
         PUSH                      SAVE REGS                            2317.000
         LW        R3,IO1BIDX      CURRENT ENTRY                        2318.000
         LA        R7,PROFFN.O,X3  ADDRESS OF FILE NAME                 2319.000
         STW       R7,2W,X1        PLANT ON STACK FOR RETURN            2320.000
         BL        GETPATH         GET SIGNIFICANT LENGTH OF NAME       2321.000
         SRL       R7,24           POSITION LENGTH                      2322.000
         STW       R7,4W,X1        PLANT ON STACK FOR RETURN            2323.000
         POP                       RESTORE REGS                         2324.000
         TRSW      R0              RETURN                               2325.000
         SPACE     5                                                    2326.000
*  GET "TO" PROTOTYPE FILE NAME                                         2327.000
GETTPFN  EQU       $                                                    2328.000
         ZR        R6              INITIALIZE                           2329.000
         PUSH                      SAVE REGS                            2330.000
         LW        R3,IO1BIDX      CURRENT ENTRY                        2331.000
         LW        R3,PROFPA.O,X3  MEM. RES. PROTOTYPE TABLE ENTRY      2332.000
         LA        R7,PROTFN.O,X3  "TO" PROTOTYPE FILE NAME             2333.000
         STW       R7,3W,X1        ADDR. "TO" PROTO. FILE NAME          2334.000
         LB        R7,PROTFL.O,X3  LENGTH OF NAME                       2335.000
         STW       R7,5W,X1        PLANT ON STACK FOR RETURN            2336.000
         TBM       QUOTE.F,PROTFF.O,X3   PROT. NAME QUOTED ???          2337.000
         BNS       GFN.010         GO FOR NOT QUOTED                    2338.000
         SBM       QUOTED.F,6W,X1  INDICATE QUOTED                      2339.000
GFN.010  EQU       $                                                    2340.000
         POP                       RESTORE REGS                         2341.000
         TRSW      R0              RETURN                               2342.000
         SPACE     5                                                    2343.000
*  COPY "IO1BUFF" ENTRY TO "IO3BUFF" ENTRY                              2344.000
*  COPY NAME FROM "REN.BUF" TO IO3BUFF ENTRY                            2345.000
PLANTIO3 EQU       $                                                    2346.000
         PUSH                      SAVE REGS                            2347.000
         ZBM       INITIO3,FLAGS   INITIALIZE IO3BUFF POINTERS ???      2348.000
         BNS       PLA.005         GO FOR NOT INITIALIZATION            2349.000
         ZMW       IO3COUNT        INITIALIZE # ENTRY(S) RECEIVED       2350.000
         BU        PLA.010         GO TO INITIALIZE BUFFER & POINTERS   2351.000
PLA.005  EQU       $                                                    2352.000
         LW        R3,IO3BIDX      ADDR. PREVIOUS ENTRY                 2353.000
         ADI       R3,PROSZ.O      SIZE OF AN ENTRY                     2354.000
         CAMW      R3,IO3BLEN      END OF BUFFER ???                    2355.000
         BLT       PLA.020         GO FOR NOT END                       2356.000
         BL        WIO3BUFF        WRITE BUFFER OUT TO TEMP. FILE       2357.000
PLA.010  EQU       $                                                    2358.000
         LA        R3,IO3BUFF      ADDR. OF 1ST BUFFER ENTRY            2359.000
         TRR       R3,R0           DITTO                                2360.000
         ADI       R0,IO3MXIDX     BUFFER ENDING ADDRESS                2361.000
         STW       R0,IO3BLEN      SAVE FOR LATER COMPARISONS           2362.000
PLA.020  EQU       $                                                    2363.000
         STW       R3,IO3BIDX      SAVE UPDATED BUFFER ENTRY ADDRESS    2364.000
         ABM       31,IO3COUNT     INCREMENT # ENTRY(S) RECEIVED        2365.000
         LW        R2,IO1BIDX      SOURCE PROTOTYPE ADDRESS             2366.000
         LI        R4,PROSZ.O      SIZE OF A PROTOTYPE ENTRY            2367.000
         BL        COPYSTRG        COPY SOURCE TO DESTINATION           2368.000
         LA        R2,REN.BUF      DERIVED FILE NAME (SOURCE)           2369.000
         LI        R4,PRONM.O      LENGTH OF A FILE NAME                2370.000
         LA        R3,PROTFN.O,X3  DESTINATION                          2371.000
         BL        COPYSTRG        COPY SOURCE TO DESTINATION           2372.000
         POP                       RESTORE REGS                         2373.000
         TRSW      R0              RETURN                               2374.000
         SPACE     5                                                    2375.000
GETIO1   EQU       $                                                    2376.000
         ANMW      R0,ADR.MASK     INITIALIZE CC'S FOR RETURN           2377.000
         PUSH                      SAVE REGS                            2378.000
         ZBM       INITIO1,FLAGS   INITIALIZE ???                       2379.000
         BNS       GET.002         GO FOR NOT INITIALIZATION            2380.000
         LNW       R0,IO1COUNT     # ENTRY(S) IN "IO1BUFF" AND/OR "IO1" 2381.000
*                                  TEMPORARY FILE                       2382.000
         STW       R0,IO1COUNT     COUNT NEGATED FOR LOOP COUNTER       2383.000
         BZ        GET.005         GO IF NONE                           2384.000
         BU        GET.020         GO TO INITIALIZE BUFFER & POINTERS   2385.000
         SPACE     2                                                    2386.000
GET.002  EQU       $                                                    2387.000
         ABM       31,IO1COUNT     DECREMENT REMAINING # OF PROTOTYPES  2388.000
         BN        GET.010         GO FOR HAVE A PROTOTYPE              2389.000
GET.005  EQU       $                                                    2390.000
         SBM       CC1,0W,X1       INDICATE NONE REMAINING              2391.000
         BU        GET.EX          GO TO ROUTINE EXIT POINT             2392.000
GET.010  EQU       $                                                    2393.000
         LW        R3,IO1BIDX      ADDR. OF PREV. ENTRY                 2394.000
         ADI       R3,PROSZ.O      SIZE OF AN ENTRY                     2395.000
         CAMW      R3,IO1BLEN      END OF BUFFER ???                    2396.000
         BLT       GET.030         GO FOR NOT END                       2397.000
         BL        RIO1BUFF        READ ANOTHER BUFFER FULL             2398.000
GET.020  EQU       $                                                    2399.000
         LA        R3,IO1BUFF      ADDR. OF 1ST ENTRY                   2400.000
         TRR       R3,R0           DITTO                                2401.000
         ADI       R0,IO1MXIDX     BUFFER ENDING ADDRESS                2402.000
         STW       R0,IO1BLEN      SAVE FOR COMPARISONS                 2403.000
GET.030  EQU       $                                                    2404.000
         STW       R3,IO1BIDX      SAVE UPDATE BUFFER ENTRY ADDRESS     2405.000
GET.EX   EQU       $                                                    2406.000
         POP                       RESTORE REGS                         2407.000
         TRSW      R0              RETURN                               2408.000
*                                                                       2409.000
         SPACE     2                                                    2410.000
         END                                                            2411.000
