0001.00 H DFTNAME(DMCARY) DATEDIT(*YMD/)
0002.00 F********** 動的配列の生成 ***************************************
0003.00 F*
0004.00 F*****************************************************************
0005.00 D STB S 1 DIM(5000) BASED(ARYPTR)
0006.00 D
0007.00 D HEAPID S 9B 0
0008.00 D SIZE S 9B 0
0009.00 D FREEBK S 12A
0010.00 C*( 最初の配列項目数を 1000 に設定する。 )
0011.00 C Z-ADD 1000 ARYMAX 5 0
0012.00 C*( MALLOC )
0013.00 C EVAL SIZE = %SIZE(STB) * ARYMAX
0014.00 C*----------------------------------------------------+
0015.00 C CALLB 'CEEGTST'
0016.00 C PARM HEAPID
0017.00 C PARM SIZE
0018.00 C PARM ARYPTR
0019.00 C PARM FREEBK
0020.00 C*----------------------------------------------------+
0021.00 C*( 1000 を超える値として 4500 を配列指標に設定する。 )
0022.00 C Z-ADD 4500 SAVLEN
0023.00 C*( 配列の最大数を拡張する。 )
0024.00 C SETOFF 50
0025.00 C SAVLEN DOWGT ARYMAX
0026.00 C ADD 1000 ARYMAX
0027.00 C EVAL SIZE = %SIZE(STB) * ARYMAX
0027.00 C SETON 50
0028.00 C END
0029.00 C*( REALLOC )- メモリーを再割振りする。
0030.00 C *IN50 IFEQ *ON
0031.00 C*----------------------------------------------------+
0032.00 C CALLB 'CEECZST'
0033.00 C PARM ARYPTR
0034.00 C PARM SIZE
0035.00 C PARM FREEBK
0036.00 C*----------------------------------------------------+
0037.00 C END
0038.00 C*( 4500 番目にMOVEする。 )
0039.00 C MOVEA 'TESTDTA' STB(SAVLEN)
0040.00 C*( FREE MEMORY )- メモリーを解放する。
0041.00 C*----------------------------------------------------+
0042.00 C CALLB 'CEEFRST'
0043.00 C PARM ARYPTR
0044.00 C PARM FREEBK
0045.00 C*----------------------------------------------------+
0046.00 C SETON LR
0047.00 C RETURN
|