IBM AS/400 Frozen Dessert Maker User Manual


 
Passing Prototyped Parameters
To pass a parameter by read-only reference, specify the keyword CONST on the
definition specification of the parameter definition in the prototype. Figure 65 on
page 138 shows an example of a prototype definition for the ILE CEE API
CEETSTA (Test for omitted argument).
| *------------------------------------------------------------------
| * CEETSTA (Test for omitted argument) -- ILE CEE API
| * 1. Presence flag Output Binary(4)
| * 2. Argument number Input Binary(4)
| *------------------------------------------------------------------
| D CEETSTA PR EXTPROC('CEETSTA')
| D Present 10I 0
| D ArgNum 10I 0 CONST
| D Feedback 12A OPTIONS(*OMIT)
| ...
| D HaveParm S 10I 0
| ...
| C CALLP CEETSTA(HaveParm : 3 : *OMIT)
| C IF HaveParm = 1
| * do something with third parameter
| C ENDIF
Figure 65. Prototype for ILE CEE API CEETSTA with CONST Parameter
The second parameter passed to CEETSTA can be any numeric field, a literal, a
built-in function, or expression.
Using Operational Descriptors
Sometimes it is necessary to pass a parameter to a procedure even though the
data type is not precisely known to the called procedure, (for example, different
types of strings). In these instances you can use operational descriptors to
provide descriptive information to the called procedure regarding the form of the
parameter. The additional information allows the procedure to properly interpret the
string. You should only use operational descriptors when they are expected by the
called procedure.
Many ILE bindable APIs expect operational descriptors. In the
System API Refer-
ence
, if any parameter is defined as 'by descriptor', then you should pass opera-
tional descriptors to the API. An example of this is the ILE CEE API CEEDATM
(Convert Seconds to Character Timestamp). The second and third parameters
require an operational descriptor.
Note: Currently, the ILE RPG compiler only supports operational descriptors for
character and graphic fields and subfields. Operational descriptors are not
available for data structures, arrays, or tables. In addition, operational
descriptors are not available for data of type numeric, date, time, timestamp,
basing pointer or procedure pointer.
Operational descriptors have no effect on the parameters being passed or in the
way that they are passed. When a procedure is passed operational descriptors
which it does not expect, the operational descriptors are simply ignored.
You can request operational descriptors for both prototyped and non-prototyped
parameters. For prototyped parameters, you specify the keyword OPDESC on the
prototype definition. For non-prototyped parameters, you specify (D) as the opera-
tion code extender of the CALLB operation. In either case, operational descriptors
138 ILE RPG for AS/400 Programmer's Guide