Creates a record in a DEC DATATRIEVE domain and stores values
in one or more fields of the record. For information on using
STORE with Oracle CODASYL DBMS and relational databases, see
the section on the STORE statement for Oracle CODASYL DBMS and
relational sources in this chapter.
Format
STORE [context-variable IN] domain-name
[USING statement-1]
[VERIFY [USING] statement-2]
1 – Arguments
context-variable
Is the name of the record to be inserted.
domain-name
Is the given name or alias of the domain that contains the new
record.
USING statement-1
Specifies a DEC DATATRIEVE statement that can store one value for
one or more fields in the new record.
VERIFY [USING] statement-2
Specifies a statement DEC DATATRIEVE executes just before storing
the new record.
2 – Examples
The following example stores two records in the FAMILIES domain:
DTR> READY FAMILIES WRITE
DTR> REPEAT 2 STORE FAMILIES
Enter FATHER: GEORGE
Enter MOTHER: SANDY
Enter NUMBER_KIDS: 2
Enter KID_NAME: DANA
Enter AGE: 12
Enter KID_NAME: DACIA
Enter AGE: 9
Enter FATHER: WAYNE
Enter MOTHER: SHEEL
Enter NUMBER_KIDS: 2
Enter KID_NAME: BETE
Enter AGE: 8
Enter KID_NAME: ALEX
Enter AGE: 5
DTR> FIND FAMILIES WITH MOTHER = "SANDY", "SHEEL"
[2 records found]
DTR> PRINT ALL
NUMBER KID
FATHER MOTHER KIDS NAME AGE
GEORGE SANDY 2 DANA 12
DACIA 9
WAYNE SHEEL 2 BETE 8
ALEX 5
DTR>
The following example stores a record in the YACHTS domain, using
a context variable and a VERIFY clause:
DTR> SHOW HINKLEY_STORE
PROCEDURE HINKLEY_STORE
STORE A IN YACHTS USING
BEGIN
BUILDER = "HINKLEY"
MODEL = "BERMUDA 40"
RIG = "YAWL"
LOA = 40
DISP = 20000
BEAM = 12
PRICE = 82000
END VERIFY USING
BEGIN
PRINT A.BOAT, SKIP
IF *.CONFIRMATION CONT "N" THEN
PRINT SKIP THEN ABORT "BAD RECORD"
END
END_PROCEDURE
DTR> READY YACHTS WRITE
DTR> :HINKLEY_STORE
LENGTH
OVER
MANUFACTURER MODEL RIG ALL WEIGHT BEAM PRICE
HINKLEY BERMUDA 40 YAWL 40 20,000 12 $82,000
Enter CONFIRMATION: N
ABORT: BAD RECORD
DTR>
The following example defines a domain for single-digit integers
and their squares, and uses a WHILE statement to control the
number of records stored in the domain:
DTR> DEFINE DOMAIN SQUARES USING
DFN> SQUARES_REC ON SQUARES.DAT;
DTR> DEFINE RECORD SQUARES_REC USING
DFN> 01 SQUARES.
DFN> 03 NUMBER PIC 9.
DFN> 03 ITS_SQUARE PIC 99.
DFN> ;
[Record is 3 bytes long.]
DTR> DEFINE FILE FOR SQUARES;
DTR> READY SQUARES WRITE
DTR> DECLARE N PIC 99.
DTR> N = 0
DTR> WHILE N NE 10 STORE SQUARES USING
CON> BEGIN
CON> NUMBER=N
CON> ITS_SQUARE = N * N
CON> N = N + 1
CON> END
DTR> FIND SQUARES
[10 records found]
DTR> PRINT ALL
ITS
NUMBER SQUARE
0 00
1 01
2 04
3 09
4 16
5 25
6 36
7 49
8 64
9 81
DTR>
The following example stores data from the WORKER domain into
the expanded NEW_WORKER domain. These domains have duplicate
elementary field names that are subordinate to different group
field names. The example uses a FOR statement to control the
STORE statement so that DEC DATATRIEVE stores the data from the
elementary fields correctly. The record definitions and the STORE
statement are as follows:
DTR> SHOW WORK_REC
RECORD WORK_REC USING
01 WORK.
03 LOCAL.
05 CITY PIC X(10).
05 STATE PIC X(2).
03 REMOTE.
05 CITY PIC X(10).
05 STATE PIC X(2).
;
DTR> SHOW NEW_WORK_REC
RECORD NEW_WORK_REC USING
01 WORK.
03 NEW_LOCAL.
05 CITY PIC X(10).
05 STATE PIC X(2).
03 NEW_REMOTE.
05 CITY PIC X(10).
05 STATE PIC X(2).
03 NAME.
05 FIRST PIC X(10).
05 LAST PIC X(15).
;
DTR> READY NEW_WORKER WRITE
DTR> FOR WORKER
CON> STORE NEW_WORKER USING
CON> BEGIN
CON> NEW_LOCAL = LOCAL
CON> NEW_REMOTE = REMOTE
CON> END
DTR>