# # UCREAT IS A SUBROUTINE TO RETURN THE CREATION DATE AND TIME OF # A FILE. THE CALLING SEQUENCE IS: # CALL UCREAT(LUN,DEV,UIC,FILNAM,CREDAT,CRETIM,STATUS) # WHERE LUN IS A LOGICAL UNIT NUMBER TO USE, # DEV IS A STRING CONTAINING THE FILE DEVICE (e.g., "DR0:") # UIC IS A 9-BYTE STRING CONTAINING THE FILE UIC (e.g., "[100,001]") # FILNAM IS A STRING CONTAINING THE FILE NAME (e.g., "TEST.DAT") # CREDAT IS A 9-BYTE STRING TO RECEIVE THE CREATION DATE (dd-mmm-yy) # CRETIM IS AN 8-BYTE STRING TO RECEIVE THE CREATION TIME (hh:mm:ss) # STATUS IS A FILE STATUS (IF NOT RETURNED AS A ONE, THE FILE DID # NOT EXIST OR WAS OTHERWISE INACCESSIBLE) # # AUTHOR: GLEN HOFFING # DATE: 10-JUN-81 # SUBROUTINE UCREAT(LUN,DEV,UIC,FILNAM,CREDAT,CRETIM,STATUS) IMPLICIT INTEGER (A-Z) EXTERNAL *UNLOCK DEFINE (CHARACTER=BYTE) STRING IDXFIL " [0,0]INDEXF.SYS" #DEVICE INDEX FILE DIMENSION PRL(6),ISBWRD(2),BUFWRD(256) BYTE DEV(1),UIC(1),FILNAM(1),CREDAT(9),CRETIM(8),STATUS, BUF(512),ISB(4) EQUIVALENCE (BUFWRD,BUF) EQUIVALENCE (ISBWRD,ISB) DO I = 1,8 [ CREDAT(I) = " " CRETIM(I) = " " ] CREDAT(9) = " " IORVB = 4352 #IO.RVB CALL UFILNO(LUN,DEV,UIC,FILNAM,FILNO,STATUS) #FIND SPECIFIED FILE IF (STATUS != 1) [ #IF FILE NOT FOUND, CLOSE (UNIT=LUN) RETURN #RETURN ] DO I = 1,4 IDXFIL(I) = DEV(I) #SET DEVICE IN INDEX FILE NAME OPEN (UNIT=LUN,NAME=IDXFIL,TYPE='OLD',READONLY,USEROPEN=UNLOCK) CALL GETADR(PRL,BUF) PRL(2) = 512 PRL(5) = 2 CALL WTQIO(IORVB,LUN,1,,ISB,PRL,IDS) #READ INDEX FILE HOME BLOCK BITBLK = BUFWRD(1) #NO. OF BLOCKS IN BIT MAP PRL(5) = FILNO + 2 + BITBLK CALL WTQIO(IORVB,LUN,1,,ISB,PRL,IDS) #READ FILE HEADER BLOCK. CREDAT(1) = BUF(72) #RETRIEVE CREATION DATE AND CREDAT(2) = BUF(73) #TIME FROM FILE HEADER BLOCK. CREDAT(3) = "-" #FORMAT THEM AND RETURN. CREDAT(4) = BUF(74) CREDAT(5) = BUF(75) CREDAT(6) = BUF(76) CREDAT(7) = "-" CREDAT(8) = BUF(77) CREDAT(9) = BUF(78) CRETIM(1) = BUF(79) CRETIM(2) = BUF(80) CRETIM(3) = ":" CRETIM(4) = BUF(81) CRETIM(5) = BUF(82) CRETIM(6) = ":" CRETIM(7) = BUF(83) CRETIM(8) = BUF(84) STATUS = 1 #STATUS OK CLOSE (UNIT=LUN) RETURN END