*=================================================================*

 

* NOLOOP:

Show how to avoid

recursion in a *PSSR subroutine.

 

*

 

*=================================================================*

 

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

 

 

 

 

 

*

 

* Array that will be used to

cause an error

 

 

*

 

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

 

 

 

 

 

*

D Arr1

 

S

10A

DIM(5)

 

 

 

 

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

 

 

 

 

 

*

 

* Generate an array out of bounds error to pass control to *P￿SSR. *

 

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

 

 

 

 

 

*

C

 

 

Z-ADD

-1

 

Neg1

5 0

 

C

 

 

MOVE

Arr1(Neg1)

Arr1(Neg1)

 

 

C

 

 

MOVE

*ON

 

*INLR

 

 

 

*=================================================================*

 

* *PSSR: Error Subroutine for the procedure. We use the

 

*

 

*

variable InPssr to detect recursion in the PSSR.

 

*

 

*

If we detect recursion, then we *CANCL the procedure.

*

 

*=================================================================*

C

*PSSR

BEGSR

 

 

 

 

 

C

 

 

IF

InPssr = 1

 

 

 

C

 

 

MOVE

'*CANCL'

 

ReturnPt

6

 

C

 

 

Z-ADD

0

 

InPssr

1 0

 

C

 

 

ELSE

 

 

 

 

 

C

 

 

Z-ADD

1

 

InPssr

 

 

 

*

 

 

 

 

 

 

*

 

*

 

We now generate another error in the PSSR to see

 

*

 

*

 

how the subroutine

cancels the procedure.

 

*

 

*

 

 

 

 

 

 

*

C

 

 

MOVE

Arr1(Neg1)

Arr1(Neg1)

 

 

 

*

 

 

 

 

 

 

*

 

*

 

Note that the next

two operations will not be

 

*

 

*

 

processed if Neg1 is still negative.

 

*

 

*

 

 

 

 

 

 

*

C

 

 

MOVE

'*GETIN'

 

ReturnPt

 

 

C

 

 

Z-ADD

0

 

InPssr

 

 

C

 

 

ENDIF

 

 

 

 

 

C

 

 

ENDSR

ReturnPt

 

 

 

 

 

 

 

 

 

Figure

115.

Avoiding a Loop in an Error Subroutine

 

 

To create the program and start debugging it, using the source in Fig

CRTBNDRPG PGM(MYLIB/NOLOOP) DBGVIEW(*SOURCE)

STRDBG PGM(MYLIB/NOLOOP)

Set a break point on the BEGSR line of the *PSSR subroutine so you can through the *PSSR subroutine.

When you call the program, the following occurs:

 

1. An

exception

occurs

when the

program

tries

to do a MOVE operation

 

array

using

a

negative

index.

Control is passed to the *PSSR.

 

 

2. Since

this

 

is

the

first time through the *PSSR, the variable In_Pss

 

already

set

on.

To

prevent

a

future

loop,

the variable In_Pssr is

 

3. Processing

continues

within

the

*PSSR

with

the

MOVE

after the ELSE.

Aga

 

an

exception

occurs

and

so

processing

of the *PSSR

begins anew.

 

 

4. This

time

through,

the variable In_Pssr

is

already set to 1. Sinc

 

that

the

 

subroutine

is

in

a

loop,

the

procedure

is canceled by

s

 

ReturnPt

field

to

*CANCL.

 

 

 

 

 

 

 

 

 

236

ILE RPG for AS/400 Programmer's

Guide

 

 

 

 

 

 

 

 

 

 

 

 

Page 260
Image 260
IBM AS/400 manual After the Else, Move Inlr, Else ADD

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.