SUBROUTINE RW(FUNC,LUN) CC C RW - READS AND WRITES BLOCKS FROM DISK. C C ENTRY: FUNC - IO FUNCTION CODE, I.E. IO.RLB OR IO.WLB C LUN - LOGICAL UNIT TO READ OR WRITE C C USES LOCAL EVF 1 FOR IO SYNCHONIZATION INTEGER*2 FUNC,LUN INTEGER*2 PRL(6),IOSB(2),IDS INCLUDE '[214,10]BUFCOM.COM' DATA ISSUC/1/ C CALL GETADR(PRL(1),BUFF(1)) PRL(2) = 512 ! ALWAYS READ 512 BYTES, I.E. ONE BLOCK PRL(4) = BLKNH PRL(5) = BLKNL C CALL WTQIO(FUNC,LUN,1,,IOSB,PRL,IDS) ! ISSUE THE REQUEST IF(IDS.NE.ISSUC) GOTO 666 ! BAD BAD BAD, ISSUE AN ERROR MESSAGE IF(IOSB(1).NE.ISSUC) GOTO 666 ! MORE BAD NEWS GOTO 1000 ! OTHERWISE THINGS MUSTA BEEN PEACHY C C HANDLE ERRORS HERE C 666 CONTINUE TYPE 9000,FUNC,LUN,BLKNH,BLKNL,IDS,IOSB(1),IOSB(2) 9000 FORMAT(' IO OR DIRECTIVE ERROR OCCURED WHILE PROCESSING A' 1,' QIO REQUEST.',/ 1,' FUNC = o',O6,' LUN = o',O3,/ 1,' BLKNH = o',O6,' BLKNL = o',O6,/ 1,' IDS = o',O6,' IOSB(1) = o',O6,' IOSB(2) = o',O6) IF (IDS.NE.ISSUC) GOTO 990 ! IF DIRECTIVE ERROR IF (IOSB(1).EQ.ISSUC) GOTO 1000 ! IF NO FCS ERROR CALL SHOFCS(3,IOSB(1)) GOTO 1000 990 CALL SHODSW(3,IDS) 1000 RETURN END