; ; ; B$IOERROR ; ; B$IOERROR - PRINTS AN I/O ERROR ON JOBLOG AND EXITS ; ; ROUTINE NAME: B$IOERROR ; ; PURPOSE: Writes an fcs error message on the joblog and ex- ; its from a FORTRAN program. ; ; CALLABLE: From MACRO routines within FORTRAN programs only. ; ; PARAMETER: R0 must contain the FDB address of the file in ; which an error has occured. ; ; ROUTINES USED: CONV, PUTLINE and PRINT macros. ; ; EXAMPLE: ; LET R0 := RT.FDB(ROOT) ; SCALL B$IOERROR ; ; FEATURES: Because B$IOERROR uses the FORTRAN EXIT routine, ; all Fortran files will be closed automaticly be- ; fore your FORTRAN main program terminates. ; ; AUTHOR: Mike Higgins ; ; SOURCE LANGUAGE: MACRO11 with SUPERMAC ; ; OBJECT MODULE NAME: B$IOER ; ; LIBRARY: [60,100]DATABASE ; ; MAINTENANCE: See Mike Higgins ; ; .MCALL SUPER,EXIT$S SUPER PROCEDURE B$IOERROR LET R1 :B= F.ERR(R0) ;GET FCS ERROR CODE NEG R1 ;MAKE IT POSITIVE FOR CONVERTING ;THE FOLLOWING CODE CREATES AN ARGUMENT LIST ON THE ;PROGRAM STACK FOR CALLING THE MIKESLIB CONV ROUTINE PUSH R1 ;ALOCATE A WORD ON THE STACK FOR IT LET R2 := SP ;REMEMBER IT'S ADDRESS PUSH #3 ;ALOCATE A WORD FOR THE CONV SIZE ARG LET R3 := SP ;REMEMBER IT'S ADDRESS PUSH R3,#NUMB,R2,#3 ;CREATE THE ARG LIST LET R5 := SP ;POINT R5 AT IT SCALL CONV ;CONVERT THE ERROR FROM BINARY TO ASCII PUTLINE JOBLOG,#BUF,#30.,ERRERR ;PRINT THE LINE IN THE JOBLOG SCALL EXIT ;EXIT FROM FORTRAN EXIT$S ;JUST IN CASE FORTRAN RETURNS ERRERR: ;I GOT AN ERROR WHILST TRYING TO WRITE THE ERROR!! PRINT #EMESS,#33.,#40 ;PRINT THE ERROR ERROR WARNING PRINT #BUF,#30.,#40 ;PRINT THE ERROR ON THE CONSOLE SCALL EXIT ;EXIT FROM FORTRAN EXIT$S ;JUST IN CASE ENDPROCEDURE B$IOERROR .NLIST TTM EMESS: .ASCII /ERROR WHILE TRYING TO PRINT ERROR:/ BUF: .ASCII \ ******* I/O ERROR -\ NUMB: .BLKB 3 .ASCII / *******/ .END