;$IO RECIO SEQUENTIAL I/O AT THE RECORD LEVEL ;. 13-SEPT-76 P. CANNON ;. THIS MODULE PROVIDES THE FORTRAN PROGRAMMER WITH ACCESS ;. TO THE GET$ (READ SEQUENTIAL) AND PUT$ (WRITE SEQUENTIAL) ;. MACROS. THE USER IS PERMITTED TO ACCESS THE RECORDS IN A ;. FILE IN SEQUENTIAL ORDER. THE RECORDS MAY BE OF ARBITRARY ;. LENGTH. ;. THESE PROGRAMS RETURN WHEN THE I/O OPERATION IS COMPLETE, ;. A CALL TO THE WAIT MODULE MUST NOT BE ISSUED. ;. ;. CALL READ(FDB,BUF,LB,/NBT/,/IER/) ;. CALL WRITE(FDB,BUF,NB,/NBT/,/IER/) ;. ;. FDB FILE DESCRIPTOR BLOCKS ;. BUF USER SUPPLIED BUFFER FOR THE RECORD TO BE READ OR ;. WRITTEN ;. LB LENGTH OF BUFFER ON A READ OPERATION ;. NB NUMBER OF BYTES TO WRITE ;. NBT NUMBER OF BYTES TRANSFERRED. ;. IER ERROR FLAG ;. POSITIVE IMPLIES NO ERROR ;. ZERO IMPLIES END OF FILE ;. NEGATIVE IMPLIES HARDWARE I/O ERROR ;. ; ; THE GENERAL FORM OF THE GET$ MACRO IS : ; GET$ FDB,URBA,URBS,ERR ; ; WHERE: ; FDB ADDRESS OF FILE DESCRIPTOR BLOCK. ; URBA ADDRESS OF USER RECORD BUFFER. ; URBS NUMERIC VALUE DEFINING THE SIZE (IN BYTES) OF THE ; USER RECORD BUFFER. ; ERR THE SYMBOLIC ADDRESS OF AN OPTIONAL USER-CODED ; ERROR-HANDLING ROUTINE. ; .TITLE RECIO - SEQUENTIAL I/O AT THE RECORD LEVEL .IDENT /V01/ .PSECT .GLOBL READ,WRITE .GLOBL PARM,RIOCMP .MCALL GET$,PUT$ .SBTTL READ - READ A RECORD AND RETURN WHEN I/O IS COMPLETE EF: .WORD 0 ;ADDRESS OF PARAMETER LIST .WORD 0 ;NBR OF TIMES CALLED READ: MOV R5,EF ;SAVE ADDRESS OF PARAMETER LIST INC EF+2 ;ADD ONE TO THE NBR OF TIMES CALLED JSR PC,PARM ;LOAD PARAMETERS ;R4= NBR OF PARAMETERS ;RO= ADDRESS OF FDB ;R1= ADDRESS OF DATA BUFFER ;R2= NBR OF BYTES TO READ GET$ R0,R1,R2 ;PERFORM A SEQUENTIAL READ SUB #3,R4 ;COMPUTE THE NBR OF OPTIONAL PARAMETERS JSR PC,RIOCMP ;UPDATE THE OPTIONAL PARAMETERS RTS PC ;EXIT ; ; ; THE GENERAL FORM OF THE PUT$ MACRO IS : ; PUT$ FDB,NRBA,NRBS,ERR ; ; WHERE: ; FDB ADDRESS OF FILE DESCRIPTOR BLOCK ; NRBA ADDRESS OF THE NEXT RECORD BUFFER TO BE WRITTEN ; NRBS A NUMERIC VALUE SPECIFYING THE SIZE (IN BYTES) ; OF THE NEXT RECORD BUFFER,I.E., THE LENGTH OF ; THE RECORD TO BE WRITTEN. ; ERR THE SYMBOLIC ADDRESS OF AN OPTIONAL USER-CODED ; ERROR-HANDLING ROUTINE. ; .SBTTL WRITE - WRITE A RECORD AND RETURN WHEN I/O IS COMPLETE EF1: .WORD 0 ;ADDRESS OF PARAMETER LIST .WORD 0 ;NBR OF TIMES CALLED WRITE: MOV R5,EF1 ;SAVE ADDRESS OF PARAMETER LIST INC EF1+2 ;ADD ONE TO THE NBR OF TIMES CALLED JSR PC,PARM ;LOAD PARAMETERS ;R4= NBR OF PARAMETERS ;RO= ADDRESS OF FDB ;R1= ADDRESS OF DATA BUFFER ;R2= NBR OF BYTES TO WRITE PUT$ R0,R1,R2 ;PERFORM A SEQUENTIAL WRITE SUB #3,R4 ;COMPUTE THE NBR OF OPTIONAL PARAMETERS JSR PC,RIOCMP ;UPDATE THE OPTIONAL PARAMETERS RTS PC ;EXIT .END