IBM AS/400 manual Order of Evaluation, Interlanguage Calls, Passing Prototyped Parameters, effect

Models: AS/400

1 489
Download 489 pages 47.95 Kb
Page 170
Image 170
Order of Evaluation

Passing Prototyped Parameters

Figure 71

on page 146

shows the prototype for QCMDEXC, where

the

first

eter is

defined

with

OPTIONS(*VARSIZE)

meaning that

you can

pass

paramet

of

different lengths for the first

parameter. Note that

OPTIONS

*VARSI

be

specified for

a

character field, a graphic

field,

or

an

array.

*-------------------------------------------------------------

*This prototype for QCMDEXC defines three parameters. The

*first parameter can be passed character fields of

*different lengths, since it is defined with *VARSIZE.

 

*-------------------------------------------------------------

D qcmdexc

PR

 

EXTPGM('QCMDEXC')

D

cmd

 

3000A

OPTIONS(*VARSIZE) CONST

D

cmdlen

 

15P

5 CONST

D

 

 

3A

CONST OPTIONS(*NOPASS)

Figure 71. Prototype for System API QCMDEXC with *VARSIZE Parameter

Order of Evaluation

There

is no guaranteed order for

evaluation

of

parameters

on

a protot

This

fact

may

be

important

when

using

parameters

that

cause

side

eff

results

may

not be what you would expect.

 

 

 

 

 

 

 

 

 

 

A side

effect

occurs if the processing of the

parameter

changes:

 

 

¹

The

value of a reference parameter

 

 

 

 

 

 

 

 

 

 

 

 

¹

The

value of a global variable

 

 

 

 

 

 

 

 

 

 

 

 

 

 

¹

An

 

external object, such as a file

or

data

area

 

 

 

 

 

 

 

If

 

a

side

effect occurs,

then,

if

the

parameter

is

used

elsewher

list,

 

then

the value used for the

parameter

in

one

part

of

the

list

same

as

the

value

used

in

 

another

part.

For

example,

consider

this

ca

 

 

 

 

 

CALLP

 

procA (fld : procB(fld) : fld)

 

 

 

 

 

 

 

 

 

 

Assume

that

procA has all value parameters, and

procB

has

a

reference

eter.

Assume

alsofldthatstarts off with

the

value

3,

and fldthato procB

modif

be

 

5,

and

returns 10. Depending on the order

in

which

the

parameters

ated,

procA

will

receive

either

3,

10,

and

5

or

possibly,

3,

10,

 

and

10,

 

and

3;

or

even

5,

10,

and 5.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

In

short,

it

 

is

important

to

be

aware

of the

possibility

of

side

e

particular,

if

you

are

providing

an

application

for third-party use, wh

may

 

not

know

the

details

of

 

some

of the

procedures,

it

is

important

values

of

the

passed

parameters

are

the

expected

ones.

 

 

 

 

 

Interlanguage Calls

When passing or receiving data from a

program or procedure written in

language, it is important to know whether the other language supports

th

parameter passing methods and the same

data types as ILE RPG. Table

page 147

shows

the different

parameter

passing

methods allowed by

ILE

and,

where applicable,

how

they would

be coded in the other the I

The

table

also

includes

the

OPM

RPG/400

compiler

for comparison.

 

146 ILE RPG for AS/400 Programmer's Guide

Page 170
Image 170
IBM AS/400 manual Order of Evaluation, Interlanguage Calls, Passing Prototyped Parameters, effect