SUBROUTINE FCSERR(ISB,MESS) C C Routine to receive the ISB status and return the appropriate C message corresponding. The length of the message is up to 70 C characters. C C All information taken from the I/O drivers reference manual C pages B-1 to B-3. C DIMENSION ISB(2) INTEGER ERR BYTE CODES(2),ZERO CHARACTER*70 MESS LOGICAL SUCCES EQUIVALENCE (ERR,CODES(1)) PARAMETER (ZERO=0) C ERR = ISB(1) SUCCES = CODES(1).GE.ZERO IF (SUCCES) THEN GO TO (1,2,3),CODES(1) GO TO 10 C C Codes with success? of 0 C 1 MESS = 'I/O request pending' ! IS.PND GO TO 15 C C Codes with success of 1 C 2 IF (CODES(2).EQ.ZERO) THEN MESS = 'Successful completion' ! IS.SUC ELSEIF (CODES(2).EQ."3) THEN MESS(1:25) = 'Successful completion on ' ! IS.CC MESS(26:70) = 'read terminated by CTRL/C' ELSEIF (CODES(2).EQ."15) THEN MESS(1:25) = 'Successful completion wit' ! IS.CR MESS(26:70) = 'h carriage return' ELSEIF (CODES(2).EQ."33) THEN MESS(1:25) = 'Successful completion wit' ! IS.ESC MESS(26:70) = 'h ESCape' ELSEIF (CODES(2).EQ."233) THEN MESS(1:25) = 'Successful completion wit' ! IS.ESQ MESS(26:70) = 'h an escape sequence' ELSE GO TO 10 ENDIF GO TO 15 C C Codes with success of 2 C 3 MESS(1:25) = 'Successful completion on ' ! IS.TMO MESS(26:50) = 'read terminated by time-o' MESS(51:70) = 'ut' GO TO 15 ELSE C C NON-success returns C ERR = ERR-256 IF (ERR.EQ.-15) THEN MESS = 'Operation aborted' ! IE.ABO ELSEIF (ERR.EQ.-34) THEN MESS = 'File already open' ! IE.ALN ELSEIF (ERR.EQ.-1) THEN MESS = 'Bad parameter' ! IE.BAD ELSEIF (ERR.EQ.-56) THEN MESS = 'Bad block' ! IE.BBE ELSEIF (ERR.EQ.-66) THEN MESS(1:25) = 'Block check error or fram' ! IE.BCC MESS(26:70) = 'ing error' ELSEIF (ERR.EQ.-20) THEN MESS = 'Illegal block number' ! IE.BLK ELSEIF (ERR.EQ.-19) THEN MESS(1:25) = 'Byte-ligned buffer specif' ! IE.BYT MESS(26:70) = 'ied (odd byte count)' ELSEIF (ERR.EQ.-73) THEN MESS = 'Connection rejected' ! IE.CNR ELSEIF (ERR.EQ.-22) THEN MESS = 'UDC connect error' ! IE.CON ELSEIF (ERR.EQ.-8) THEN MESS = 'Device already attached' ! IE.DAA ELSEIF (ERR.EQ.-13) THEN MESS = 'Data overrun' ! IE.DAO ELSEIF (ERR.EQ.-7) THEN MESS = 'Device not attached' ! IE.DNA ELSEIF (ERR.EQ.-3) THEN MESS = 'Device not ready' ! IE.DNR ELSEIF (ERR.EQ.-9) THEN MESS = 'Device not attachable' ! IE.DUN ELSEIF (ERR.EQ.-10) THEN MESS = 'End-of-file encountered' ! IE.EOF ELSEIF (ERR.EQ.-62) THEN MESS = 'End-of-tape encountered' ! IE.EOT ELSEIF (ERR.EQ.-11) THEN MESS = 'End-of-volume encountered' ! IE.EOV ELSEIF (ERR.EQ.-59) THEN MESS = 'Fatal hardware error' ! IE.FHE ELSEIF (ERR.EQ.-89) THEN MESS(1:25) = 'Event flag already specif' ! IE.FLG MESS(26:70) = 'ied' ELSEIF (ERR.EQ.-81) THEN MESS(1:25) = 'ICS/ICR controller alread' ! IE.FLN MESS(26:70) = 'y offline' ELSEIF (ERR.EQ.-97) THEN MESS = 'Invalid event flag' ! IE.IEF ELSEIF (ERR.EQ.-82) THEN MESS = 'Invalid escape sequence' ! IE.IES ELSEIF (ERR.EQ.-2) THEN MESS = 'Illegal function' ! IE.IFC ELSEIF (ERR.EQ.-21) THEN MESS(1:25) = 'Invalid UDC or ICS/ICR mo' ! IE.MOD MESS(26:70) = 'dule' ELSEIF (ERR.EQ.-79) THEN MESS(1:25) = 'Task not linked to specif' ! IE.NLK MESS(26:70) = 'ied ICS/ICR interrupts' ELSEIF (ERR.EQ.-37) THEN MESS = 'File not open' ! IE.NLN ELSEIF (ERR.EQ.-23) THEN MESS(1:25) = 'No dynamic memory availab' ! IE.NOD MESS(26:50) = 'le to allocate a secondar' MESS(51:70) = 'y control block' ELSEIF (ERR.EQ.-80) THEN MESS(1:25) = 'Task specified in ICS/ICR' ! IE.NST MESS(26:50) = ' Link or Unlink request n' MESS(51:70) = 'ot installed' ELSEIF (ERR.EQ.-87) THEN MESS = 'Task not triggered' ! IE.NTR ELSEIF (ERR.EQ.-65) THEN MESS = 'Device off line' ! IE.OFL ELSEIF (ERR.EQ.-5) THEN MESS = 'Illegal subfunction' ! IE.ONP ELSEIF (ERR.EQ.-18) THEN MESS(1:25) = 'Illegal read overlay requ' ! IE.OVR MESS(26:70) = 'est' ELSEIF (ERR.EQ.-83) THEN MESS = 'Partial escape sequence' ! IE.PES ELSEIF (ERR.EQ.-16) THEN MESS = 'Privilege violation' ! IE.PRI ELSEIF (ERR.EQ.-88) THEN MESS = 'Transfer rejected' ! IE.REJ ELSEIF (ERR.EQ.-17) THEN MESS(1:25) = 'Nonsharable resource in u' ! IE.RSU MESS(26:70) = 'se' ELSEIF (ERR.EQ.-6) THEN MESS(1:25) = 'Illegal address space (nu' ! IE.SPC MESS(26:50) = 'mber of bytes to send cou' MESS(51:70) = 'ld be zero)' ELSEIF (ERR.EQ.-74) THEN MESS = 'Time-out error' ! IE.TMO ELSEIF (ERR.EQ.-4) THEN MESS = 'Unrecoverable error' ! IE.VER ELSEIF (ERR.EQ.-86) THEN MESS = 'Write check error' ! IE.WCK ELSEIF (ERR.EQ.-12) THEN MESS = 'Write-locked device' ! IE.WLK ELSE GO TO 10 ENDIF ENDIF GO TO 15 C C Unknown code C 10 ENCODE(8,11,MESS) ISB(1) 11 FORMAT (O8) MESS(9:70) = ' (octal) - unknown status code' C C That's all folks C 15 RETURN END