IBM AS/400 manual Managing Dynamically-Allocated Storage, Part, 4 of, DYNARRAY Subprocedures, 5 of

Models: AS/400

1 489
Download 489 pages 47.95 Kb
Page 149
Image 149
4 of 5).

Managing Dynamically-Allocated Storage

*

*Calculate the new number of elements. If the index is

*greater than the current number of elements in the array

*plus the new allocation, then allocate up to the index,

*otherwise, add a new allocation amount onto the array.

C

IF

Index

> NumElems + SUBSALLOC

C

Z-ADD

Index

 

NumElems

C

ELSE

 

 

 

C

ADD

SUBSALLOC

NumElems

C

ENDIF

 

 

 

*

*Calculate the new size of the array

C

EVAL

Size = NumElems * %SIZE(DynArr)

*

*Reallocate the storage. The new storage has the same value

*as the old storage.

 

*

 

 

C

REALLOC

Size

DynArr@

 

*

 

 

*Initialize the new elements for the array.

C

1

ADD

OldElems

I

 

C

I

DO

NumElems

I

5 0

C

 

CLEAR

 

DynArr(I)

 

C

 

ENDDO

 

 

 

C

 

ENDSR

 

 

 

P DYNA_SET

E

 

 

 

 

 

 

 

 

Figure 56

(Part

4 of 5).

DYNARRAY Subprocedures

 

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

*DYNA_GET: Return an array element.

*Function: Return the current value of the array element i￿f

*the element is within the size of the array, or

*the default value otherwise. *=================================================================

P DYNA_GET

B

 

EXPORT

 

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

 

 

 

* Input parameters for this procedure.

 

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

 

 

D DYNA_GET

PI

 

LIKE(DYNA_TYPE)

D

Index

 

5I 0

VALUE

 

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

 

 

 

* Local variables.

 

 

 

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

 

 

D Element

S

 

LIKE(DYNA_TYPE) INZ

 

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

 

 

*If the element requested is within the current size of th￿e

*array then return the element's current value. Otherwise

*the default (initialization) value can be used.

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

 

 

C

Index

IFLE

NumElems

C

 

EVAL

Element = DynArr(Index)

C

 

ENDIF

 

C

 

RETURN

Element

P DYNA_GET

E

 

 

 

 

 

Figure 56

(Part

5 of 5).

DYNARRAY Subprocedures

Chapter 9. Running a Program125

Page 149
Image 149
IBM AS/400 manual Managing Dynamically-Allocated Storage, Part, 4 of, DYNARRAY Subprocedures, 5 of