Fコード

フォーマット

F [ ; ] element [ ; element ...]

Fコードは、レコードのデータ値に対して数学的演算を行ったり、文字列を操作したりする。 これは、セミコロンで区切られた逆ポーランド形式(Lukasiewicz)のオペランドまたは演算子で構成されます。

プログラムはFコードを左から右に解析し、オペランドのスタックを構築する。 演算子に出会うたびに、要求された演算を実行し、結果をスタックの先頭に置き、必要に応じて下位のスタック要素をポップする。

セミコロン( ; )は要素の区切り文字である。

要素には、以下のカテゴリーから1つ以上の項目を指定することができる:

データの場所または文字列

loc[R]
スタックにプッシュされるデータ値を指定する数値の位置で、オプションでその後にR(リピートコード)が続く。
Cn
nはスタックにプッシュされる定数である。
string
ダブルクォーテーション ( " )、シングルクォーテーション ( ' )、またはバックスラッシュ ( ˶ ) で囲まれた文字列。
number
ダブルクォーテーション ( " )、シングルクォーテーション ( ' )、またはバックスラッシュ ( ˶ ) で囲まれた定数。正の整数、負の整数、またはゼロを指定できます。
D
システム日付(内部フォーマット)。
T
システム時刻(内部フォーマット)。

特別なシステム・カウンタ・オペランド

NI
カレント®アイテムカウンター(表示または選択されたアイテムの数)。
ND
ブレークライン上の最後のBREAKからの詳細行数。
NV
列リスト専用の現在値カウンタ。
NS
列リスト用の現在のサブ値カウンタのみ。
NB
現在の BREAK レベル番号。 1 = 最低レベルの故障。 これは、総計行で255の値を持つ。
LPV
Load Previous Value:直前の相関コードの結果をスタックにロードする。

オペレーター

演算子は、スタックの先頭エントリに対して実行される操作を指定する。 stack1はスタックの一番上の値、stack2はそのすぐ下の値、stack3stack2の下の値、といった具合である。

*[n]
stack1stack2を掛ける。 オプションのnはディスケーリング係数である(つまり、結果は10のn乗で割られる)。
/
stack1stack22に分割し、結果をstack1に戻す。
R
と同じだが、商の代わりに余りがスタックの一番上に返される。
+
stack1stack2に追加する。
-
stack2 からstack1を減算し、結果をstack1へ(stack1 からstack2を減算する REALITY フレーバーを除く)。
:
stack1の文字列をstack2の文字列の末尾に連結する。
[ ]
部分文字列を抽出する。 stack3文字列は、stack2で指定された文字から始まり、stack1 で指定された文字数分展開される。 これはBASICの[m,n]演算子と同じで、mstack22に、nstack11にある。
S
stack1の多値の合計がスタックの一番上に置かれる。
_
stack1stack2の値を交換する。
P または
stack1をスタックに戻す(つまりstack1を複製する)。
^
stack1の値をスタックからポップする。
納得
標準の変換演算子はstack1のデータを変換し、結果をstack1に入れる。

論理演算子

論理演算子はstack11とstack2を比較する。 それぞれ、trueなら1、falseなら0を返す:

=
等しい。
<
より小さい。
>
より大きい。
# または <>
イコールではない。
[
以下である。
]
以上であること。
&
論理 AND。
!
論理 OR。
\n\
ラベルは、2つのバックスラッシュ(◆)で囲まれた正の整数で定義される。
#n
stack11とstack2が異なる場合、ラベルnに接続する。
>n
stack1stack2より大きい場合、ラベルnに接続する。
<n
stack1stack2より小さい場合、ラベルnに接続する。
=n
stack1stack2に等しい場合、ラベルnに接続する。
}n
stack1stack2以上の場合、ラベルnに接続。
{n
stack1stack2以下の場合、ラベルnに接続。
IN
stack1ヌル値かどうかをテストする。
フンフン
stack1が false と評価された場合、F コードでnnnn文字先に分岐し、処理を続行する。
ブンブン
Fコードで無条件にnnnn文字前に分岐し、処理を続行する。
グーン
ラベルnnnnへ。 ラベルはバックスラッシュ( ˶ˆ꒳ˆ˵ )で区切られた文字列でなければなりません。
G*
stack1 で定義されたラベルに移動する。 ラベルはバックスラッシュ( ˶ˆ꒳ˆ˵ )で区切られた文字列でなければなりません。
注:Fコードは整数演算のみを行う。