.TITLE SPOOL SUBROUTINE FOR FORTRAN ; ; FORTRAN CALL: ; CALL SPOOL(LUN,ERR) ; ; WHERE LUN = LOGICAL UNIT NUMBER ; ; RETURN: ; ERR = FCS ERROR CODE FROM FDB ; IF ERR ARGUMENT IS NOT INCLUDED, STATUS CAN ; BE PICKED UP AS FUNCTIONAL VALUE (FROM R0) ; ; NOTE: ; FILE MUST EITHER BE OPEN, OR FDBSET MUST BE USED (ALONG ; WITH CALL ASSIGN) TO FILL IN THE REQUIRED INFO IN THE ; FDB. ; ; INVALID LUN'S WILL RESULT IN A FORTRAN ERROR TRAPPED BY ; THE FCHNL ROUTINE. ; .MCALL PRINT$ ; SEE CH. 8 OF I/O OPERATIONS MANUAL ; .GLOBL $FCHNL,$OTSV ; .ENABL LSB SPOOL:: MOV @2(R5),R2 ;GET LUN MOV @#$OTSV,R3 ;GET WORK AREA ADDRESS JSR PC,$FCHNL ;FIND FDB ADDRESS MOV R0,R1 ;SAVE ADDRESS OF FORTRAN FDB ADD #14,R0 ;GET TO RSX FDB PRINT$ R0 ;SPOOL FILE BCS ERR ;ERROR? MOV #66,R0 ;THIS MANY WORDS TO ZERO 1$: CLR (R1)+ ;MAKE THIS LUN REUSABLE DEC R0 BNE 1$ 2$: CMPB (R5),#1 ;ONLY ONE ARGUMENT? BEQ 3$ ;NO STATUS IN ERR ARGUMENT CMP 4(R5),#-1 ;ERR ARGUMENT DEFAULTED? BEQ 3$ ;NO STATUS IN ERR ARGUMENT MOV R0,@4(R5) ;STORE ERROR CODE OR 0 3$: RTS PC ;AND RETURN TO CALLER ; ERR: MOVB F.ERR(R0),R0 ;GET FCS ERROR CODE FROM FDB BR 2$ ;AND USE COMMON RETURN .DSABL LSB .END