◎I言語技術情報6(特別なシステム変数)


特別なシステム変数
本来は新たな命令を作って対応するような命令を、I言語では文法を単純化するために命令の種類を少なくして 、特別なシステム変数で対応しているので、その部分を説明します。
_ARG---SET{_ARG=で引用符付きコマンドライン用変数に変換。
コマンドラインでは特殊記号で使えない物がありますが、これを変換する事でコマンドラインから読み込めるように出来ます。
I言語ではコマンドラインから変数名=パラメータ(#付き変数)で受取った物はこの変換がされている物として復元を実行します。
_CODE--先頭が2バイト文字は2,半角カナは3,以外は1を返す。
先頭文字の大まかな種類を返します。(SET{_CODE='あ'};は2を、SET{_CODE='ア'};は3をSET{_CODE='A'};を返します)
_CLICK--CLICK=で文字をSETするとキーボード入力となります。
CLICK=でのみ使用出きる変数で、キーボードから入力された物として実行されます。
I言語ではメニューの選択でメニューを直接クリックした場合の操作に利用しています。
_CODE39--SET{_CODE39=..}でCODE39のチェックディジット設定。
CODE39のバーコードのチェックディジットを返します。
_COUNTER--セクション実行時$$,$-,$+を置き換えます,初期は1。
この内容を変える事でプログラム内の"$$","$-","$+"を_COUNTERの値($-は_COUNTER-1、$+は_COUNTER+1)で置き換えるので繰り返し処理で有効に使えます。
_DATETIME--SET{_DATETIME=..}で17桁の時間を23文字で表現。
例えば'20110102030405006'は'2011-01-02 03:04:05.006'となります。
_DATETIME_GOOD-SET{_で近くの正しい日付時間を返す。
例えば'88888888888888888'は'88881231235858888'となります。
_DATE_GOOD--SET{_DATE_GOOD=..}で近くの正しい日付を返す。
例えば'77777777'は'77771231'となります。
_DIGIT11--SET{_DIGIT11=..でモジュラス11デジット1文字設定。
モジュラス11デジットはキー入力で人間工学的にミスの可能性の高い、入力の順番を入れ替えてしまう問題を解決する為の物です。
伝票番号等、入力ミスを少なくしたい物には、このデジットを付加して対応します。
_EDIT--SET{_EDIT=..}で右辺データの中身"?データ名?"を置換。
?変数?をI言語での変換では無く、プログラムで直接変換した場合に利用します。
_ESC--1以外をセットするとESCを有効としない。(終了しない)
Escで終わらせたくない場合に使用しますが、画面を閉じる事は出来るので、絶対に終わらせない事までは出来ません。
_FIND_CHAR--SET{_FIND_CHAR=データ+捜す文字群};(VER7.31)
入力文字で禁止したい文字を捜す場合等に有効に利用できます。
_FIND_CHAR_NOTでは不一致文字を捜します、また、_FIND_CHAR_LASTは最後から前の方向に捜します。
_FIND_STRING--SET{_...=データ+捜す文字列};(VER7.31)
_FIND_CHARとは異なり文字ではなく文字列が一致する物を捜します。
_FIND_STRING_NOTでは不一致文字列を捜します、また、_FIND_STRING_LASTは最後から前の方向に捜します。
_FULL_SIZE--SET{_FULL_SIZE=..で半角文字を全角に変換します。
半角文字を全角文字に全て変換したい場合に使用します。
_JAN--SET{_JAN=..でJANのチェックディジットを計算。
バーコードのJANコードのチェックディジットを計算します。
_LOWER--SET{_LOWER=..で英小文字に変換します。
英大文字を英小文字に変換します。
_NEXT--SET{_NEXT=..}で次の文字を設定。
'Z'は'A'に'9'は'0'に成り、以外は1個先の文字となります。
_TRACE--0を転送するとトレースを中止。
トレースは都度ファイルに追加書きされるので、非常に遅い動きとなります、この場合はこれを使って必要な部分のみトレースします。
途中からトレースを再開する場合は0以外を転送します。
_TRIM--SET{_TRIM=...};で前後の空白を取ります。
I言語は最後の空白は無しと見なしますが、先頭の空白は有りと見るので、これを取る場合に使用します。
_UPPER--SET{_UPPER=..で英大文字に変換します。
英小文字を英大文字に変換します。
All Rights Reserved, Copyright (C) 2009-2010 Nobumichi Harasawa.