[Info-vax] Oracle Database vs Oracle/Rdb
Neil Rieck
n.rieck at sympatico.ca
Fri Jun 28 15:37:47 EDT 2019
On Tuesday, June 25, 2019 at 12:48:31 PM UTC-4, John Reagan wrote:
> On Tuesday, June 25, 2019 at 12:36:33 PM UTC-4, Neil Rieck wrote:
> > On Monday, June 24, 2019 at 7:56:05 PM UTC-4, Arne Vajhøj wrote:
> > > On 6/24/2019 8:45 AM, Bob Koehler wrote:
> > > > In article <37c79af8-f631-4847-b4e8-7158fdba1a00 at googlegroups.com>, Neil Rieck <n.rieck at sympatico.ca> writes:
> > > >> That may not be possible depending upon how the customer is using Oracle-RD=
> > > >> B. Recall that RDB was developed by DEC as a successor to RMS. Certain DEC =
> > > >> languages, like COBOL and BASIC, have builtin support for RMS while other D=
> > > >> EC languages provide indirect RMS support via the linker.
> > > >
> > > > You want to be more specific about that claim?
> > >
> > > Many VMS languages have language level support for
> > > index-sequential files (which is often what is meant
> > > by RMS even though practically any file access is
> > > via RMS). Definitely Pascal and Cobol. And likely
> > > also Basic. But not C.
> > >
> > > Any VMS language can use RMS SYS$ calls to access
> > > index-sequential files. Including C. Which may be
> > > what the "linking" was meant to say.
> > >
> > > Arne
> >
> > Question: I did not think that Pascal had builtin RMS support (as in directly opening/reading INDEXED files without resorting to system calls). At least this was the case back when I last used VAX Pascal. Was builtin RMS support added to Pascal during the Alpha days -or- are we using different definitions for "builtin"?
> >
> > Neil
>
> Here's a test from the test system
>
> PROGRAM Address(Order_File,Report_File,INPUT);
>
>
> TYPE
> Mail_Order = RECORD
> Order_Num : [KEY(0)] INTEGER;
> Name : PACKED ARRAY[1 .. 20] OF CHAR;
> Address : PACKED ARRAY[1 .. 20] OF CHAR;
> City : PACKED ARRAY[1 .. 19] OF CHAR;
> State : PACKED ARRAY[1 .. 2] OF CHAR;
> Zip_Code : [KEY(1)] PACKED ARRAY[1 .. 5] OF CHAR;
> Item_Num : [KEY(2)] INTEGER;
> Shipping : REAL;
> END;
>
> VAR
> Order_File : FILE OF Mail_Order;
> Order_Rec : Mail_Order;
> Report_File : TEXT;
>
>
> PROCEDURE Write_On_Indexed_File;
> BEGIN
>
> WRITE(Order_File,Order_Rec);
>
> (* Alternate method *)
>
> Order_File^ := Order_Rec;
> PUT(Order_File);
> END;
>
>
> PROCEDURE Use_Delete;
> BEGIN
>
> FINDK(Order_File,2,375,EQL);
> GET(Order_File);
> IF (Order_File^.Item_Num = 375)
> THEN
> DELETE(Order_File)
> ELSE
> WRITELN(Report_File,'There is no second component');
> END;
>
>
> PROCEDURE Use_Resetk;
> VAR Continue:BOOLEAN;
> BEGIN
>
> RESETK(Order_File,1);
> Continue := TRUE;
> WHILE Continue AND NOT UFB(Order_File) DO
> IF Order_File^.Zip_Code < '50000'
> THEN
> BEGIN
> Order_File^.Shipping := 1.00;
> UPDATE(Order_File);
> GET(Order_File);
> END
> ELSE
> Continue := FALSE;
> END;
>
>
> PROCEDURE Use_Findk;
> VAR Continue:BOOLEAN;
>
> BEGIN
> FINDK(Order_File,1,'10000',GEQ);
> Continue := TRUE;
> WHILE Continue AND NOT UFB(Order_File) DO
> BEGIN
> READ(Order_File,Order_Rec);
> IF Order_Rec.Zip_Code < '50000'
> THEN
> WRITE(Report_File, 'Order number ',Order_Rec.Order_Num, 'has zip code ',Order_Rec.Zip_Code)
> ELSE
> Continue := FALSE;
> END;
> END;
>
> BEGIN
> OPEN(Order_File,
> 'ugch6pg16.dat',
> HISTORY := NEW,
> ACCESS_METHOD := KEYED,
> ORGANIZATION := INDEXED);
> OPEN(Report_File, HISTORY := NEW );
> REWRITE(Report_File);
> Use_Findk;
> Use_Resetk;
> Use_Delete;
> Write_on_Indexed_File;
> END.
Thanks. Every day I learn something new.
Neil
More information about the Info-vax
mailing list