Examples of Using the Options Specification

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;