CAINDMFOSVDV -- DIRECT ACCESS OPERATIONS TO MEMORY 00000100 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CTITLE FOSVDV -- DIRECT ACCESS OPERATIONS TO MEMORY 00000200 C AUTHOR/DESIGNER MICHAEL MAROLDA 00000300 C LANGUAGE IBM VSFORTRAN 00000400 C SYSTEM IBM AND CRAY 00000500 C WRITTEN 01-05-87 00000600 C REVISED XX-XX-XX XXX. .... 00000700 C REVISED 06-08-87 MJM. MADE CRAY COMPATIBLE 00000710 C REVISED 12-06-89 LWC. ADD PARAMETER TO FORVSV AND FOWVSV CALLS. 00000710 C 00000800 C 00000900 C CALL FOIVSV (INLEN, DATREC, SWEEP) 00001000 C INPUT INLEN = MAX SIZE OF EACH RECORD I4 00001100 C DATREC = NUMBER OF RECORDS TO ALLOCATE I4 00001200 C SWEEP = MEMORY TO USE ANY 00001300 C 00001400 C 00001500 C CALL FORVSV (LENDAT, DA, SWEEP, DATA) 00001600 C INPUT LENDAT = AMOUNT OF DATA TO GET I4 00001700 C DA = RECORD NUMBER IN FILE (1, 2, 3, ...) I4 00001800 C SWEEP = MEMORY TO USE (SAME AS IN FOIVSV) ANY 00001300 C OUTPUT DATA = RECORD FROM MEMORY ANY 00001900 C READ RECORD NUMBER DA AND STORE IN DATA. 00002000 C 00002100 C CALL FOWVSV (LENDAT, DA, SWEEP, DATA) 00002200 C INPUT LENDAT = AMOUNT OF DATA TO GET I4 00002300 C DA = RECORD NUMBER IN FILE (1, 2, 3, ...) I4 00002400 C SWEEP = MEMORY TO USE (SAME AS IN FOIVSV) ANY 00001300 C OUTPUT DATA = RECORD FROM MEMORY ANY 00002500 C WRITE RECORD GIVEN IN DATA AT LOCATION GIVEN BY DA. 00002600 C 00002700 C CALL FOCDV (KPWRKD) 00002800 C DUMMY CLOSE 00002900 C 00003000 C 00003100 C THE FILE IS CREATED SEQUENTIALLY WITH FOIVSV 00003200 C IT CAN BE ACCESSED DIRECTLY WITH FORVSV AND FOWVSV. 00003300 C 00003400 CTITLE FOIVSV -- OPEN FOR BUILDING DIRECT FILE SEQUENTIALLY 00003500 CA INPUT INLEN = MAX SIZE OF EACH RECORD I4 00003600 CA DATREC = NUMBER OF RECORDS TO ALLOCATE I4 00003700 CA SWEEP = MEMORY TO USE ANY 00003800 CA 00003900 CA USED TO INITIALIZE MEMORY TO BE USED FOR PSUEDO DISKIO 00004000 CA IT WOULD EVENTUALLY BE NICE TO UPGRADE THIS TO USE VIO 00004100 CA AND EMULATE DISKIO MORE CLOSELY (BUT FOR LRECL'S > 32K) 00004200 CAEND 00004300 C 00004400 C 00004500 C 00004600 C 00004700 C 00004800 C 00004900 CTITLE FORVSV -- READ DIRECT ACCESS FILE 00005000 CA INPUT LENDAT = AMOUNT OF DATA TO GET I4 00005100 CA DA = RECORD NUMBER IN FILE (1, 2, 3, ...) I4 00005200 CA SWEEP = MEMORY TO USE (SAME AS IN FOIVSV) ANY 00003800 CA OUTPUT DATA = RECORD FROM MEMORY ANY 00005300 CA READ RECORD NUMBER DA AND STORE IN DATA. 00005400 CA 00005500 CAEND 00005600 C 00005700 C 00005800 C 00005900 CTITLE FOWVSV -- WRITE DIRECT ACCESS RECORD 00006000 CA INPUT LENDAT = AMOUNT OF DATA TO GET I4 00006100 CA DA = RECORD NUMBER IN FILE (1, 2, 3, ...) I4 00006200 CA SWEEP = MEMORY TO USE (SAME AS IN FOIVSV) ANY 00003800 CA OUTPUT DATA = RECORD FROM MEMORY ANY 00006300 CA WRITE RECORD GIVEN IN DATA AT LOCATION GIVEN BY DA. 00006400 CA 00006500 CAEND 00006600 C 00006700 C 00006800 C 00006900 CTITLE FOCDV -- CLOSE DIRECT ACCESS FILE 00007000 CA DUMMY CLOSE 00007100 CAEND 00007200 SUBROUTINE FOSVDV 00007300 C 00007400 IMPLICIT INTEGER (A-Z) 00007500 C 00007600 C COMMON /VCORDA / SWEEP(2) 00007700 C 00007800 REAL SWEEP ( 1) 00007900 REAL DATA ( 1) 00008000 C 00008100 C 00008200 C 00008300 C 00008400 C************************************************************** 00008500 C INITIALIZE SEQUENTIAL MEMORY 00008600 C************************************************************** 00008700 C 00008800 ENTRY FOIVSV (INLEN, DATREC, SWEEP) 00008900 C 00009000 DATLEN = INLEN 00009100 NRECS = DATREC 00009200 C 00009300 RETURN 00009400 C 00009500 C*************************************************************** 00009600 C READ DIRECT FROM MEMORY 00009700 C*************************************************************** 00009800 C 00009900 ENTRY FORVSV (LENDAT, DA, SWEEP, DATA) 00010000 C 00010100 INDX = DA*DATLEN-DATLEN+1 00010200 CALL ARMVE(SWEEP(INDX),DATA(1),LENDAT) 00010300 DA = DA+1 00010400 RETURN 00010500 C 00010600 C************************************************************* 00010700 C WRITE DIRECT TO MEMORY 00010800 C************************************************************* 00010900 C 00011000 ENTRY FOWVSV (LENDAT, DA, SWEEP, DATA) 00011100 C 00011200 INDX = DA*DATLEN-DATLEN+1 00011300 CALL ARMVE(DATA(1),SWEEP(INDX),LENDAT) 00011400 DA = DA+1 00011500 RETURN 00011600 C 00011700 C************************************************************** 00011800 C CLOSE DIRECT MEMORY 00011900 C************************************************************** 00012000 C 00012100 ENTRY FOCDV (KPWRKD) 00012200 RETURN 00012300 C 00012400 END 00012500