INFORMATION FILE ON SUBROUTINES IN LIBRARY DLIB.OLB DABIO SIZE:00235 INSERTED:6-FEB-78 IDENT:V01 DABIO DIRECT ACCESS I/O FOR VIRTUAL BLOCKS 13-SEPT-76 P. CANNON THIS MODULE PROVIDES THE FORTRAN PROGRAMMER WITH ACCESS TO THE READ$ AND WRITE$ MACROS. THE USER CAN DIRECTLY ACCESS ANY VIRTUAL BLOCK (256 WORDS) WITHIN HIS FILE. THE ENTRY POINTS DABRD AND DABWT RETURN WHEN THE I/O OPERATION IS COMPLETE. THE ENTRY POINTS IDABRD AND IDABWT INITIATE I/O TRANSFERS AND THE MODULE WAIT SHOULD BE USED TO TEST FOR THE COMPLETION OF THE I/O OPERATION. CALL IDABRD(FDB,BUF,LB,IBLK) CALL IDABWT(FDB,BUF,NB,IBLK) CALL DABRD(FDB,BUF,LB,IBLK,/NBT/,/IER/) CALL DABWT(FDB,BUF,NB,IBLK,/NBT/,/IER/) FDB FILE DESCRIPTOR BLOCK BUF DATA BUFFER LB LENGTH OF BUFFER IN BYTES NB NUMBER OF BYTES TO WRITE IBLK INTEGER*2 VARIABLE CONTAINING THE VIRTUAL BLOCK NUMBER TO BE READ/WRITTEN. NBT NUMBER OF BYTES TRANSFERRED IER ERROR FLAG POSITIVE IMPLIES NO ERROR ZERO IMPLIES END OF FILE NEGATIVE IMPLIES HARDWARE I/O ERROR FIND SIZE:00123 INSERTED:28-DEC-77 IDENT:122877 .FIND Locates a directory entry by file name and fills in the file identification field (N.FID) of a specified filename block. Wildcards (*) can be specified for the file name, file type, and file version. SUBROUTINE FIND.MAC CALL FIND(FDB,IERR) *** SUBROUTINE TO FIND A FILE WHICH HAS BEEN NAMED BY PARSE FDB 1st Argument= Address of File Descriptor Block IERR 2cnd Argument = Address to return completion code. -1= File not found and wildcard is done. 0= File found and no wild card. 1= File found and wildcard is not done FQIO This is an ordinary QIO function which makes use of a special set of QIO function codes for the files control processor to manipulate the file headers of a volume to read and write attributes. SUBROUTINE FQIO.MAC SUBROUTINE TO USE THE FILES 11 QIO MACRO TO READ/WRITE FILE ATTRIBUTES CALL FQIO(FDB(67),LUN,IAT,N,IBUF,IDSW) !TO READ ATTRIBUTE SIX PARAMETERS 1 FDB(67)= ADDRESS OF FILE ID=FILE NAME BLOCK (67=OFFSET OF FNB IN FDB) 2 LUN = ADDRESS OF LOGICAL UNIT TO USE 3 IAT=ADDRESS OF ATTRIBUTE TYPE TO BE READ/WRITTEN ;SEE FILES 11 QIO NOTES IF IAT <0 THEN ATTRIBUTE IS TO BE READ, IF IAT>0 THE WRITE ATTRIBUTE 4 N = NUMBER OF CHARACTERS TO READ OR WRITE ;SEE FILES 11 QIO NOTES 5 IBUF = ADDRESS OF BUFFER CONTAINING DATA TO READ/WRITE IN FILE HEADER 6 IDSW = ADDRESS TO RETURN DIRECTIVE STATUS WORD OFID OFID Open a file using the information stored in the file identifiaction field of the (FID) of the file name block (FNB). OFID requires less space than the normal OPEN call since it does not use the .PARSE logic. OFID is faster than the normal open since it doesn't require the directory search of a .FIND operation. SUBROUTINE OFID.MAC Subroutine to open a file by file ientification field. CALL OFID(FDB,HOC,LUN,IER) SUBROUTINE PARSE MUST BE CALLED TO FILL IN FILE NAME IN FDB FROM FNM. SUBROUTINE FIND MUST BE CALLED TO FILL IN THE FID FEILD OF THE FDB. FDB FILE DESCRIPTOR BLOCK ARRAY INTO WHICH FDB IS BUILT. HOC HOW OPEN CODE (RACC,FACC) 1 IMPLIES INPUT 16 IMPLIES OUTPUT LUN LOGICAL UNIT NUMBER IER ERROR FLAG POSITIVE IMPLIES NO ERROR ZERO IMPLIES AN ERROR NEGATIVE IMPLIES AN ERROR OFNB OFNB Opens a file using the information stored in file name block of the file descriptor block. This subroutine calls the PARSE subroutine to fill in the file name block. CALL OFNB(FDB,HOC,LUN,FNM,IER) CALLS SUBROUTINE PARSE TO FILL IN FILE NAME IN FDB FROM FNM. FDB FILE DESCRIPTOR BLOCK ARRAY INTO WHICH FDB IS BUILT. HOC HOW OPEN CODE (RACC,FACC) 1 IMPLIES INPUT 16 IMPLIES OUTPUT LUN LOGICAL UNIT NUMBER FNM FULL FILE DESCRIPTOR NAME IE. DK0:[100,100]NAME.INF;1 IER ERROR FLAG POSITIVE IMPLIES NO ERROR ZERO IMPLIES AN ERROR NEGATIVE IMPLIES AN ERROR OPNTD Opens a temporary file for writting and creates the file header block in the index file without entering it in any directory. The file is deleted by closing the file or aborting the program using the file. SUBROUTINE OPNTD.MAC Subroutine to open a temporary file for writing only. CALL OPNTD(FDB,HOC,LUN,IER) FDB FILE DESCRIPTOR BLOCK ARRAY INTO WHICH FDB IS BUILT. HOC HOW OPEN CODE (RACC,FACC) FACC is ignored since only the OPNT$W form is permitted. LUN LOGICAL UNIT NUMBER IER ERROR FLAG POSITIVE IMPLIES NO ERROR ZERO IMPLIES AN ERROR NEGATIVE IMPLIES AN ERROR Parse zeros the file name block then fills in the following information from the data set descriptor; 1) ASCII device name. (N.DVNM) 2) Binary unit number. (N.UNIT) 3) Directory ID (N.DID) 4) Radix-50 file name. (N.FNAM) 5) Radix-50 file type. (N.FTYP) 6) Binary version. (N.FVER) SUBROUTINE PARSE.MAC CALL PARSE(FDB,NAME,LUN) SUBROUTINE TO PARSE FILE DESCRIPTOR LINE FDB 1ST ARGUMENT = ADDRESS OF FDB NAME 2CND ARGUMENT = ADDRESS OF ASCII FILE DESCRIPTOR STRING. E.G. DK2:[120,121]NAME.INF;1 LUN 3RD ARGUMENT = ADDRESS OF THE LOGICAL UNIT NUMBER RENAM .RENAM Changes the name of a file in its associated directory. To rename a file the user must specify a FDB containing file name information. Note: The renaming process is a directory operation that replaces an old directory entry with a new one, It does not change the name in the file header. SUBROUTINE RENAM.MAC CALL RENAM(FDB,FDBN,IER) SUBROUTINE TO RENAME A FILE THREE ARGUMENTS FDB ONE=ADDRESS OF FDB ASSOCIATED WITH FILE TO BE RENAMED FDBN TWO=ADDRESS OF FDB CONTAINING NEW NAME FOR FILE IER THREE= ADDRESS TO RETURN ERROR CODE = -1 IF NOT SUCESSFUL