FUNCTION USER_OPEN (FAB,RAB,LUN) INCLUDE '($FABDEF)' INCLUDE '($RABDEF)' RECORD /FABDEF/ FAB RECORD /RABDEF/ RAB INTEGER LUN,USER_OPEN * INTEGER STATUS, SYS$OPEN, SYS$CONNECT * STATUS = SYS$OPEN (FAB) FAB.FAB$W_MRS = 512 FAB.FAB$B_RFM = FAB$C_FIX FAB.FAB$B_ORG = FAB$C_SEQ IF (STATUS) THEN STATUS = SYS$CONNECT (RAB) ENDIF USER_OPEN = STATUS END SUBROUTINE MESSAGE(PRIO,SEVE,PROGRA,LINE) C---------------------------------------------------------------------- C SAS Internal routine C C Output message according to current priority levels, and C set the severity information C---------------------------------------------------------------------- CHARACTER*(*) PROGRA,LINE CHARACTER*160 LINOUT CHARACTER*1 SEVERITY(4) DATA SEVERITY/'I','W','E','F'/ INTEGER PRIO,NL,SEVE,LENC,IP * INTEGER MFILE, TPRIO, TFILE, CSEV COMMON /MESFIL/ MFILE, TPRIO, TFILE, CSEV * CSEV = MIN(MAX(SEVE,1),4) NL = LEN(LINE) CALL NOIR(LINE,LINOUT,NL) IF (TPRIO.LE.PRIO) THEN WRITE(6,100) SEVERITY(CSEV),progra,linout(1:nl) ENDIF IF (TFILE.LE.PRIO) THEN WRITE(MFILE,101) PRIO,SEVERITY(CSEV),PROGRA,linout(1:nl) ENDIF RETURN 100 FORMAT(1X,A,'-',A,', ',A) 101 FORMAT(1X,I2,'-',A,'-',A,', ',A) * * entry point to set priority level ENTRY MESSAGE_LEVEL(IP) TPRIO = IP RETURN END SUBROUTINE MESSIOS (PRIO,SEVE,NAME,IER) C---------------------------------------------------------------------- C Output system message corresponding to IO error code IER, and C using the MESSAGE routine C---------------------------------------------------------------------- CHARACTER*(*) NAME INTEGER IER,SEVE,PRIO * CHARACTER*132 MSG INTEGER STATUS,N,MSGLEN,FORERR,LENC C+VMS INCLUDE '($FORDEF)' C-VMS * IF (IER.EQ.0) RETURN C+VMS CALL ERRSNS(,FORERR,,,STATUS) IF (STATUS.EQ.FOR$_OPEFAI) STATUS = FORERR CALL LIB$SIGNAL(%VAL(STATUS)) CALL SYS$GETMSG(%VAL(STATUS),MSGLEN,MSG,%VAL(1),) N = INDEX(MSG(1:MSGLEN),'!')-1 IF (N.EQ.-1) N=MSGLEN C-VMS C+ULTRIX c WRITE (MSG,'(A,I10)') 'I/O Error number ',IER c N = LENC(MSG) C-ULTRIX IF (N.GT.0) CALL MESSAGE(PRIO,SEVE,NAME,MSG(1:N)) END