XDEs (expression description elements) and VXDEs (variable expression description elements) form the compiled representation of a process at runtime. During compilation, each process statement is converted into a series of XDEs that represent the operands and operations within each statement. The XDEs of the statements are strung together to form the compiled representation of the process. At runtime, the runtime system builds a VXDE for each XDE. VXDEs contain variable runtime information; the information in XDEs does not change.
The compiled representation of a function consists of one operand XDE/VXDE for each parameter and one function XDE/VXDE for the function. These XDE/VXDE pairs contain the following information:
The DSECTs for the XDE and VXDE are shown below.
The runtime use of the XDEs and VXDEs is described under "Runtime Processing" later in this appendix.
DSECT of the XDE (Expression Description Element)
SPACE 1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* #AXDEDS - EXPRESSION DESCRIPTION ELEMENT *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* THIS COPY MEMBER IS INCLUDED IN #XDEDS. IF ANY CHANGES ARE *
* MADE HERE, PLEASE INSURE THAT ALL MODULES CONTAINING #XDEDS ARE *
* REASSEMBLED. *
* *
* THIS MACRO ALLOWS THE ADS MODULES TO MORE EASILY REFERENCE XDE *
* FIELDS WHEN AN XDE IS BEING BUILT WITHOUT THE XDENEXT FIELD. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SPACE
XDEDATAD DS 0F (REAL) DATA ADDRESS (OPERAND OR RESULT)
XDEBRNXT DS 0F ** BRANCH OPERATOR XDES ONLY
* IF RELOCATABLE XDE MODE TO BE USED IN
* EVAL/ADSOXDES THE OFFSET
* OF BRANCH TARGET XDE
* FROM 1ST XDE ELSE REAL ADDRESS OF TARGET
XDEDTABO DS H (LOGICAL)DATA ADDRESS - ADCON TABLE OFFSET
XDEDDSPL DS H (LOGICAL) DATA ADDRESS - DISPLACEMENT
* NOTE THAT REAL ADDRESSES ARE DISTINGUISHED FROM LOGICAL ADDRESSES
* (TABLE OFFSET/DISPLACEMENT PAIRS) BY THE X'80' BIT OF THE HIGH
* ORDER ADDRESS BYTE - ON => REAL, OFF => LOGICAL.
SPACE
XDETGT EQU X'80' High order bit of DYN used as temporary * flag during executable code generation * with following meaning : * ON -> This XDE is a target of a BRC2 XDE * OFF -> This XDE is a NOT a BRC2 target * This bit will ALWAYS be OFF in ALL XDEs * in a final FDB. XDEDYN DS H OFFSET INTO DYNAMIC AREA OF VXDE XDEDATLN DS 0H OPERAND LENGTH (IN BYTES) XDEBROFF DS 0H ** BRANCH OPERATOR XDES ONLY * OFFSET IN XDES OF BRANCH TARGET FROM * BRANCH OPERATOR. ONLY USED WHEN CONTIG. * XDE MODE USED IN EVAL. * ALWAYS USED IN ADSOXDES. XDEBITDP DS C BIT DISPLACEMENT (FOR MB-BIN) XDEBITLN DS C LEN (NBR OF BITS)(FOR MB-BIN)
ORG XDEDATLN
XDEEPWR DS C POWER 10-1 (FOR EDIT)
XDEEPLN DS 0C PICTURE LENGTH (FOR EDIT)
XDEESGN DS C SIGN CHARACTER (FOR EDIT)
XDENODEC DS C NUMBER OF DECIMAL PLACES
XDEDATYP DS C OPERAND DATA TYPE
SPACE
* XDE DATA TYPE EQUATES : XDEDGRP EQU 0 GROUP XDEDEBCD EQU 1 EBCDIC XDEDHBIN EQU 2 BINARY HALFWORD XDEDFBIN EQU 3 BINARY FULLWORD XDEDSPAK EQU 4 PACKED DECIMAL (SIGNED) XDEDUPAK EQU 5 PACKED DECIMAL (UNSIGNED) XDEDSZON EQU 6 ZONED DECIMAL (SIGNED) XDEDUZON EQU 7 ZONED DECIMAL (UNSIGNED) XDEDFLTD EQU 8 DISPLAY FLOATING POINT XDEDSFLT EQU 9 INTERNAL FLOAT (SHORT) XDEDLFLT EQU 10 INTERNAL FLOAT (LONG) XDEDBIT EQU 11 BIT XDEDDBIN EQU 12 BINARY DOUBLEWORD XDEDFC EQU 13 FIGURATIVE CONSTANT XDEDMBIN EQU 14 MULTI-BIT BINARY (PL1 STYLE) XDEDVCHR EQU 15 VARYING CHARACTER XDEDEDIT EQU 16 EDIT INFO XDEDEDP EQU 17 EDIT PICTURE XDEDGEXT EQU 18 EXTERNAL GRAPHICS SO......SI XDEDGINT EQU 19 INTERNAL GRAPHICS
* FOLLOWING EQU SHOULD ALWAYS REFLECT THE HIGHEST DATA TYPE
* !!!!!!!!!!!!!!!! PLEASE NOTE : !!!!!!!!!!!!!!!!!!!!!!!
* !!!! ANY CHANGE TO THE FOLLOWING EQUATE REQUIRES CHGS !!!
* !!!! TO RHDCEVAL AND ADSOXDES.
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
XDEDMXTP EQU XDEDGINT MAX DATA TYPE VALUE
* NOTE THAT RHDCEVAL CURRENTLY ONLY SUPPORTS BIT FIELDS IN LOGICAL
* OPERATIONS.
SPACE
XDEOPTYP DS 0C OPERATION/OPERAND CODE
XDEEPAD DS C PAD CHARACTER (FOR EDIT)
SPACE
* XDE OPERATOR TYPE EQUATES : XDEOOPND EQU 0 OPERAND (NOT OPERATOR) XDEOPNOT EQU 5 LOGICAL "NOT" XDEOPOR EQU 6 LOGICAL "OR" XDEOPAND EQU 7 LOGICAL "AND" XDEOPCNJ EQU 9 CLASS OF LOGICAL CONJUNCTIONS XDEOPEQ EQU 10 "EQ" (RELATIONAL OPERATION) XDEOPNE EQU 11 "NE" XDEOPLT EQU 12 "LT" XDEOPLE EQU 13 "LE" XDEOPGT EQU 14 "GT" XDEOPGE EQU 15 "GE" XDEOMTCH EQU 16 "MATCHES" XDEOPCON EQU 17 "CONTAINS" XDEOPCMP EQU 18 "COMPARE"; 8:EQUAL, 4:<, 2:>
XDEOPREL EQU 19 CLASS OF RELATIONAL OPERATORS XDEOUNMN EQU 20 UNARY "-" XDEOADDN EQU 21 "+" XDEOBNMN EQU 22 BINARY "-" XDEOMULT EQU 23 "*" XDEOPDIV EQU 24 "/" XDEOPDVR EQU 25 "/" WITH REMAINDER XDEOPART EQU 29 CLASS OF ARITHMETIC OPERATORS * NOTE : Test Under Mask used as pseudo-operator to * process "boolean variables", e.g. Map Status tests. * This operator will never appear directly * in an XDE list.
XDEOPTM EQU 35 "TEST UNDER MASK" XDEOASGN EQU 40 "ASSIGNMENT" * NOTE : MULTIPLE ASSIGNMENT NO LONGER SUPPORTED * Operator code available for reuse. *DEOASGM EQU 41 "ASSIGNMENT",MULTIPLE TARGETS XDEOASGR EQU 42 REVERSE ASSIGNMENT XDEOINDX EQU 45 ARRAY "INDEX" * * NOTE : DATE CONVERSIONS NO LONGER SUPPORTED. * THESE CODES ARE AVAILABLE FOR REUSE. * *DEODTJA EQU 50 JULIAN DATE TO GREGORIAN (AMER. *DEODTJG EQU 51 JULIAN DATE TO GREGORIAN (WORLD *DEODTAJ EQU 52 GREGORIAN DATE (AMER. - MMDDYY) *DEODTGJ EQU 53 GREGORIAN DATE (WORLD - DDMMYY) *DEODTES EQU 55 CLASS OF DATE CONVERSIONS * NOTE : CONCATENATE NO LONGER SUPPORTED. * Operator code available for reuse.
*DEOCONC EQU 60 "CONCATENATION" * NOTE : INDA ONLY USED BY DEBUGGER. * Not supported by ADSOXDES.
XDEOINDA EQU 65 INDIRECT ADDRESSING ** Following is a "pseudo-opcode" used only in generation ** of machine code for True/False DXBs. This opcode will NEVER ** appear in an XDE list. It is used only for convenience ** so that generating code for T/F DXBs easily fits into the ** standard methodology of code generation. XDEODXTF EQU 78 True/False DXB XDEOBRC2 EQU 79 BRANCH OPERATOR XDEOBRCH EQU 80 BRANCH OPERATOR * NOTE : IF A NEW OPERATOR CODE IS ADDED WHICH IS * GREATER THAN THE CURRENT VALUE OF XDEOMXTP, * WE MUST CHANGE XDEOMXTP TO THIS NEW VALUE. * IN THIS CASE, WE MUST ALSO ADD ENTRIES TO THE * RHDCEVAL/ADSOXDES OPTABLE. * TO MINIMIZE THE SIZE OF OPTABLE, * IT WOULD BE BEST TO ASSIGN NEW CODES <= * THE CURRENT VALUE OF XDEOMXTP. * RHDCEVAL/ADSOXDES CURRENTLY ASSUME THAT THE ONLY * VALID OPTYP > XDEOMXTP IS XDEOUFUN AND THIS IS * HANDLED AS A SPECIAL CASE.
XDEOMXTP EQU XDEOBRCH MAX OPTYP VALID FOR USE WITH * RHDCEVAL/ADSOXDES OPTABLE. XDEADSLR EQU 253 "OF LR" OPERAND (USED BY ADS/ONLINE) * CODE NOT USED FOR AN OPERATOR XDEOKWD EQU 254 KEYWORD - USED BY LRF. * ALL OTHERS TREAT AS OPERAND XDEOUFUN EQU 255 USER-DEFINED FUNCTION XDEFLAG DS C FLAG BYTE XDEFNVL EQU X'80' FIELD IS NOT VALUED XDEFNED EQU X'40' NO DATA VALIDATION NEEDED * (FOR PACKED/ZONED FIELDS) XDEFNCV EQU X'20' NO CONVERSION NEEDED XDEADDR EQU X'10' XDEDATAD IS OPRND,VS OPRND ADR * XDEADDR USED ONLY BY DEBUGGER
XDEFFCZ EQU X'08' FIGURATIVE CONSTANT ZERO XDEBTF EQU X'08' ** BRANCH OPERATOR XDES ONLY * ON => BRANCH IF PREVIOUS RESULT TRUE * OFF => BRANCH IF PREVIOUS RESULT FALSE XDEBNEG EQU X'04' ** BRANCH2 OPERATOR XDES ONLY * If we branch to last XDE, final * result is value at top of XDE stack. * ON => This value must be negated * OFF => Value is correct as is XDEBEND EQU X'02' ** BRANCH2 OPERATOR XDES ONLY * Special flag for branch on last XDE * in list to say final value must be * negated.
XDEFTRUN EQU X'02' TRUNCATE IF DST DEC < SRC DEC
XDEFRQST EQU X'01' USED BY LOGICAL RECORD PROCESSING
SPACE 1
* FLAG CODES FOR EDIT
XDEEF99 EQU X'01' SIGNIFICANCE ON HI ORDER
XDEEFLT EQU X'04' FLOAT THE SIGN CHARACTER
* Blank on zero flag never utilized by any EVAL callers
*DEEFBZ EQU X'08' BLANK ON ZERO
XDEEFPI EQU X'10' XDEEADR POINTS TO PICTURE
XDEEFJL EQU X'20' LEFT JUSTIFY OUTPUT
XDEEFNE EQU X'40' PICTURE IS ALL X'S
XDEEFNS EQU X'80' DO NOT SCALE SOURCE
*
XDELEN1 EQU *-XDE LENGTH OF STANDARD XDE
SPACE
* FOR USER DEFINED FUNCTIONS, SEVERAL ADDITION FLDS ARE REQUIRED
XDEUPGMN DS CL8 PROGRAM NAME
XDEUNOPS DS XL1 NBR OPERANDS
XDEUFUNC DS XL1 FUNCTION NUMBER
XDEUSTLN DS H REQ'D STORAGE LENGTH
XDEUPGMV DS H PROGRAM VERSION
XDEUFLG1 DS XL1 USER FUNCTION FLAG BYTE
XDEUAGFU EQU X'80' AGGREGATE FUNCTION
DS XL1 UNUSED
XDELEN2 EQU *-XDE LENGTH OF "USER FUNCTION" XDE
SPACE
* EQUATES FOR RESULTS OF COMPARISONS
XDECMPEQ EQU X'08' RESULT OF COMPARE IS =
XDECMPLT EQU X'04' RESULT OF COMPARE IS <
XDECMPGT EQU X'02' RESULT OF COMPARE IS >
SPACE
DSECT of the VXDE (Variable Expression Description Element)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* THE VXDE IS THE DYNAMIC (WRITABLE) PORTION OF THE XDE *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
VXDE DSECT 11:16:59 04/14/87
SPACE
VXDEFLAG DS 0C FLAG BIT FOR NON-VALUED RESULT
VXDEFNVL EQU X'80' NON-VALUED RESULT
VXDESNXT DS F OPERAND STACK NEXT XDE ADDR
VXDEFLG2 DS 0C FLAG BIT FOR ALREADY VALIDATED DECIMAL
VXDEFNED EQU X'80' ALREADY VALIDATED DECIMAL
VXDEXDEA DS F CORRESPONDING XDE ADDRESS
VXDEDADR DS F REAL DATA FIELD ADDRESS
VXDEDLEN EQU *-VXDE
SPACE 1
* FOR USER-DEFINED FUNCTIONS, THE FOLLOWING FLDS
* ARE ALSO REQUIRED.
SPACE 1
VXDEUPGA DS F PROGRAM ADDR
VXDEUWKA DS 0F WORK AREA ADDR
VXDEUWTO DS H LOGICAL ADDR TBL OFFSET
VXDEUWDS DS H LOGICAL ADDR DISPL
VXDEUFLG DS CL1 FLAG FOR USER FUNCTIONS
VXDEUBRK EQU X'80' AGGREGATE FUNCTION BREAK
VXDEUINT EQU X'40' AGGREGATE FUNCTION INIT
VXDEUNIV EQU X'20' NO INITIAL VALUE FOR AGG FUN BREAK
VXDEUBAD EQU X'10' BAD DATA WITHIN BREAK
VXDEUOVR EQU X'08' OVERFLOW WITHIN BREAK
VXDELOD #FLAG X'04' USER PGM WAS #LOADED
DS XL3 UNUSED
VXDEDLN2 EQU *-VXDE LNG OF EXTENSION
SPACE
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* THE XDEIX IS THE DOPE VECTOR USED IN "INDEX" OPERATIONS TO DEFINE *
* THE FORMAT OF THE ARRAY DIMENSIONS BEING ADDRESSED *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
XDEIX DSECT
XDEIXDOA DS F "DEPEND ON" CONTROL FIELD ADDR
XDEIXNDM DS H NUMBER OF DIMENSIONS (IN ARRAY)
XDEIXFLG DS C FLAG BYTE
XDEIXFDF EQU X'80' FULLWORD "DEPENDS ON" CONTROL FIELD
XDEIXFDH EQU X'40' HALFWORD "DEPENDS ON" CONTROL FIELD
DS C UNUSED BYTE
XDEIXRLN EQU *-XDEIX LENGTH OF DDOPE VECTOR ROOT
SPACE
* THE FOLLOWING FIELDS ARE REPEATED ONCE FOR EACH DIMENSION IN
* THE ARRAY - FOR MBB TABLES, OFFSET AND SIZE ARE IN BITS
SPACE
XDEIXOFF DS H FIELD OFFSET WITHIN CONTAINING OCCURRENCE
XDEIXSIZ DS H SIZE OF A DIMENSION OCCURRENCE
XDEIXMAX DS H MAXIMUM SUBSCRIPT VALUE FOR DIMENSION
XDEIXDLN EQU *-XDEIXOFF LENGTH OF ONE DIMENSION DESCRIPTOR
XDEIXLMT EQU 15 Maximum number of dimensions supported by ADS
EJECT
|
Copyright © 2014 CA.
All rights reserved.
|
|