AIはまた「古典的であるが」と評して%SSTによる切り出す方法も
紹介してくれた。
この方法は最も私たちが思いつく方法であって
あえてポインタを使う人は少ないと思う。
PGM
DCL VAR(&ARRAY) TYPE(*CHAR) LEN(500) /* 50バイト × 10要素 */
DCL VAR(&ITEM) TYPE(*CHAR) LEN(50)
DCL VAR(&IDX) TYPE(*INT) LEN(4)
DCL VAR(&POS) TYPE(*INT) LEN(4)
DOFOR VAR(&IDX) FROM(1) TO(10)
/* 開始位置の計算: (インデックス - 1) * 50 + 1 */
CHGVAR VAR(&POS) VALUE((&IDX - 1) * 50 + 1)
/* 配列から特定の要素を取り出す */
CHGVAR VAR(&ITEM) VALUE(%SST(&ARRAY &POS 50))
ENDDO
ENDPGM
これもAIが示した原文そのままである。
まあこのほうがステップ数も少ないし読み手にとっても
わかりやすいだろう。
プログラムは書いた自分の満足度より後任の人が読んで
わかりやすい書き方が望まれるのは言うまでもない。
