.NLIST TTM,SYM .MCALL FDOF$L,SUPER .TITLE REMEMBER POSITION IN A FILE FDOF$L SUPER ; ; FORTRAN CALL: ; ERR=REMEM(LUN,RECP[,ERR]) ; WHERE LUN = LOGICAL UNIT NUMBER ; RECP=A FOUR BYTE BUFFER IN WHICH THE ; FILE RECORD POSITION IS REMEMBERED ; ERR=FCS ERROR CODE RETURN (1 FOR OK) ; ; THIS ROUINE "REMEMBERS" THE CURRENT POSITION IN ; A SEQUENTAL FILE BY RETURNING YOU THE CURRENT BLOCK NUMBER ; AND BYTE ADDRESS OF THE NEXT RECORD IN THE FILE. ONLY THE ; LOWER 16 BITS OF THE BLOCK NUMBER ARE RETURNED, SO THIS ; SUBROUTINE CANNOT BE USED ON FILES THAT ARE LARGER THAN ; 32768 BLOCKS BIG. THE BLOCK AND POSITION VALUES ARE RETURNED ; IN ONE 4BYTE PARAMETER WHICH CAN BE A REAL*8 NUMBER IN A ; CALLING FORTRAN ROUTINE. THIS VALUE IS ONLY OF USE IN ; THE RESTOR ROUTINE. ; ; NOTE: ; THE FILE MUST BE OPEN FOR THIS ROUTINE TO WORK ; THIS MEANS YOU MUST HAVE READ OR WRITTEN IN THE ; FILE AT LEAST ONCE BEFORE USING REMEM, OR YOU ; MUST HAVE OPENED THE FILE WITH THE OPEN COMMAND ; ; INVALID LUN'S WILL RESULT IN A FORTRAN ERROR TRAPPED BY ; THE FCHNL ROUTINE ; .GLOBL REMEM,$FCHNL,$OTSV REMEM:: MOV @2(R5),R2 ;GET LUN PARAMETER MOV @#$OTSV,R3 ;GET WORK AREA ADDRESS JSR PC,$FCHNL ;FIND FDB ADDRESS ADD #14,R0 ;GET TO RSX FDB MOV 4(R5),R1 MOV F.NRBD(R0),(R1) MOV F.NREC(R0),2(R1) FORET #1,6 RTS PC .END