} ◎I言語技術情報7(配列の扱い方)


配列の扱い方
I言語には配列の定義はありません、ただし、配列的な使い方ができますので、その部分を説明します。
配列的な使い方はデータ名+番号で実現します、このような名前をうまく使う仕掛けがあります。
(1)REPEAT=の繰り返しの利用
REPEAT=2
DATA=A##{5}
REPEAT=
REPEAT=内では##が1から1づつ増えた値で設定されますので、この場合データ名がA1,A2となります。
尚#-は##より1少ない数、#+は##より1多い数となります。
(2)REPEAT0=またはREPEAT2=の繰り返しの利用
REPEAT0=2
DATA=A$${5}
REPEAT0=
または
REPEAT2=2
DATA=A$${5}
REPEAT2=
REPEAT0=およびPEPEAT2内では$$が1から1づつ増えた値で設定されますので、この場合もデータ名がA1,A2となります。
尚$-は$$より1少ない数、$+は$$より1多い数となります。
(3)2次元配列の対応
REPEAT=2
REPEAT2=2
DATA=A##_$${5}
REPEAT=
または
REPEAT0=2
REPEAT=2
DATA=A$$_##{5}
REPEAT0=
REPEAT=とREPEAT2=の組み合わせかREPEAT0=とREPEAT=の組み合わせで対応できます。どちらもA1_1,A1_2,A2_1,A2_2のデータ名となります。
(4)_COUNTER変数の使用
=SET{_COUNTER=1};
=LOOP:SET{B$$=A$$};
=IF{_COUNTER>=2}JUMP{FIN};
=COMPUTE{_COUNTER+=1};
=BACK{LOOP};
=FIN:
REPEAT=等の繰り返し数はプログラムの読み出し時点で決まっていなければなりません。
これに対し、_COUNTERはプログラム実行時にプログラムの$$,$-,$+を_COUNTERの値を元に置き換えます。
この場合A1からB1へ、A2からB2へデータが転送されます。
(5)SPLIT_CHAR{作業名}{文字列}{区切り文字}..;の使用
文字列を区切り文字で区切って作業名+番号に番号を1から区切られた数分転送します。
(6)SPLIT_FORM{作業名}[文字列}{表示文字長}..;の使用
文字列を表示文字長で区切って作業名+番号に番号を1から区切られた数分転送します。
(7)SQL_REPEAT{データ名,..}{SQL文}..;..の使用
SQLの実行結果をデータ名+番号に番号を1からデータの件数分転送します。
All Rights Reserved, Copyright (C) 2012-2012 Nobumichi Harasawa.