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, Effect

AS/400 specifications

The IBM AS/400, now known as the IBM iSeries, is a midrange computer system that has been a cornerstone of enterprise computing since its introduction in 1988. Designed to provide a robust platform for business applications, the AS/400 is celebrated for its reliability, scalability, and integrated database capabilities.

One of the key features of the AS/400 is its Integrated Operating Environment, which blends hardware and software resources seamlessly. This integration allows businesses to execute diverse workloads, ranging from traditional applications to modern web-based services, all on a single platform. The operating system, OS/400 (now IBM i), offers a rich set of APIs and tools for developers, simplifying application development and management.

Another standout characteristic of the AS/400 is its built-in database, DB2 for i. This powerful relational database management system allows for efficient data handling and provides advanced features such as support for SQL, XML, and JSON, making it easier for businesses to manage their data and integrate it with other systems. The database's tight integration with the operating system enables high performance and security.

In terms of scalability, the AS/400 can accommodate small businesses as well as large enterprises, with the ability to support hundreds of users simultaneously. Its architecture allows for easy upgrades in hardware, meaning that organizations can scale their systems without replacing the entire infrastructure.

Security is another critical attribute of the AS/400. With a sophisticated security model, it offers built-in user authentication, access control, encryption, and auditing capabilities to protect data and applications from unauthorized access.

The AS/400 also supports multiple programming languages, including RPG, COBOL, Java, and PHP, giving organizations the flexibility to choose the development tools that best fit their needs. This diversity helps maintain legacy applications while also developing new ones that leverage modern technologies.

Moreover, the platform supports both traditional green-screen interfaces and modern graphical user interfaces, allowing organizations to transition smoothly into contemporary user experience paradigms.

Overall, the IBM AS/400 stands out as a resilient, flexible, and secure computing platform that enables organizations to effectively manage their business operations, streamline processes, and adapt to changing market demands. Its unique combination of integrated features and capabilities ensures that it remains relevant in today's fast-paced technology landscape.