.TITLE RMSCLO .IDENT /01.00/ .PSECT RMSFTN ; ; ; ;BRIDGEPORT-TEXTRON BRIDGEPORT-TEXTRON BRIDGEPORT-TEXTRON BRIDGEPORT-TEXTRON ;B B ;R PURPOSE: A FORTRAN COMPATIBLE RMS INTERFACE R ;I I ;D D ;G AUTHOR: ARTHUR P. GAUGHAN, JR. G ;E E ;P DATE: 5/31/78 P ;O O ;R GLOBAL SYMBOLS DEFINED IN THIS MODULE: RMSCLO R ;T T ;! GLOBAL SYMBOLS REFERENCED IN THIS MODULE: $RLCB ! ;T T ;E E ;X X ;T T ;R R ;O INPUTS: CALL RMSCLO (LUN,ISTAT) O ;N CALLG RMSCLO <#LUN,#ISTAT> N ;! OUTPUTS: ISTAT ! ;! ! ;H HOUSEKEEPING: H ;O O ;R R ;S NOTES: S ;H H ;A A ;M M ;BRIDGEPORT-TEXTRON BRIDGEPORT-TEXTRON BRIDGEPORT-TEXTRON BRIDGEPORT-TEXTRON ; ; ; .MCALL FABOF$,FAB$BT,RABOF$,RAB$BT,$DISCONNECT,$CLOSE .MCALL SMACIT ; ; ; FABOF$ RMS$L ;DEFINE OFFSETS LOCALLY FAB$BT DFIN$L ;DEFINE FAB BIT PATTERNS LOCALLY RABOF$ RMS$L ;DEFINE OFFSETS LOCALLY RAB$BT DFIN$L ;DEFINE RAB BIT PATTERNS LOCALLY SMACIT ;DEFINE SUPERMAC ; ; ; ;DEFINE FORTRAN COMPATIBLE PARAMETER BLOCK ; ; ; LUN=2 ISTAT=4 NULARG=-1 ; ; ; PROCEDURE RMSCLO,GLOBAL ; ; ; IFB (R5) NE #2 ;TWO ARGUMENTS??? TRAP ;IF NOT, QUIT HERE END IF ISTAT(R5) EQ #NULARG ;NO STATUS BLOCK? EMT ;IF NOT, QUIT HERE END ; ; ; IF LUN(R5) EQ #NULARG ;LUN SPECIFIED? LET @ISTAT(R5) := #XX$LUN ;IF NOT, SAY LUN NOT SPECIFIED $RETURN ;RETURN TO CALLER END LET R0 := @LUN(R5) ;PICK UP LUN LET R0 := R0 L.SHIFT 1 ;CONVERT TO WORD INDEX IF $$$FAB(R0) EQ #0 ;FILE OPEN ON LUN? LET @ISTAT(R5) := #XX$OPN ;SAY NO FILE OPEN $RETURN ;RETURN TO CALLER END IF $$$RAB(R0) NE #0 ;RECORD STREAM STILL CONNECTED? LET R2 := $$$RAB(R0) ;IF SO, PICK UP RAB ADDRESS $DISCONNECT R2 ;DISCONNECT THE RECORD ACCESS STREAM LET $$$RAB(R0) := #0 ;ZERO THE TABLE ENTRY PUSH R0 ;SAVE TABLE INDEX $CALL $RLCB <#$$$RMS,#RB$BLN,R2> ;RELEASE THE RAB POP R0 ;RESTORE TABLE INDEX END ; ; ; LET R2 := $$$FAB(R0) ;PICK UP FAB ADDRESS $CLOSE R2 ;CLOSE THE FILE LET @ISTAT(R5) := O$STS(R2) ;SET STATUS LET $$$FAB(R0) := #0 ;ZERO THE TABLE ENTRY $CALL $RLCB <#$$$RMS,#FB$BLN,R2> ;RELEASE THE FAB $RETURN ;RETURN TO CALLER ; ; ; ;/////////////////////////////////////////////////////////////////////// .END