.TITLE RENAME -- RENAME A FILE FROM FORTRAN .IDENT /00/ ; ; RENAME A FILE FROM FORTRAN OR FORTRAN-IV PLUS. ; R.D. SCHAEFER, "THE MULTI-TASKER" V10 NO 4 (1979) ; WITH MODIFICATIONS BY CHRIS DORAN, SIRA. ; ; USE AS: ; OPEN ( UNIT = , FILE = '' ... ; CALL ASSIGN( , , {} ) ; CALL RENAME( , , ) ; OR IERR=IRENAM( , ) ; ; WHERE: ; IS AN INTEGER GIVING THE UNIT NO OF THE OLD FILE ; GIVES THE UNIT NUMBER OF THE NEW FILE NAME INFORMATION ; OR THE FUNCTION RETURN VALUE IS 0 IF THE CALL SUCCEEDS, ; OR A -VE FCS ERROR CODE IF IT FAILS. ; D.FDB=14 ; LENGTH OF FORTRAN FDB HEADER RENAME:: IRENAM:: MOV @#$OTSV,%3 ; OBTAIN OTS IMPURE PTR MOV @4(%5),%2 ; GET ADDRESS OF 2ND LUN'S FDB JSR PC,$FCHNL ADD #D.FDB,%0 ; POINT TO FCS PORTION MOV %0,%4 ; SAVE THE VALUE MOV @2(%5),%2 ; GET ADDRESS OF 1ST LUN'S FDB JSR PC,$FCHNL ADD #D.FDB,%0 ; POINT TO FCS PORTION MOV %4,%1 ; RESTORE 2ND LUN PTR MOV %0,%2 ; MAKE PTRS TO FILE ID PORTIONS ADD #F.FNB+N.FID,%2 ; OF THE FILENAME BLOCK ADD #F.FNB+N.FID,%4 MOV (%2)+,(%4)+ ; COPY THE FILE ID TO THE NEW NAME BLOCK MOV (%2)+,(%4)+ ; TO INHIBIT A .PARSE BY .RENAM MOV (%2)+,(%4)+ JSR PC,.RENAM ; RENAME THE FILE MOVB F.ERR(%0),%4 ; FETCH ERROR NUMBER DEC %4 ; RETURN 0 IF SUCCESSFUL (IS.SUC=1) BEQ 10$ INC %4 ; RESTORE FCS CODE IF FAILED CMP @%5,#3 ; WAS OPTIONAL IERR SUPPLIED? BLT 10$ ; NO, DON'T RETURN ERROR CODE CMP 6(%5),#177777 ; TEST ALSO FOR BLANK PARAMETER BEQ 10$ ; FLAGGED BY "ADDRESS" 177777 MOV %4,@6(%5) ; IF IERR REQD, STORE IT 10$: SUB #D.FDB,%0 ; POINT BACK TO FORTRAN FDB PORTIONS SUB #D.FDB,%1 MOV #66,%2 ; CLEAR FBDS FOR LATER USE 20$: CLR (%0)+ CLR (%1)+ SOB %2,20$ MOV %4,%0 ; RETURN IERR IF FUNCTION RTS PC ; EXIT .END