Previous Topic: Example 2—Adding Path-groups to Expand FunctionalityNext Topic: Example 4—Performing a Difference Join


Example 3—Implementing Referential Integrity Checks for a Table

This example shows how to check for a valid employee ID before a new EDUCATION row is stored.

Screen 1

                                            CA   CDEF   CA - Automatic System Facility            ** Column Definition **   DC560302 ADD/MODIFY COLUMNS   Table Name: EDUCATION       _ PF1 - Help                         _ PF3 - Extended Selection Definition       _ PF2 - Extended Column Definition   _ PF4 - Extended Key Definition         Page:  1  of  1                                                  Unique  Display   Ext            Column Name             Width   Type    Key     Seq    Screen   EMP-ID                               4 NUMERIC    X        1      _   COURSE-ID                            4 NUMERIC    _        2      _   COURSE-NAME                         20 TEXT       _        3      _

ASF-generated Subschema

ADD
SUBSCHEMA NAME IS RU000189 OF SCHEMA NAME IS IDMSR VERSION IS 1
    .
    .
    .
ADD
LOGICAL RECORD NAME IS EDUCATION
    ELEMENTS ARE
        ASF-RDEF-REC
        RFUR-000189-OOAK
        RFUR-000189-DATA
    .
    .
    .
ADD
PATH-GROUP NAME IS STORE EDUCATION
    SELECT
        FIND CURRENT RFUR-000189-DATA
            ON 0306 DO
        FIND FIRST ASF-RDEF-OWN WITHIN IDMSR-AREA
            ON 0000 NEXT
            ON 0307 ITERATE
        OBTAIN FIRST ASF-RDEF-REC WITHIN RDEFSET
            WHERE SORTKEY EQ 000000189
            ON 0326 RETURN DEFN-MISSING
            ON 0000 NEXT

        OBTAIN RFUR-000189-OOAK
            WHERE DBKEY EQ RDEF-OWNER-DBKEY OF LR
            ON 0326 RETURN OOAK-MISSING
            ON 0000 NEXT
        FIND LAST RFUR-000189-DATA WITHIN RFPS-000189-SET
            ON 0307 NEXT
            ON 0000 NEXT
            END
            ON 0000 NEXT
        STORE RFUR-000189-DATA
            ON 0000 NEXT
    .
    .
    .

Modified Subschema

ADD
SUBSCHEMA NAME IS RU000189 OF SCHEMA NAME IS IDMSR VERSION IS 1
    .
    .
    .
ADD
LOGICAL RECORD NAME IS EDUCATION
    ELEMENTS ARE
        ASF-RDEF-REC
        RFUR-000189-OOAK
        RFUR-000189-DATA
    .
    .
    .
ADD
PATH-GROUP NAME IS STORE EDUCATION
    SELECT
     ┌-------------------------------------┐
     │  FIND FIRST EMPLOYEE                │
     │      WHERE CALCKEY EQ EMP-ID OF LR  │ ◄---- Checks for a valid
     │      ON 0326 RETURN INVALID-ID      │          employee ID
     │      ON 0000 NEXT                   │
     └-------------------------------------┘
        FIND CURRENT RFUR-000189-DATA
            ON 0306 DO
        FIND FIRST ASF-RDEF-OWN WITHIN IDMSR-AREA
            ON 0000 NEXT
            ON 0307 ITERATE
        OBTAIN FIRST ASF-RDEF-REC WITHIN RDEFSET
            WHERE SORTKEY EQ 000000189
            ON 0326 RETURN DEFN-MISSING
            ON 0000 NEXT
        OBTAIN RFUR-000189-OOAK
            WHERE DBKEY EQ RDEF-OWNER-DBKEY OF LR
            ON 0326 RETURN OOAK-MISSING
            ON 0000 NEXT
        FIND LAST RFUR-000189-DATA WITHIN RFPS-000189-SET
            ON 0307 NEXT
            ON 0000 NEXT
            END
            ON 0000 NEXT
        STORE RFUR-000189-DATA
            ON 0000 NEXT
    .
    .
    .