*DECK QDRSYNX 
PROC QDRSYNX
AND                                  1
ANY                                  2
DIVISION                             3
EQ                                   4
GE                                   5
GT                                   6
IN                                   7
IS                                  10
JOIN                                11
LE                                  12
LT                                  13
NOT                                 14
NE                                  15
OF                                  16
OR                                  17
RELATION-NAME                       20
RESTRICT                            21
WHERE                               22
XOR                                 23
.                                   24
)                                   25
(                                   26
+ 
ANYYES
          SET ANY FLAG
CHKPAR
          CHECK THE BALANCE OF ( AND )
CHKREC
          CHECK RECORD NAME IS DEFINED OR NOT 
CLARCYL 
          RESET THE CYCLING BIT IN AREA INDEX TABLE 
CLOSEPAR
          STORE ) 
CLUP
          RESET ALL FLAGS 
DBI1
          ANALYSE SOURCE DBI
DBI2
          ANALYSE TARGET DBI
ENDR
          END OF RELATION DIVISION INPUTS 
GETNAME 
          CHECK FOR QUALIFICATION OF DATA NAME
INITR 
          STORE AREAINDEX IN CORE 
ITMNAM
          STORE DATA NAME IN TABLE
OPENPAR 
          STORE ( 
RECNAME 
          CHECK FOR RECORD NAME 
RELTRVSD
          CHECK RECORD TRAVERSES RELATION AND ONLY ONE RESTRICT ALLOWED 
RESETNAM
          RESET DATA NAME TABLE 
SOURCEDBI 
          SET FLAG FOR SOURCE DBI 
STRN
          CHECK UNIQUENESS OF RELATION NAME AND STORE IT
SUB1
          STORE SUBSCRIPT 
TARGETDBI 
          SET FALG FOR TARGET DBI 
VERIFYLIT 
          CHECK LITERALS COMPATIBLE WITH ITEM CLASS 
WRITERES
          WRITE  RESTRICT CLAUSE TO CORE
WRITEWRD
          WRITE RELATION  TABLE AND RESTRICT TABLE TO SUBSCHEMA 
WRTRESET
          RESET POINTERS AND ITEMS
+ 
       :RELATION :01 +SNW -. *CLUP *INITR 
           :03 $RELATION-NAME D050 05 
           :05 -IS +NAME D056 +SNW 07 
               / *STRN
           :07 $JOIN D051 27
           :09 -WHERE *CLARCYL
           :11 *SOURCEDBI DATA-ATTRIB 13
               / *DBI1
           :13 *CLUP $EQ +SNW D052
           :15 *TARGETDBI DATA-ATTRIB 17
               / *DBI2
           :17 -. *CLUP $RESTRICT 33
           :19 +NAME D122 +SNW 21 
               / *RECNAME D122
           :21 -WHERE CONDITION *CHKPAR 
           :22 -. 
           :23 $RELATION-NAME 27
           :25 *WRITERES 05 
           :27 $RESTRICT 29 /*WRTRESET 19 
           :29 +EOT 30 / 31 
           :30 RESEND 31 / 25 
           :31 *WRITERES *CLARCYL *ENDR 
           :33 $RELATION-NAME 35 / 25 
           :35 +EOT 11 / 31 
       :RESEND :01 D077 
           :05 +EOT +SNW 10 / NO
           :10 $RELATION-NAME 05 / YES
       :CONDITION :01 $NOT 02 / *WRITEWRD 
           :02  $( 03 / *WRITEWRD *OPENPAR
           :03 DATA-ATTRIB NO / *CHKREC  NO 
           :04 *RELTRVSD NO 
           :05 $EQ
               $NE
               $GT
               $LT
               $GE
               $LE D053 +SNW 07 
           :06 *WRITEWRD +LIT 07 / *VERIFYLIT 11 / *WRITEWRD 09 
           :07 DATA-ATTRIB NO / *CHKREC NO
           :09 $) 11 / *WRITEWRD *CLOSEPAR
           :11 $AND 
               $OR
               $XOR *CHKPAR YES / *WRITEWRD 01
       :DATA-ATTRIB:01 +NAME D054 +SNW NO / *WRITEWRD *RESETNAM 
           :03 *ITMNAM NO / $( 09 / *WRITEWRD +INT 05 
               / *WRITEWRD *SUB1 07 
           :05 $ANY D063 +SNW 07 / *WRITEWRD *ANYYES
           :07 $) D055 NO / *WRITEWRD 
           :09 $OF $IN 11 / *WRITEWRD +NAME D054 +SNW NO / *WRITEWRD 03 
           :11 *GETNAME NO / YES
END 
