◎I言語技術情報3(変数の変換)


変数の変換。
変数の変換に関しては、I言語特有の動きをしますので、整理しておきます。
(1)変数の変換は大きくは3回行われます。
①最初はプログラムの呼び出し時点です、ここで決まっていないと困るものは変数変換をして処理をします。
尚、プログラムの呼び出しはPROGRAM=の単位で行い、そのプログラムを使用する時点で変換されます。 したがって、前のプログラムで設定された変数は$変数を使って次のプログラムで使用出来ます。
例:1
100 PROGRAM=NOT
200 BEGIN
300 =SET{W0REPEAT=5};
400 PROGRAM=NOT
500 REPEAT=$W0REPEAT
600 FORM1= W0REPEWT=?$W0REPEAT?
700 REPEAT=
800 FORM1=@
900 DATA=A{1}
"500 REPEAT=$W0REPEAT"及び"600 FORM1= W0REPEWT=?$W0REPEAT?"は"400 PROGRAM=NOT”が有るので2番目のプログラムです。 1番目のプログラムの"300 =SET{W0REPEAT=5};"でW0REPEATが5に設定されています。2番目の呼び出し時に5となっているので5回繰り返しとなります。以下が結果の画面です。

②2回目はプログラムの実行時です、ここで、変換する事でプログラムの実行に合わせて変数が最適な値で実行されます。
例:2
100 PROGRAM=NOT
200 BEGIN
300 =SET{W.CHECK1='X'};
400 DATA=A{1}
500 CHECK1=?W.CHECK1?
"500 CHECK1=?W.CHECK1?"は実行時に変換されます。"300 =SET{W.CHECK1='X'};”で開始後にW.CHECK1は'X'となっています。 したがって、500 CHECK1=?W.CHECK1?も'X'となります。以下が結果の画面です。

③3回目は=で始まる命令の場合です、2回目の変換は命令の呼び出し時に{}を単位に実行され、更に命令実行時に変換されます。
例:3
100 PROGRAM=NOT
200 BEGIN
300 =SET{W_NAME='A'};
400 =SET{W_NAME='B',?W_NAME?='?W_NAME?'+W_NAME};
500 DATA=A{3}
"300 =SET{W_NAME='A'};"でW_NAMEが'A'となり、400での命令の呼び出し時点で?W_NAME?が'A'に変換され
"400 =SET{W_NAME='B',A='A'+W_NAME};"となります。実際のSET命令実行時にW_NAMEが'B'に設定されるので、結果Aが'AB'となります。以下が結果の画面です。

All Rights Reserved, Copyright (C) 2009-2010 Nobumichi Harasawa.