The following examples illustrate uses of the options specification.
Example 1
This example selects the ADDRESSCHECK option.
OPTIONS (ADDRESSCHECK); D DATA SET ( K NUMBER (4); ); S SET OF D KEY K;
Example 2
This example illustrates a restartable program that uses the database EMPLOYEE. The DASDL statements for the database EMPLOYEE follows and includes the AUDIT and RDSSTORE options.
COMMENT This is the database EMPLOYEE; OPTIONS(AUDIT,RDSSTORE); EMP DATA SET ( EMP-NUMBER NUMBER(6); : : ); RDS RESTART DATA SET ( RDS-COUNTER NUMBER(6); RDS-ID ALPHA(18); ); RESTARTSET SET OF RDS KEY IS RDS-ID;
The following is a restartable program that uses the database EMPLOYEE:
* THE RESTART INFORMATION OBTAINED BY THE PROGRAM FROM * DMSII HAS TWO STATES. 1) NO RESTART RECORD - PROGRAM HAS * DONE NOTHING, START FROM BEGINNING. 2) A RESTART RECORD - * PROGRAM HAS DONE SOMETHING, START FROM POINT LEFT * OFF (AS DETERMINED BY INFORMATION FROM THE RESTART * RECORD). * * A SEPARATE PROGRAM MUST BE RUN TO DELETE RESTART RECORDS * FROM THE RESTART DATA SET. THIS IS NECESSARY TO PREVENT * THE FOLLOWING OCCURRENCE. THE RESTARTABLE PROGRAM DELETES * ITS RESTART RECORD BEFORE IT CLOSES THE DATABASE. FROM * THIS POINT ON IF A HALT/LOAD SHOULD OCCUR OR THE PROGRAM * IS DISCONTINUED, THERE WILL NOT BE A RECORD IN THE RESTART DATA * SET AND THE PROGRAM WILL ERRONEOUSLY START FROM THE * BEGINNING. IDENTIFICATION DIVISION. : : DATA-BASE SECTION. DB EMPLOYEE. WORKING-STORAGE SECTION. 01 NUMOF-RECORDS-TO-CREATE PIC 9(6) COMP VALUE 20. 01 RECORD-COUNTER PIC 9(6) COMP VALUE 0. : : PROCEDURE DIVISION. MAIN OPEN UPDATE EMPLOYEE. PERFORM CHECK-FOR-RESTART. PERFORM CREATE-EMPLOYEE UNTIL NOT DMSTATUS(DMERROR). CLOSE EMPLOYEE. STOP RUN. CREATE-EMPLOYEE. PERFORM CREATE-RECORD UNTIL NUMOF-RECORDS-TO-CREATE IS NOT GREATER THAN RECORD-COUNTER. * PUT OUT SYNCPOINT SO NEED NOT CHECK FOR ABORT AT CLOSE TIME. BEGIN-TRANSACTION NO-AUDIT RDS ON EXCEPTION PERFORM CHECK-FOR-ABORTED ELSE END-TRANSACTION NO-AUDIT RDS SYNC ON EXCEPTION PERFORM CHECK-FOR-ABORTED. CREATE-RECORDS. BEGIN-TRANSACTION NO-AUDIT RDS ON EXCEPTION PERFORM CHECK-FOR-ABORTED ELSE CREATE EMP MOVE RECORD-COUNTER TO EMP-NUMBER STORE EMP MOVE RECORD-COUNTER TO RDS-COUNTER END-TRANSACTION AUDIT RDS ON EXCEPTION PERFORM CHECK-FOR-ABORTED ELSE ADD 1 TO RECORD-COUNTER. CHECK-FOR-RESTART. LOCK RESTARTSET AT RDS-ID = "MYID" ON EXCEPTION IF DMSTATUS(NOTFOUND) CREATE RDS MOVE "MYID" TO RDS-ID MOVE 1 TO RECORD-COUNTER ELSE CALL DMTERMINATE ELSE MOVE RDS-COUNTER TO RECORD-COUNTER ADD 1 TO RECORD-COUNTER. CHECK-FOR-ABORTED. IF DMSTATUS(ABORT) PERFORM CHECK-FOR-RESTART ELSE CALL DMTERMINATE.
Example 3
This example encrypts the items inside group ADDRESS using the AESGCM algorithm. An individual field in the group ADDRESS, such as ZIPCODE, cannot be encrypted, but you can encrypt the whole group.
OPTIONS ( BACKUPKEYSET ); PARAMETERS ( DATAENCRYPTTYPE = AESGCM ); DEFAULTS ( DATAENCRYPTKEYSET ); EMPLOYEE DATA SET ( FIRST NAME ALPHA (30); LAST NAME ALPHA (30); SSNUMBER NUMBER (9); ADDRESS GROUP ( STREETNO NUMBER (5); STREETNAME ALPHA (30); CITY ALPHA (10); STATE ALPHA (2); ZIPCODE NUMBER (6); ) DATAENCRYPT = TRUE; HIREDATA DATA; SERVICEYEAR REAL PHONENO REAL; DRIVERLICENSE ALPHA (10); ); PHONESET SET OF EMPLOYEE KEY IS PHONENO, INDEX SEQUENTIAL;
Example 4
This example encrypts most of the items inside data set D, with the exception of items B, C, and F. Item B cannot be encrypted since it is a BOOLEAN item. Item C cannot be encrypted since it is a key item, and item F cannot be encrypted since it is a FIELD item.
OPTIONS ( BACKUPKEYSET ); PARAMETERS ( DATAENCRYPTTYPE = AESGCM ); DEFAULTS ( DATAENCRYPTKEYSET ); D DATA SET ( A ALPHA(5); B BOOLEAN; C NUMBER(9) G GROUP ( N NUMBER(S5,2); F FIELD(20); ); R REAL ; )DATAENCRYPT = TRUE ); S SET OF D KEY IS C, INDEX SEQUENTIAL;