EFUNMOD
Defines a model XDE module and the model XDE tables within the module.
idmscu19
Defines a model XDE module and the model XDE tables within the module.
Each model XDE table describes one function. During process compilation of a built-in function, the dialog compiler uses the appropriate model XDE table to convert the built-in function into a series of XDEs, which represents the function at runtime.
This article describes the following information:
2
2
Syntax
►►─── #EFUNMOD TYPE = ──┬─ INITIAL, NAME =model-xde-module-name────┬────────►◄ │ │ ├─ HDR,hdr-options──────────────────────────┤ │ │ ├─ XDE, DECS =decimal-options──────────────┤ │ │ ├─ DATA, CONV = (conv-options) ────────────┤ │ │ └─ FINAL ────────────────────────────────────┘Expansion of hdr-options►►─── FUNCNAM =function-name── , ───────────────────────────────────────────► ►─── PROGRAM =processing-program-name── , ─────────────────────────────────► ►─── FUNCNBR =function-number── , ─────────────────────────────────────────► ►─── WORKLNG =work-area-length── , ────────────────────────────────────────► ►─── FIXOPND =fixed-operands-count── , ────────────────────────────────────► ►─┬─────────────────────────────┬────────────────────────────────────────────► └─ VAROPND = ─┬─ YES ──┬── , ─┘ └─ NO ◄ ─┘ ►─── RESLNG = ──┬─ CALC────────────┬── , ────────────────────────────────────► ├─ OPND ───────────┤ └─result-length──┘ ►─── RESDATP = ──┬─ OPND ───────┬── , ───────────────────────────────────────► └─data-type──┘ ►─── RESDEC = ───┬─ OPND ──────────────────┬─────────────────────────────────►◄ └─ result-decimal-places ─┘Expansion of decimal-options►►─┬─ SOURCE ─────────┬─ , ────────┬────────────────────────┬─────────────────► └─ decimal-places ─┘ └─ OPT = ─┬─ YES ──┬─ , ─┘ └─ NO ◄ ─┘ ►─┬──────────────────────────┬────┬───────────────────────────┬──────────────► └─ ROUND = ─┬─ YES ◄ ─┬ , ─┘ └─ RESLCAL = ─┬─ ADD ──┬ , ─┘ └─ NO ────┘ └─ SUBT ─┘ ►─┬────────────────────────┬─────────────────────────────────────────────────►◄ └─ RESDEFL = ─┬─ YES ──┬─┘ └─ NO ◄ ─┘Expansion of source-specification►►───source-data-type── , ─┬─ SOURCE ───────────┬─┬──────────────────┬──────►◄ └─target-data-type─┘ ├─ ,SOURCE ────────┤ └─ ,target-length─┘Expansion of hdr-optionsExpansion of decimal-optionsExpansion of source-specification
Parameters
- INITIAL, NAME =model-xde-module-nameSpecifies the 1- to 8-character model XDE module name.The TYPE=INITIAL macro is coded first and only once in the assembler program.
- HDR,hdr-optionsDefines the beginning of a model XDE table and specifies function XDE information.One TYPE=HDR macro is coded for each model XDE table.See expansion ofhdr-optionsbelow.
- XDE, DECS =decimal-optionsSpecifies operand XDE information that describes a target parameter.The TYPE=XDE macro describes a function parameter. One TYPE=XDE macro is coded for each parameter in the order that the parameter is to appear in the parameter list.DECS =decimal-optionsis used to specify the number of decimal places in the target parameter being described.See the expansion ofdecimal-optionsbelow.
- DATA, CONV = (conv-options)Specifies the data type and length of the target parameter (that is, the parameter as it is stored in the IRA for use by the processing program), based on the data type of the source parameter (that is, the parameter as it is coded in the parameter list).See expansion ofconv-optionsbelow.At least one TYPE=DATA macro must be coded following a TYPE=XDE macro. If two or more are specified, the dialog compiler uses the TYPE=DATA macro whosesource-data-typespecification matches the data type of the source parameter. If nosource-data-typespecification matches, the last TYPE=DATA macro is used.During process compilation, any combination of source and target parameter data types is accepted. At runtime, the runtime system attempts to make any required data type conversions; if it cannot, the dialog aborts.
- FINALDefines the end of the model XDE module.
Expansion of hdr-options
- FUNCNAM=function-nameUser-defined parameter specifying the 1- to 8-character real (generic) function name.The real function name associates a master function table entry with the model XDE table.
- PROGRAM=processing-program-nameUser-defined parameters specifying the 1- to 8-character name of the processing program module that contains the processing program for the function.
- FUNCNBR=function-numberUser-supplied numeric literal specifying a number from 0 to 255 that uniquely identifies the associated processing program within the processing program module.
- WORKLNG=work-area-lengthUser-supplied numeric literal specifying the number of bytes of work area required by the processing program module for the function.The WORKLNG specification should not include work space required by the runtime system, which is automatically added by the macro.Work-area-lengthmust be at least 80.
- FIXOPND=fixed-operands-countUser-supplied numeric literal specifying the number of fixed parameters for the function.A fixed parameter is a parameter that can be specified only once in a parameter list. A function can have from 0 to 50 fixed parameters.
- VAROPND=YES/NOSpecifies whether one parameter in the parameter list is variable.A variable parameter can be specified repeatedly in a parameter list. (An example of a variable parameter is'string'orstring-variablein the concatenate function.)A function can have only one variable parameter and it must follow all fixed parameters.The default VAROPND specification is NO.
- RESLNG=Clause introducing the length, in bytes, of the function's result field,
- CALCSpecifies that the result field length is calculated from the lengths of the function parameters, based on the RESLNG specification of each parameter's TYPE=XDE macro.If CALC is specified, the result field length is calculated as the sum of the lengths of the function parameters whose RESLNG specification is ADD, minus the sum of the lengths of the function parameters whose RESLNG specification is SUBT. Parameters without a RESLNG specification are not included in the calculation.
- OPNDSpecifies that the result length is equal to the length of the function parameter whose RESDEFL specification is YES.
- result-lengthSpecifies a result length, in bytes, from 1 to 32767.
- RESDATP=Clause introducing the data type of the function's result field of the function.
- OPNDSpecifies that the result data type is the same as the data type of the function parameter whose RESDEFL specification is YES.
- data-typeUser-defined parameter specifying the result field data type.Data-typeis one of the three-character data type abbreviations shown in the table underUsagebelow.
- RESDEC=Clause introducing the number of decimal places in the function's result field.
- OPNDSpecifies that the number of decimal places is equal to the number of decimal places in the function parameter whose RESDEFL specification is YES.
- result-decimal-placesSpecifies the number of result decimal places, from 0 to 32.
Expansion of decimal-options
- SOURCESpecifies that the number of decimal places equals the number of decimal places in the source parameter.
- decimal-placesSpecifies the number of decimal places, from 0 to 32.
- OPT=YES/NOSpecifies whether the parameter is optional and can be omitted from the coded parameter list.NO is the default when neither YES or NO is specified.
- ROUND=YES/NOSpecifies whether rounding or truncation is used when converting from the source parameter to the target parameter. NO indicates truncation.YES is the default when neither YES or NO is specified.
- RESLCAL=Clause introducing the action to be taken to the parameters length in the calculation of the length of the result field.
- ADDSpecifies that the parameter's length is added in the calculation of the length of the result field.
- SUBTSpecifies that the parameter's length is subtracted in the calculation of the length of the result field.The RESLCAL specification should be included only if the RESLNG specification of the preceding TYPE=HDR macro is CALC. If the RESLCAL specification is omitted, the parameter's length is not considered in the calculation of the length of the result field.
- RESDEFL=YES/NOSpecifies whether the parameter is used to determine result field characteristics that are specified in the associated TYPE=HDR macro as OPND.Only one TYPE=XDE macro for a function can specify RESDEFL=YES.The default RESDEFL specification is NO.
Expansion of conv-options
- source-data-typeUser-defined parameters specifying the three-character abbreviation of the data type of the source parameter; these abbreviations are listed in the table under Usage below.During process compilation, if the data type of the source parameter issource-data-type, then the target parameter is assigned a data type of SOURCE/target-data-typeand a length of SOURCE/target-length. The target parameter's data type and length are stored in the parameter's operand XDE.
- SOURCESpecifies that the data type of the target parameter is the same as the data type of the source parameter.
- target-data-typeUser-defined parameters specifying the three-character abbreviation of the data type of the target parameter; these abbreviations are listed in the table under Usage below.
- SOURCESpecifies that the length of the target parameters is the same as the length of the source parameter.
- target-lengthSpecifies the length of the target parameter in bytes.If neither is specified, a length is generated based on the data type of the target parameter, if possible.
Usage
Considerations
- The source assembler program must begin with one TYPE=INITIAL macro and end with one TYPE=FINAL macro.
- One TYPE=HDR macro is coded for each function that is described in the module.
- One TYPE=XDE macro is coded for each parameter of each function; the macro applies to the function described by the preceding TYPE=HDR macro and is coded in the order that the parameter is to appear in the parameter list.
- One or more TYPE=DATA macros are coded for each data type conversion specification for each parameter; the macro applies to the parameter described by the preceding TYPE=XDE macro.
Data Type Abbreviations
Data type | Abbreviation |
Display floating point | DFL |
Doubleword binary | DWB |
EBCDIC | EBD |
Fullword binary | FWB |
Group | GRP |
Halfword binary | HWB |
Long floating point | LFL |
Multibit binary | MBB |
Short floating point | SFL |
Signed packed decimal | SPK |
Signed zoned decimal | SZN |
Unsigned packed decimal | UPK |
Unsigned zoned decimal | UZN |
Varying character | VCH |
Only target parameters and the result field can have the varying character data type. A varying character field consists of a halfword binary field that specifies the length of the varying character string, followed by a fixed field that contains the string itself.
Model XDE Modules
The model XDE modules for the CA ADS supplied built-in functions are defined by the source assembler programs called RHDCEV51, RHDCEV52, and RHDCEV53. Segments of RHDCEV51 are shown below. An installation should not change these modules, but can reference them for creating user-defined built-in functions.
Segments of Source Assembler Program RHDCEV51
RHDCEV51 TITLE 'EVAL - BUILT-IN STRING FUNCTIONS - MODEL XDE TBL' * RHDCEV51 EP=RHDCEV51 06/29/90 14:05:40 SPACE 3 RHDCEV51 AMODE ANY RHDCEV51 RMODE 24 #EFUNMOD TYPE=INITIAL,NAME=RHDCEV51 EJECT ********************************************************************** * FUNCTION = LENGTH * ********************************************************************** SPACE 3 LENGTH #EFUNMOD TYPE=HDR, X FUNCNAM=LENGTH, X FUNCNBR=0, X PROGRAM=RHDCEV01, X WORKLNG=148, X FIXOPND=1, X RESLNG=2, X RESDATP=HWB, X RESDEC=0 SPACE 1 #EFUNMOD TYPE=XDE,DECS=0,OPT=NO SPACE 1 #EFUNMOD TYPE=DATA,CONV=(EBD,VCH,SOURCE) EJECT ********************************************************************** * FUNCTION = SUBSTRING * ********************************************************************** SPACE 3 SUBSTRNG #EFUNMOD TYPE=HDR, X FUNCNAM=SUBSTRNG, X FUNCNBR=1, X PROGRAM=RHDCEV01, X WORKLNG=148, X FIXOPND=3, X RESLNG=CALC, X RESDATP=VCH, X RESDEC=0 SPACE 1 #EFUNMOD TYPE=XDE,DECS=0,OPT=NO,RESLCAL=ADD SPACE 1 #EFUNMOD TYPE=DATA,CONV=(EBD,VCH,SOURCE) SPACE 1 #EFUNMOD TYPE=XDE,DECS=0,OPT=NO SPACE 1 #EFUNMOD TYPE=DATA,CONV=(EBD,HWB,2) SPACE 1 #EFUNMOD TYPE=XDE,DECS=0,OPT=YES SPACE 1 #EFUNMOD TYPE=DATA,CONV=(EBD,HWB,2) EJECT ... #EFUNMOD TYPE=FINAL SPACE 2 END RHDCEV51 *CRM84199*