H DFTNAME(TSTARY) DATEDIT(*YMD/) COPYRIGHT('(C) QTR') H*COPYRIGHT('(C) OカカケウオQマアホホネナ Cナ,.Lホエ Jアニアト 1998-') F********** 動的配列の生成 *************************************** F* F***************************************************************** D STB S 1A DIM(5000) BASED(ARYPTR) D D HEAPID S 9B 0 D SIZE S 9B 0 D FREEBK S 12A C*( 最初の配列項目数を 1000 に設定する。 ) C Z-ADD 1000 ARYMAX 5 0 C*( MALLOC ) C EVAL SIZE = %SIZE(STB) * ARYMAX C EVAL ARYPTR = %ADDR(STB) C*----------------------------------------------------+ C CALLB 'CEEGTST' C PARM HEAPID | C PARM SIZE | C PARM ARYPTR | C PARM FREEBK | C*----------------------------------------------------+ C 1 DO ARYMAX N 4 0 C CLEAR STB(N) C END C MOVEA *BLANKS STB C*( 1000 を超える値として 4500 を配列指標に設定する。 ) C Z-ADD 4500 SAVLEN 4 0 VTMLEN->SD C*( 配列の最大数を拡張する。 ) C SETOFF 50 C SAVLEN DOWGT ARYMAX C ADD 1000 ARYMAX C EVAL SIZE = %SIZE(STB) * ARYMAX C SETON 50 C END C*( REALLOC )- メモリーを再割振りする。 C *IN50 IFEQ *ON C*----------------------------------------------------+ C CALLB 'CEECZST' C PARM ARYPTR | C PARM SIZE | C PARM FREEBK | C*----------------------------------------------------+ C END C*( 4500 番目にMOVEする。 ) C* MOVEA *BLANKS STB C MOVEA 'TESTDTA' STB(SAVLEN) C*( FREE MEMORY )- メモリーを解放する。 C*----------------------------------------------------+ C CALLB 'CEEFRST' C PARM ARYPTR | C PARM FREEBK | C*----------------------------------------------------+ C SETON LR C RETURN