*COMDECK ATTACH 
          EJECT 
          IFEQ   OS$NAME,KRONOS 
OPL       XTEXT  COMCMAC     NEEDED TO USE ROLLOUT MACRO
          ENTRY  ATTACH 
**                          **
**      A T T A C H         **
**                          **
** THIS ROUTINE ATTACHES A FILE. THE FIRST CALLING PARAMETER IS THE 13
** WORD FET. THE SECOND WILL RECEIVE THE RETURN CODE
          SPACE  2
ATTACH    JP     *+400000B   ENTRY POINT
          SA2    A1+1 
          SX6    X2          (X2) IS RETURN CODE ADDRESS
          SA6    RCADDR 
          SA1    A1          MAKE SURE (X1) IS CORRECT
          SX6    X1          (X1) IS ADDRESS OF FET 
          SA6    FETADDR
          SA2    X1 
          MX0    -1 
          BX6    -X0+X2      (X6) IS FET+0 WITH BUSY BIT SET
          SA6    X1          STORE BACK INTO FET+0
          SA2    FET1 
          SA3    X1+1        (X3) = FET+1 WORD
          MX0    12 
          BX6    X0*X3       CLEAR ALL BUT THE *DT* FIELD 
          BX6    X6+X2       MERGE IN THE *EP* AND *L* FIELDS 
          SA6    A3          REPLACE FET+1 WORD 
          SA2    X1+10
          SX6    ERRMESS     (X6) IS ADDRESS OF ERRMESS 
          MX0    42 
          BX2    X0*X2       CLEAR OUT THE ERAD FIELD 
          BX6    X6+X2       INSERT THE ADDRESS OF ERRMESS
          SA6    A2          STORE BACK IN FET+10 
          ATTACH X1          KRONOS MACRO 
          SA1    TERMINAL     IF TERMINAL 
          ZR     X1,CONT
          PROMPT OFF          PROMPT OFF IS DEFAULT 
          SA1    =XOPROCES     AND O=LFN USED,
          ZR     X1,CONT
          PROMPT ON           THEN TURN NOS PROMPT ON.
CONT      BSS    0
          SA1    FETADDR
          SA1    X1          (X1) IS ADDRESS OF FET 
          MX0    -8 
          AX1    10          POSITION FET+0 WITH RETURN CODE R-JUSTIFIED
          BX6    -X0*X1      (X6) IS THE ABNORMAL TERMINATION FIELD 
          SA2    RCADDR 
          SA6    X2          (X2) IS ADDRESS OF CALLERS RETURN CODE 
          EQ     ATTACH 
          SPACE  1
FETADDR   BSSZ   1           HOLDS ADDRESS OF FET 
RCADDR    BSSZ   1           HOLDS ADDRESS OF RETURN CODE FOR CALLER
 FET1     VFD    15/0,1/1,20/0,6/8,18/0  ERROR BIT AND LENGTH(8+5=13) 
ERRMESS   BSSZ   3           SPACE FOR PFM ERROR MSG SO NOT ON DAYFILE
          SPACE  3
          ENTRY  WAIT        ROUTINE TO WAIT A NUMBER OF SECONDS
WAIT      JP     *+400000B
          ROLLOUT X1         (X1) IS ADDR OF NBR OF SECONDS TO WAIT 
          EQ     WAIT 
          ENDIF 
          EJECT 
          IFEQ   OS$NAME,SCOPE
          ENTRY  ATTACH 
**                          **
**      A T T A C H         **
*                           **
** THIS ROUTINE ATTACHES A FILE. THE FIRST CALLING PARAMETER IS THE FDB.
** THE SECOND WILL RECEIVE THE RETURN CODE. IF THE ATTACH WAS SUCCESSFUL
** (RC = 0).
          SPACE  1
ATTACH    JP     *+400000B
          SA2    A1+1 
          BX6    X2          (X2) IS ADDRESS OF RETURN CODE 
          SA6    RCADDR 
          SX1    X1+4        (X1) IS ADDRESS OF LFN IN FDB
          SX6    X1 
          SA6    LFNADDR
          SA2    X1          PICK UP WORD WITH LFN
          MX6    42 
          BX6    X2*X6       SAVE ONLY THE LFN
          SX3    8           FUNCTION CODE FOR -ATTACH- 
          SA4    TERMINAL 
          ZR     X4,BATCH    IF RUNNING BATCH 
          SX3    X3+200B     INTERACTIVE - SET REAL TIME BIT
BATCH     BX6    X6+X3       INSERT FUNC CODE AND MAYBE REAL TIME BIT 
          SA6    X1          PUT MODIFIED WORD IN FDB 
          SA3    PFAREQ      GET THE WORD FOR CALLING -PFA- W/RECALL
          BX6    X3+X1       INSERT LFN ADDRESS INTO -PFA- REQUEST
          RJ     =XSYS= 
          SA1    LFNADDR
          SA4    X1          (X1) IS ADDRESS OF LFN IN FDB
          MX0    -9 
          AX4    9           RIGHT JUSTIFY RETURN CODE FIELD
          BX6    -X0*X4      (X6) IS THE RETURN CODE
          SA2    RCADDR 
          SA6    X2          (X2) IS ADDR TO GIVE CALLER RETURN CODE
          EQ     ATTACH 
          SPACE  2
LFNADDR   BSSZ   1           HOLDS ADDRESS OF LFN IN FDB
RCADDR    BSSZ   1           HOLDS ADDRESS OF RETURN CODE FOR CALLER
PFAREQ    VFD    24/4LPFAP,36/0    WORD FOR -PFA- REQUEST  W/RECALL 
          ENDIF 
          SPACE  4,8
**        PERM - CHECK PERMANENT FILE PERMISSIONS 
* 
*              THIS ROUTINE IS CALLED TO SET THE PERMANENT FILE 
*         PERMISSION CODE IN THE RC FIELD OF THE FDB.  IT IS CALLABLE 
*         FROM SYMPL WITH THE FWA FDB PASSED AS THE ONLY PARAMETER. 
* 
*         ENTRY  - (A1) = ADDR OF PARAMETER LIST
* 
*         EXIT   NONE 
* 
*         CALLS  PRM VIA RA+1 REQUEST 
  
          ENTRY  PERM 
PERM      EQ     *+400000B   **ENTRY/EXIT** 
          SA1    X1+4        (A1) IS ADDRESS OF LFN IN FDB
          MX6    42D         MASK HIGH 7 CHARACTERS 
          BX6    X6*X1       EXTRACT LFN
          SX1    160B        PERM STATUS CODE 
          BX6    X6+X1       INSERT STATUS
          SA6    A1          STORE BACK LFN AND STATUS
          SX6    A1          (X6) IS ADDRESS OF LFN IN FDB
          SA1    PRMREQ      GET WORD FOR CALLING *PRM* WITH RECALL 
          BX6    X6+X1       INSERT ADDRESS OF FDB LFN
          RJ     =XSYS=      ISSUE *PRM* REQUEST
          EQ     PERM        RETURN 
  
PRMREQ    VFD    24/4LPRMP,36/0  WORD FOR *PRM* REQUEST WITH RECALL 
          SPACE  4,8
          EJECT 
