.TITLE FDBRTN .IDENT /V01/ .ENABLE LC ; ; This module performs various functions on an FDB usually impossible ; from inside a FORTRAN task. ; ; Author: V01 12-Jun-80 Phil Stephensen-Payne ; ; Calling Sequence: ; ; These subroutines are called via the standard FORTRAN calling sequence as: ; ; CALL FDBCR(LUN) To set FD.CR bit in FDB ; CALL FDBBLK(LUN) To set FD.BLK bit in FDB ; CALL FDBDEL(LUN,ERR) To delete file open on FDB ; ; Where: ; LUN = Logical Unit on which the file is open ; ERR = FCS Error Return (where applicable) ; ; Errors returned: ; ; For FDBDEL the FCS error return from the Delete is returned ; ; External references: ; ; None ; ; ; .MCALL FDOF$L,DELET$ FDOF$L .GLOBL $FCHNL,$OTSV ; FDBCR:: CALL FNDFDB ; Find the FDB Address MOVB #FD.CR,F.RATT(R0) ;SET FD.CR BIT RETURN ; FDBBLK:: CALL FNDFDB ; Find the FDB Address MOVB #FD.BLK,F.RATT(R0) ;SET FD.CR BIT RETURN ; FDBDEL:: CALL FNDFDB ; Get the FDB Address MOV R0,R1 ;SAVE ADDRESS OF RSX FDB SUB #14,R0 ;GET TO FORTRAN FDB DELET$ R0 ;DELETE FILE BCS 3$ ;ERROR? MOV #66,R0 ;THIS MANY WORDS TO ZERO ; 1$: CLR (R1)+ ;MAKE THIS LUN RE-USABLE DEC R0 BNE 1$ ; 2$: MOV R0,@4(R5) ;RETURN SUCCCESS OR ERROR RETURN ; 3$: MOVB F.ERR(R0),R0 ;GET FCS ERROR CODE FROM FDB BR 2$ ;RETURN IT ; FNDFDB: MOV @2(R5),R2 ;GET LUN MOV @#$OTSV,R3 ;GET WORK AREA ADDRESS JSR PC,$FCHNL ;FIND FORTRAN FDB ADDRESS ADD #14,R0 ;RESET TO RSX FDB ADDRESS RETURN .END