#変数をどのように扱うか?
##課題:具体的な変数名のままだと汎用的なチェックインタープリタにならない
例えば、次のようなIF文によるチェック条件があったとします。「従業員レコード.住所.郵便番号」の部分が変数名です。
字句解析と構文解析は、チェックインタープリタの対象外にしたので、この様な変数をチェックインタープリタにどんな形で与えて、どのように扱えばよいか?
例:
IF 従業員レコード.住所.郵便番号 = "100-****"
THEN
メッセージ出力 "住所は東京都千代田区"
END-IF
従業員レコード.住所.郵便番号は、従業員レコードの6桁目から8桁に相当する。
しかし、チェックインタープリタは「従業員ファイル」だけでなく、どんなファイルでも扱えるように、もっと汎用的にしたい。
##従業員レコードを抽象化してみる
従業員レコードを抽象化して考えると、単なる入力レコード(一本の紐、String)で、この「入力レコードの6桁目から8桁」というのが、チェックインタープリタで扱う変数となる。
チェックインタープリタの外部仕様として、入力は3つで出力は1つと定義する(厳密には入力は4つで、その1つはチェック条件ファイルなので、カウントには入れない)。
抽象化後:
IF IN1.6-8 = "100-****"
THEN
PUT OUT.1 "住所は東京都千代田区"
END-IF