From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,INVALID_DATE autolearn=no autolearn_force=no version=3.4.4 Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!mcvax!unido!gmdka!systeam From: systeam@gmdka.UUCP Newsgroups: comp.lang.ada Subject: Re: VAX Ada sequential IO and Direct IO - (nf) Message-ID: <1700003@gmdka.UUCP> Date: Wed, 22-Apr-87 06:15:00 EDT Article-I.D.: gmdka.1700003 Posted: Wed Apr 22 06:15:00 1987 Date-Received: Sun, 26-Apr-87 23:46:56 EDT References: <114127553@jade.UUCP> Nf-ID: #R:jade:114127553:gmdka:1700003:000:6200 Nf-From: gmdka!systeam Apr 22 12:15:00 1987 List-Id: If you have problems with Ada Sequential IO and Direct IO you may use our validated Ada Compiler version 1.6A for VAX/VMS. As the following example shows it has no problems with these Ada features. For obvious reasons a use_error would be raised if you would try to create a "real" direct file of type dir_io.file_type. But if you use an index-sequential file to implement this direct file then no problem arises. You can get an index-sequential file when using a form parameter in the create operation. We also played with Tony Alden's "even if I restrict the range of 'a' ..." remark for the Direct IO case (cf. cdir_f). My address: Dr. Peter Dencker SYSTEAM KG Dr. Winterstein Am Rueppurer Schloss 7 D 7500 Karlsruhe 51 West Germany UUCP-mail: systeam@gmdka Ada Example: ------------ WITH text_io; USE text_io; WITH sequential_io; WITH direct_io; PROCEDURE unconstr_io IS TYPE foo(a : integer) IS RECORD f1 : string (1..a); END RECORD; item3 : foo (3) := (a => 3, f1 => "abc"); item4 : foo (4) := (a => 4, f1 => "1234"); SUBTYPE int IS integer RANGE 1 .. 150; TYPE cfoo(a : int) IS -- discriminant with restricted subtype RECORD f1 : string (1..a); END RECORD; citem3 : cfoo (3) := (a => 3, f1 => "abc"); citem4 : cfoo (4) := (a => 4, f1 => "1234"); PACKAGE seq_io IS NEW sequential_io (foo); seq_f : seq_io.file_type; PACKAGE dir_io IS NEW direct_io (foo); dir_f : dir_io.file_type; PACKAGE cdir_io IS NEW direct_io (cfoo); cdir_f : cdir_io.file_type; BEGIN ----------------------------------------------------------------- put_line ("Sequential_io test:"); seq_io.create (seq_f, name => "unconstr_io.seq"); seq_io.write (seq_f, item3); seq_io.write (seq_f, item4); seq_io.close (seq_f); item3 := (3, " "); item4 := (4, " "); seq_io.open (seq_f, seq_io.in_file, "unconstr_io.seq"); seq_io.read (seq_f, item3); seq_io.read (seq_f, item4); seq_io.close (seq_f); put_line (integer'image(item3.a) & ", " & item3.f1); put_line (integer'image(item4.a) & ", " & item4.f1); ----------------------------------------------------------------- put_line ("Direct_io test:"); dir_io.create (dir_f, name => "unconstr_io.drc", form => "ORGANIZATION => INDEXED, RECORD_FORMAT => VARIABLE"); FOR i IN 1 .. 10 LOOP dir_io.write (dir_f, item4); dir_io.write (dir_f, item3); END LOOP; put_line ("current size of " & dir_io.name (dir_f) & " is " & dir_io.count'image (dir_io.size (dir_f))); dir_io.close (dir_f); item3 := (3, " "); item4 := (4, " "); dir_io.open (dir_f, dir_io.in_file, "unconstr_io.drc"); put_line ("current index is " & dir_io.count'image (dir_io.index(dir_f))); dir_io.read (dir_f, item4); put_line ("current index is " & dir_io.count'image (dir_io.index(dir_f))); put_line (integer'image(item4.a) & ", " & item4.f1); dir_io.read (dir_f, item3); put_line ("current index is " & dir_io.count'image (dir_io.index(dir_f))); put_line (integer'image(item3.a) & ", " & item3.f1); item3 := (3, " "); item4 := (4, " "); dir_io.read (dir_f, item3, from => 18); put_line ("current index is " & dir_io.count'image (dir_io.index(dir_f))); put_line (integer'image(item3.a) & ", " & item3.f1); dir_io.read (dir_f, item4, from => 15); put_line ("current index is " & dir_io.count'image (dir_io.index(dir_f))); put_line (integer'image(item4.a) & ", " & item4.f1); dir_io.close (dir_f); ----------------------------------------------------------------- put_line ("Restricted direct_io test:"); cdir_io.create (cdir_f, name => "unconstr_io.cdr"); FOR i IN 1 .. 10 LOOP cdir_io.write (cdir_f, citem4); cdir_io.write (cdir_f, citem3); END LOOP; put_line ("current size of " & cdir_io.name (cdir_f) & " is " & cdir_io.count'image (cdir_io.size (cdir_f))); cdir_io.close (cdir_f); citem3 := (3, " "); citem4 := (4, " "); cdir_io.open (cdir_f, cdir_io.in_file, "unconstr_io.cdr"); put_line ("current index is " & cdir_io.count'image (cdir_io.index(cdir_f))); cdir_io.read (cdir_f, citem4); put_line ("current index is " & cdir_io.count'image (cdir_io.index(cdir_f))); put_line (int'image(citem4.a) & ", " & citem4.f1); cdir_io.read (cdir_f, citem3); put_line ("current index is " & cdir_io.count'image (cdir_io.index(cdir_f))); put_line (int'image(citem3.a) & ", " & citem3.f1); citem3 := (3, " "); citem4 := (4, " "); cdir_io.read (cdir_f, citem3, from => 18); put_line ("current index is " & cdir_io.count'image (cdir_io.index(cdir_f))); put_line (int'image(citem3.a) & ", " & citem3.f1); cdir_io.read (cdir_f, citem4, from => 15); put_line ("current index is " & cdir_io.count'image (cdir_io.index(cdir_f))); put_line (int'image(citem4.a) & ", " & citem4.f1); cdir_io.close (cdir_f); END; Compilation Log: ---------------- KARLSRUHE ADA SYSTEM - VAX/VMS version by S Y S T E A M Installation Date: 2-MAR-1987 compiling BIG0:[PD.ADATEST.SRC]UNCONSTR_IO.ADA;14 in library BIG0:[PD.ADATEST.ADALIB] KARLSRUHE ADA SYSTEM - COMPILER VERSION 1.6A KARLSRUHE ADA COMPILER - SYNTAX KARLSRUHE ADA COMPILER - LIBREAD KARLSRUHE ADA COMPILER - SEMANTIC KARLSRUHE ADA COMPILER - EXPAND KARLSRUHE ADA COMPILER - TRANSFORM KARLSRUHE ADA COMPILER - OPTIMIZE KARLSRUHE ADA COMPILER - CODEGEN KARLSRUHE ADA COMPILER - LIBWRITE KARLSRUHE ADA COMPILER - LISTING PROCEDURE UNCONSTR_IO, Library Index 46 *** No Errors during Compilation *** CPU Time used : 30.6 Seconds Execution Log: -------------- Sequential_io test: 3, abc 4, 1234 Direct_io test: current size of BIG0:[PD.ADATEST]UNCONSTR_IO.DRC;9 is 20 current index is 1 current index is 2 4, 1234 current index is 3 3, abc current index is 19 3, abc current index is 16 4, 1234 Restricted direct_io test: current size of BIG0:[PD.ADATEST]UNCONSTR_IO.CDR;2 is 20 current index is 1 current index is 2 4, 1234 current index is 3 3, abc current index is 19 3, abc current index is 16 4, 1234