dafrwd |
Table of contents
ProcedureDAFRWD ( DAF, read, write double precision ) SUBROUTINE DAFRWD ( HANDLE, . RECNO, . BEGIN, . END, . DREC, . DATA, . FOUND, . READS, . REQS ) AbstractRead, write, and rewrite double precision records to and from DAFs. Required_ReadingDAF KeywordsFILES DeclarationsIMPLICIT NONE INTEGER HANDLE INTEGER RECNO INTEGER BEGIN INTEGER END DOUBLE PRECISION DREC ( 128 ) DOUBLE PRECISION DATA ( * ) LOGICAL FOUND INTEGER READS INTEGER REQS INTEGER RBSIZE PARAMETER ( RBSIZE = 100 ) Brief_I/OVARIABLE I/O ENTRY POINTS -------- --- -------------------------------------------------- HANDLE I DAFGDR. DAFGSR, DAFRDR (Obsolete), DAFWDR RECNO I DAFGDR. DAFGSR, DAFRDR (Obsolete), DAFWDR BEGIN I DAFGDR. DAFGSR, DAFRDR (Obsolete) END I DAFGDR. DAFGSR, DAFRDR (Obsolete) DREC I DAFWDR DATA O DAFGDR. DAFGSR, DAFRDR (Obsolete) FOUND O DAFGDR. DAFGSR, DAFRDR (Obsolete) READS O DAFNRR REQS O DAFNRR RBSIZE P DAFGDR. DAFGSR, DAFRDR (Obsolete), DAFWDR, DAFNRR Detailed_InputHANDLE is the handle associated with a DAF. RECNO is the record number of a double precision record within a DAF to be read or written. BEGIN is the first in word in a double precision record to be read. END is the last in word in a double precision record to be read. DREC contains a single double precision record, to be written to the specified DAF. Detailed_OutputDATA contains a portion of a single double precision record, read from the specified DAF. FOUND is .TRUE. when the specified record is found, and is .FALSE. otherwise. READS, REQS are the number of physical reads and the number of requests processed by DAFRDR during the current execution of the calling program. ParametersRBSIZE is the size of the record buffer maintained by DAFRWD. In effect, RBSIZE is the maximum number of records that can be stored (buffered) at any one time. Higher values of RBSIZE reduce the amount of time spent reading from disk at the cost of increasing the amount of space required by the calling program. The optimal value of RBSIZE may differ from environment to environment, and may even vary from application to application. Exceptions1) If DAFRWD is called directly, the error SPICE(BOGUSENTRY) is signaled. 2) See entry points DAFGDR, DAFGSR, DAFRDR, DAFWDR, and DAFNRR for exceptions specific to those entry points. FilesNone. ParticularsDAFRWD serves as an umbrella, allowing data to be shared by its entry points: DAFGDR Read double precision record. DAFGSR Read summary/descriptor record. DAFRDR Read double precision record. (Obsolete, use DAFGDR) DAFWDR Write double precision record. DAFNRR Number of reads, requests. DAFGDR, DAFGSR, and DAFWDR are the only approved means for reading and writing double precision records to and from DAFs. DAFRDR continues to function, but only on files of the native binary format. They keep track of which records have been read most recently, and of which records have been requested most often, in order to minimize the amount of time spent actually reading from external storage. DAFNRR may be used at any time during the execution of a program to determine the number of requests that have been processed, and the number of actual read operations needed to fulfill those requests. Ideally, the ratio of reads to requests should approach zero. In the worst case, the ratio approaches one. The ratio is related to the size of the record buffer, which controlled by parameter RBSIZE. The results returned by DAFNRR may be used to determine the optimal value of RBSIZE empirically. All data records in a DAF can be treated as an undifferentiated collection of double precision numbers. Summary records must be read using the DAFGSR interface, but their contents are properly buffered in a single buffer with the data records. No special buffers are required for each new data type, or to keep summary records separate from data records. ExamplesSee entry points DAFGDR, DAFGSR, DAFRDR, DAFWDR, and DAFNRR for examples specific to those entry points. Restrictions1) An integer overflow may occur if the number of requests by a single program exceeds the maximum number that can be stored in an integer variable. Literature_ReferencesNone. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) J.M. Lynch (JPL) H.A. Neilan (JPL) W.L. Taber (JPL) F.S. Turner (JPL) I.M. Underwood (JPL) VersionSPICELIB Version 2.1.0, 12-AUG-2021 (NJB) (JDR) Bug fixes: now NREAD is not incremented once it reaches INTMAX(), if it does. Re-ordered header sections in all entry points. Corrected typos in comments. Edited the header of the DAFRWD umbrella routine and all its entry entry points to comply with NAIF standard. Removed DAF required reading from $Literature_References. SPICELIB Version 2.0.0, 16-NOV-2001 (FST) Added DAFGDR and DAFGSR entry points to allow read access to DAFs utilizing non-native, but supported, binary file formats. DAFRDR was phased into obsolescence. The umbrella no longer suffers from integer overflow if a sufficient number of successful read requests are made. DAFWDR no longer uses DAFHLU to retrieve a logical unit for HANDLE. This call has been replaced with the handle manager interface, which does not lock handles to their logical units. SPICELIB Version 1.3.0, 24-MAR-2000 (WLT) The loop in DAFRDR that moved buffered d.p.s into the output array DATA was modified to use the routine MOVED. SPICELIB Version 1.2.0, 01-AUG-1997 (NJB) Unnecessary CHKIN and CHKOUT calls were removed from entry point DAFRDR. SPICELIB Version 1.1.0, 25-NOV-1992 (JML) 1) In DAFRDR, the found flag is now set to false if the call to DAFHLU fails. 2) In the example code fragment in DAFRDR and DAFWDR, the calling sequence to MOVED was corrected. 3) In DAFRDR a variable name was changed. 4) In DAFNRR a cut and paste error in the header was fixed. SPICELIB Version 1.0.2, 10-MAR-1992 (WLT) Comment section for permuted index source lines was added following the header. SPICELIB Version 1.0.1, 22-MAR-1990 (HAN) Literature references added to the header. SPICELIB Version 1.0.0, 31-JAN-1990 (IMU) |
Fri Dec 31 18:36:09 2021