.NLIST TTM,SYM .MCALL FDOFF$ .TITLE SEEK -- FIND A REMEMBERED POSITION IN A FILE FDOFF$ DEF$L ; ; FORTRAN CALL: ; CALL SEEK(LUN,RECP) ; WHERE LUN = LOGICAL UNIT NUMBER ; RECP=A FOUR BYTE BUFFER IN WHICH THE ; FILE RECORD POSITION IS REMEMBERED ; ; THIS ROUTINE "SEEKS" THE REMEMBERED POSITION IN ; A SEQUENTAL FILE FROM THE INFORMATION STORED BY THE GETPOS ; 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 SEEK, 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 ; LUN=2 BUF=4 SEEK:: MOV @LUN(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 BUF(R5),R4 ;GET ADDRESS OF POSITON MARKER CMP #^RMRK,(R4)+ ;CHECK TO SEE IF MAGIC WORD IS CORRECT BNE ERROR MOV (R4)+,R1 ;GET VIRTUAL BLOCK NUMBER HIGH MOV (R4)+,R2 ;AND LOW ORDER WORDS. MOV (R4)+,R3 ;GET BYTE POSITION IN BLOCK CALL .POINT ;JUMP INTO THE MIDDLE OF THE FILE MOV #1,R0 ;RETRUN POSITIVE FOR SUCESS RTS PC ERROR: MOV #-100,R0 ;RETURN NEGATIVE NUMBER ON ERROR RTS PC .END