THE "HOW OPEN CODE" FIELD IS COMPOSED OF TWO BYTES, RACC AND FACC THE LOW ORDER BYTE IS THE FACC (FILE ACCESS BYTE) AND THE HIGH ORDER BYTE IS THE RACC (RECORD ACCESS BYTE). THEY ARE FOUND IN THE FDB. F.RACC RECORD ACCESS BYTE. BIT 0 THROUGH 3 OF THIS BYTE DEFINE THE RECORD-ACCESS MODES. BIT 0 =1 TO INDICATE READ$/WRITE$ MODE (FD.RWM); OTHERWISE IT IS 0 TO INDICATE GET$/PUT$ MODE BIT 1 = 1 TO INDICATE RANDOM-ACCESS MODE (FD.RAN) FOR GET$/PUT$ RECORD I/O; OTHERWISE, IT IS 0 TO INDICATE SEQUENTIAL ACCESS MODE. BIT 2 = 1 TO INDICATE LOACATE MODE (FD.PLC) FOR GET$/PUT$ RECORD I/O; OTHERWISE, IT IS 0 TO INDICATE MOVE MODE. BIT 3 = 1 TO INDICATE THAT PUT$ OPERATION IN SEQUENTIAL MODE DOES NOT TRUNCATE THE FIELD (FD.INS); OTHERWISE, IT IS 0 TO INDICATE THAT PUT$ OPERATION IN SEQUENTIAL MODE TRUNCATES THE FILE. F.FACC FILE-ACCESS BYTE. THIS BYTE INDICATES THE ACCESS PRIVILEGES FOR A FILE. BIT 0 = 1 IF THE FILE IS ACCESSED FOR READ ONLY (FA.RD). BIT 1 = 1 IF THE FILE IS ACCESSED FOR WRITING (FA.WRT). BIT 2 = 1 IF THE FILE IS ACCESSED FOR EXTENDING (FA.EXT). BIT 3 = 1 IF A NEW FILE IS BEING CREATED (FA.CRE); OTHERWISE IT IS 0 TO INDICATE AN EXISTING FILE. BIT 4 =1 IF THE FILE IS A TEMPORARY FILE (FA.TMP). BIT 5 = 1 IF THE FILE IS OPENED FOR SHARED ACCESS (FA.SHR). IF BIT 3 ABOVE IS 0; BIT 6 = 1 IF AN EXISTING FILE IS BEING APPENDED (FA.APD). IF BIT 3 ABOVE IS 1; BIT 6 = 1 IF NOT SUPERSEDING AN EXISTING FILE AT FILE- CREATE TIME (FA.NSP). SOME TYPICAL VALUES FOR THE "HOW OPEN CODE" (HOC) ARE AS FOLLOWS: ALL VALUES FOR THE HOC ARE IN OCTAL HOC = 416 FILE IS ACCESSED FOR WRITE FILE IS ACCESSED FOR EXTENDING A NEW FILE WILL BE CREATED FILE WILL BE ACCESSED USING DIRECT ACCESS (RANDOM) BLOCK I/O. HOC = 402 FILE IS ACCESSED FOR WRITE FILE WILL BE ACCESSED USING DIRECT ACCESS (RANDOM) BLOCK I/O. HOC = 401 FILE IS ACCESSED FOR READ ONLY FILE WILL BE ACCESSED USING DIRECT ACCESS (RANDOM) BLOCK I/O. HOC = 516 FILE IS ACCESSED FOR WRITE FILE IS ACCESSED FOR EXTENDING IF THE FILE EXISTS IT WILL BE SUPERSEEDED (OVERWRITTEN), IF THE FILE DOES NOT EXIST IT WILL BE CREATED. FILE WILL BE ACCESSED USING DIRECT ACCESS (RANDOM) BLOCK I/O. HOC = 441 FILE IS ACCESSED FOR READ ONLY FILE IS OPENED FOR SHARED ACCESS FILE WILL BE ACCESSED USING DIRECT ACCESS (RANDOM) BLOCK I/O. RECORD I/O HOC = 1016 FILE IS ACCESSED FOR WRITE FILE IS ACCESSED FOR EXTENDING A NEW FILE WILL BE CREATED FILE WILL BE ACCESSED USING RANDOM ACCESS OF FIXED LENGTH RECORDS. BUFFERING OF THE RECORDS WILL TAKE PLACE. THE FORTRAN OFFSETS FOR INTEGER*2 ARRAY OF SOME IMPORTANT LOCATIONS IN THE FDB. F.FNB=FDB(34) F.ERR=FDB(22) F.CNTG=FDB(15) N.FID=FDB(34) F.VERR=FDB(41) N.DVNM=FDB(47) N.UNIT=FDB(48) F.VERR IS THE VERSION NUMBER OF THE FILE YOU HAVE OPENED INFORMATION ON THE CONTENTS OF THE F.ERR, F.ERR+1 ERROR WORD F.ERR NEGATIVE IMPLIES AN ERROR F.ERR+1 IF F.ERR IS NEGATIVE, THEN F.ERR+1 =0 IMPLIES AN I/O ERROR CODE IN F.ERR F.ERR+1 <0 IMPLIES A DIRECTIVE ERROR CODE IN F.ERR NOTES ON THE F.CNTG WORD F.CNTG = 0 LEAVE THE FILE EMPTY F.CNTG < 0 ALLOCATE THE NUMBER OF BLOCKS NONCONTIGUOUS AND LEAVE THE FILE NONCONTIGUOUS F.CNTG > 0 ALLOCATE THE NUMBER OF BLOCKS CONTIGUOUS AND LEAVE THE FILE CONTIGUOUS. NOTES ON OPEN BY FILE ID ONE MUST SPECIFY AT LEAST THE N.FID (34) FILE NUMBER (35) FILE SEQUENCE NUMBER (36) 0 (RESERVED) N.DVNM (47) TWO LETTER ASCII DEVICE NAME N.UNIT (48) BINARY VALUE OF THE DEVICE UNIT NUMBER FILE WILL BE ACCESSED USING DIRECT ACCESS (RANDOM) BLOCK I/O. SPACE SAVING TIPS IF YOU USE DIRECT ACCESS BLOCK I/O ONE DOES NOT NEED ANY SPACE IN THE FSR1 BUFFER OR IN THE $DEVT TABLE. THUS YOU CAN SET ACTFIL=0 AND UNITS=0 EVEN THOUGHT YOU HAVE ACTIVE FILES AND UNITS. THE UNITS= N IS TO MAKE FORTRAN RESERVE SPACE FOR FDBS AND THE ACTFIL IS FOR FORTRAN TO RESERVE SPACE TO DE-BLOCK A FILE. WHEN YOU DO DIRECT ACCESS THE DISK TRANSFERS DIRECTLY INTO YOUR ARRAY. THERE IS NO NEED TO SUPPLY A BUFFER FOR DE-BLOCKING. YOU HAVE ALREADY SUPPLIED THE FDB IN AN ARRAY IN YOUR FORTRAN PROGRAM. INFORMATION ON RECORD I/O LOCATIONS IN THE FDB F.RTYP RECORD-TYPE BYTE. THIS BYTE IS SET AS FOLLOWS TO INDICATE THE TYPE OF RECORDS FOR THE FILE: F.RTYP=1 IMPLIES FIXED-LENGTH RECORDS (R.FIX) F.RTYP=2 IMPLIES VARIABLE-LENGTH RECORDS (R.VAR) F.RTYP=3 IMPLIES SEQUENCED RECORDS (R.SEQ) F.RATT RECORD-ATTRIBUTE BYTE. BIT 0 - IF SET TO A 1, IT IMPLIES THAT THE FIRST BYTE OF A RECORD IS TO CONTAIN A FORTRAN CARRIAGE- CONTROL CHARACTER (FD.FTN) BIT 1 - IF SET TO A 1, IT IMPLIES THAT FOR A CARRIAGE- CONTROL DEVICE THAT A LINE FEED IS TO BE PERFORMED BEFORE THE LINE IS PRINTED AND A CARRIAGE RETURN IS TO BE PERFORMED AFTER THE LINE IS PRINTED (FD.CR). BIT 2 - NOT USED BIT 3 - IF SET TO A 1, IT IMPLIES THAT RECORDS CANNOT CROSS BLOCK BOUNDARIES (FD.BLK). F.RSIZ RECORD-SIZE WORD. THIS WORD CONTAINS THE SIZE OF FIXED-LENGTH RECORDS (IN BYTES) OR INDICATES THE SIZE OF THE LARGEST RECORD THAT CURRENTLY EXISTS IN A FILE OF VARIABLE-LENGTH RECORDS. THE LOCATIONS OF THESE BYTES IN THE FDB IS AS FOLLOWS THE RECORTD TYPE BYTE IS THE FIRST BYTE IN THE FDB THE RECORD ATTRIBUTE BYTE IS THE SECOND BYTE IN THE FDB F.RATT,F.RTYP=FDB(1) THE RECORD SIZE WORD IS THE SECOND WORD IN THE FDB F.RSIZ=FDB(2) WHEN YOU ARE CREATING A NEW FILE THESE TWO WORDS MUST BE FILLED IN AFTER INIT AND BEFORE A FILE IS OPENED. IF THE FILE EXIST, THEY WILL BE FILLED IN BY THE OPEN COMMAND