リテラル

リテラルとは、特定の意味を持った定数のことをいいます。

数値の場合、特に識別子を使用しなくても識別されます。例えば、「123」や「15.52」はそのまま、数値リテラルとして(それ自体がリテラルとして)解釈されます。

数値以外のリテラルは、文字列として扱われます。通常、文字列は単引用符(')で囲みます。文字列のうち、テキスト以外の文字列には全て、その後ろにリテラルコードを付加します。このリテラルコードにより、単引用符(')で囲まれた文字列の種類を示すことができます。リテラルコード自体は単引用符で囲む必要はありません。例えば、'abcd'はテキストとして、'95/01/01'DATE は日付として扱われます。

リテラルとしての文字列は、Magic xpaの内部表現に変換されます。式に文字列が定義されている場合、その文字列は、Magic xpaの内部表現を使用して解析されます。実行時の式の評価には、内部表現の値(内部値)が使用されます。内部値は、その変更がないかどうか常にMagic xpaにより追跡され、変更があった時には、内部値に対応するリテラルも変更されます。

例えば、文字列「'1'DSOURCE」は、[データ]リポジトリの最初のデータ(行)を表します。このデータの前に新しいデータを挿入すると、このデータは1つ繰り下がり、2 番目のデータになります。その場合、自動的にリテラル文字列が「'2'DSOURCE」に更新されます。したがって、式でリテラルコード(この場合は「DSOURCE」)を使用して文字列を指定しておくことで、式を訂正しなくても済みます。

リテラルを使用することで、Magic xpaのプログラムを別の言語に移植する作業も楽になります。例えば、タスクモードは「'MCDQLRUSFOE'」などと定義することで多言語に対応が可能になります。この場合、MODEリテラルを使用して「'MCDQLRUSFOE'MODE 」としておくと、文字列の中のタスクモードが自動的に変換先の言語を所定の値に変更されます。

リテラルコードを使用することで、式はより確実になり、プロジェクトを手直ししても式に影響が及ぶことが少なくなります。

以下は、Magic xpaで使用できるリテラルコードです。

リテラル

内容

DATE

文字列は日付として解釈されます。日付の場合、Magic xpaの内部表現は数値になります。このため、日付の算術計算が可能です。例えば、「'97/01/01'DATE+14」は有効な式で、結果は、「97/01/15」になります。

日付の西暦年は、[動作環境]ダイアログの[西暦基準年]パラメータの値によって変わってきます。例えば、「'97/01/28'DATE」の場合、[西暦基準年]パラメータに設定されている値が1892を超え、1997以下の時には、日付の西暦年は2097年となります。一方、[西暦基準年]パラメータに設定されている値が1997を超え、2097以下の時には、日付の西暦年は1997年となります。なお、Magic xpaでは、西暦年は通常、4桁で表示されます。

'97/01/01'DATE

DSOURCE

文字列が[データ]リポジトリのデータソースの番号(連番)として解釈されます。したがって、DSOURCE リテラルコードを式で使用することで、[データ]リポジトリの行に変更が加えられた時でも、式で指定したデータソースの番号が自動的に更新されるようになります。例えば、「'5'DSOURCE」は、[データ]リポジトリの5 番目のデータソースであることを示し、「5」という番号は、行の削除や追加に応じて自動的に更新されます。

注意:

V9Plus 以前の FILEリテラルと同じです。

'1'DSOURCE

ERR

文字列がデータベースエラーのエラーとして認識されます。対象となるエラーは、自動的にリトライする を参照してください。

'デッドロック'ERR

EVENT

文字列は、Magic xpaの内部イベントを示す文字列として解釈されます。イベントとは、ユーザの操作の結果、Magic xpaに送られる命令をいいます。イベントは、ユーザにより[キーボード割付]テーブルで定義されているキー操作が行われた時に発生します。Magic xpaの内部イベントは式の中で指定することができます。これによりユーザによる操作をチェックしたり、マクロを作ったりといった作業が可能です。

イベントの名前は、[設定/キーボード割付]テーブルの[内部イベント]カラムで確認できます。イベント文字列(例では、「'終了'EVENT」)では、このカラムに定義されているものを使用しなければなりません。なお、イベントの名前は最初の数文字を入力すると、後は自動的に入ります。ただし、名前が長い時には、少し長めに入力することも必要になります。

注意:

  • V9Plus 以前の ACTリテラルと同じです。

  • EVENTリテラルはリッチクライアントでは利用できません。

'終了'EVENT

EXP

文字列が[式]エディタの式の番号として認識されます。このリテラルコードは、通常、ExpCalc関数で使用します。EXPリテラルコードを使用することで、式の定義されている位置が変更された場合、EXPリテラルコードの前の文字列も自動的に更新されます。

'A'EXP

FORM

文字列が[フォーム]エディタ上の番号として認識されます。このリテラルコードは、通常、[タスク特性]の[メインフォーム]特性を定義する際に使用します。FORMリテラルコードを使用することで、フォームの定義位置が変更された場合、FORM リテラルコードの前の文字列も自動的に更新されます。

'2'FORM    

INDEX

文字列は、[インデックス]テーブルに定義されているインデックスの番号(連番)として解釈されます。このINDEX リテラルを使用することで、[インデックス]テーブルの行の位置に変更があった時でも、INDEXリテラルのインデックスが自動的に行使されます。例えば、「'5'INDEX」は、[インデックス]テーブルの5番目のインデックスであることを示し、「5」という番号は、行の削除や追加に応じて自動的に更新されます。

注意:

V9Plus 以前の KEYリテラルと同じです。

'5'INDEX

KBD

文字列は、キーボード値として解釈されます。キーボード値とは、キーボードから入力されるキー名を指し、この値は、[キーボード割付]テーブルの設定にしたがってイベントに変換されます。同じキーに複数のイベントを設定することもでき、その場合、イベントはコンテキストによって別のものが実行されます。キーボード値は式で使用できます。これによりユーザによる入力のチェックやマクロの作成が可能です。

キーボード値の名前は、[設定/キーボード割付]テーブルの[キー]カラムで確認できます。KBD リテラルの文字列には、このパラメータで定義されているものを使用しなければなりません。

注意:

KBDリテラルはリッチクライアントタスクでは利用できません。

'F2'KBD

LOG

文字列は論理値(「True」 または「False」)として解釈されます。つまり、LOG リテラルコードの文字列は、「'TRUE'LOG」または「'FALSE'LOG」のいずれかとなります。「True」または「False」以外の文字の場合、自動的に「'FALSE'LOG」となります。

'TRUE'LOG

MENU

文字列は、メニュー名として解釈されます。'1'MENUは、[メニュー]リポジトリ内の最初のメニュー(通常は、デフォルトのプルダウンメニューになります。)を示しています。

'1'MENU

MODE

文字列は、タスク処理モードとして解釈されます。文字列としては、[タスク特性]の[初期モード]特性に指定できるいずれかのモードが指定できます。

'MC'MODE

PROG

文字列は、[プログラム]リポジトリに定義されているプログラムの番号(連番)として解釈されます。PROGリテラルを使用すると、[プログラム]リポジトリのプログラム行の位置が変わった時、PROGリテラルの直前の文字列が自動的に更新されます。例えば、「'5'PROG」は、[プログラム]リポジトリで5 行目に定義されているプログラムを示しますが、この「5」という文字は、[プログラム]リポジトリのプログラム行の位置が変わった場合、自動的に更新されます。

注意:

クロスリファレンスユーティリティを実行した場合、PROGリテラルを使用した式も検索対象になります。

'5'PROG

RIGHT

文字列が、権利IDとして認識されます。このRIGHTリテラルコードは、通常、Rights関数で使用します。開発者は、Rights関数を使用して、ユーザに与えられている権利をチェックできます。

なお、Rights関数を使用してユーザの権利を確認する場合、開発者に権利がない時には、そのリテラルが表示されます。

'RIGHT #4'RIGHT

TIME

文字列は、時刻として解釈されます。時刻の内部表現は数値であるため、算術演算に使用できます。

例えば、「'14:30:15'TIME+5」は式として有効で、「'14:30:15'TIME」という値に「5」が追加されます。(この場合、「5」は秒です。)

'14:30:15'TIME

VAR

文字列が項目のシンボル名として認識されます。このリテラルコードは、通常、VarAttr, VarCurr, VarMod, VarName, VarPrev, and VarSet の各関数で使用します。VAR リテラルコードを使用することで、項目の定義位置が変更された場合、VAR リテラルコードの前の文字列も自動的に更新されます。

'A'VAR