組み込み関数およびサブルーチンは、Open PL/I 言語で提供されるプロシージャです。式が有効な場合はいつでも使用できます。
Open PL/I で提供される組み込み関数およびサブルーチンは、次の種類に分類できます。
- 算術組み込み関数。次のいずれかを行います。
- 算術値のプロパティに関する情報を提供します。
- 通常の算術計算を実行します。
- 指定された精度で変数を操作し、演算の結果として得られる値を返します。
次のものがあります。
ABS |
INT |
MOD |
RANDOM |
SIGN |
CEIL |
MAX |
MULTIPLE |
ROUND |
TRUNC |
FLOOR |
MIN |
POSINT |
|
|
- 配列処理組み込み関数。配列および配列要素に関する情報を提供します。次のものがあります。
ALL |
DIMENSION |
LBOUND |
PROD |
SUM |
ANY |
HBOUND |
POLY |
|
|
- バッファー管理組み込み関数。バッファーと呼ばれる、アドレスおよびバイト数で指定された記憶領域を操作します。次のものがあります。
HEXIMAGE |
PLIFILL |
PLIMOVE |
PLIOVER |
XMLCHAR |
- 条件処理組み込み関数。信号条件によって発生する割り込みに関する情報を提供します。条件処理組み込み関数を使用して、発生した条件の原因を特定します。これらの関数は、組み込み関数に固有の条件に対する、あるいは暗黙の処理として発生した場合には ERROR 条件または FINISH 条件に対する ON-unit または動的子孫の範囲内でのみ使用できます。その他の使用法はすべてコンテキスト外になります。
条件処理組み込み関数には、次のものがあります。
DATFIELD |
ONCODE |
ONFILE |
ONLOC |
ONSUBCODE |
ONCHAR |
ONCONDID |
ONKEY |
ONSOURCE |
|
- 日付/時刻組み込み関数。これらの関数は、日、秒、および文字による日付/時刻スタンプとしての日時情報を取得または操作します。一部の日付/時刻組み込み関数では、使用する日付/時刻パターンを指定できます。これらの関数のタイム ゾーンおよび精度はシステムによって異なります。日付/時刻組み込み関数には、次のものがあります。
DATE |
DAYSTODATE |
SECS |
SECSTODAYS |
VALIDDATE |
DATETIME |
DAYSTOSECS |
SECSTODATE |
TIME |
WEEKDAY |
DAYS |
REPATTERN |
|
|
|
- 浮動小数点問い合わせ組み込み関数。指定した浮動小数点変数の引数に関する情報を返します。次のものがあります。
- 入出力組み込み関数。ファイルの現在の状態を特定します。これらの組み込み関数には、次のものがあります。
COUNT |
FILEDDINT |
LINENO |
SAMEKEY |
|
FILEDDWORD |
FILEOPEN |
PAGENO |
|
|
- 整数操作組み込み関数。これらの関数は、整数変数に対する演算を実行し、演算の結果を返します。次のものがあります。
- 数学および三角組み込み関数。浮動小数点で標準的な数学計算を実行します。浮動小数点ではない引数は変換されます。これらの組み込み関数には、次のものがあります。
ACOS |
COS |
ERFC |
LOG2 |
SQRT |
ASIN |
COSD |
EXP |
SIN |
TAN |
ATAN |
COSH |
LOG |
SIND |
TAND |
ATAND |
ERF |
LOG10 |
SINH |
TANH |
ATANH |
|
|
|
|
- その他の組み込み関数およびサブルーチン。次のものがあります。
COLLATE |
OMITTED |
PLIRETV |
PLISRTx |
STRING |
FLUSH |
PACKAGENAME |
PLISAXA |
PLITEST |
TALLY |
HEX |
PLIDUMP |
PLISAXB |
PRESENT |
UNSPEC |
LPIPARAMCOUNT |
PLIRETC |
PLISAXC |
RESIGNAL |
|
- 精度処理組み込み関数。指定された精度で変数を操作し、演算の結果として得られた値を返します。次のものがあります。
ADD |
DECIMAL |
FIXED |
MULTIPLY |
PRECISION |
BINARY |
DIVIDE |
FLOAT |
|
|
- プリプロセッサ組み込み関数。正しい数の引数を使用して呼び出す必要がある点を除き、プログラマー定義の関数を呼び出す場合と同じ方法で呼び出されます。詳細については、「プリプロセッサ組み込み関数」を参照してください。
- 疑似変数。次のようにのみ使用できます。
- 代入文の左側で
- DO 指定のターゲットとして、かつ SUBSTR、REAL、IMAG、または UNSPEC のいずれかである場合のみ
- GET 文のデータ リストまたは PUT 文の STRING オプションで
- KEYTO または REPLY オプションの文字列名として
次のものがあります。
- 変換組み込み関数。あるデータ型のデータを別のデータ型に変換します。次のものがあります。
BINARYVALUE |
BYTE |
CHARACTER |
CONJG |
RANK |
- 記憶域処理組み込み関数。記憶域の要件および変数の場所に関する情報を提供します。次のものがあります。
ADDR |
EMPTY |
OFFSETDIFF |
POINTERADD/PTRADD |
SIZE |
ADDRDATA |
NULL |
OFFSETSUBTRACT |
POINTERDIFF/PTRDIFF |
STORAGE |
ALLOCATION |
OFFSET |
OFFSETVALUE |
POINTERSUBTRACT/PTRSUBTRACT |
SYSNULL |
CURRENTSTORAGE |
OFFSETADD |
POINTER |
POINTERVALUE |
|
-
文字列処理組み込み関数。文字列、ビット文字列、グラフィック文字列、および WIDECHAR 文字列を処理します。文字列引数は、データ変換規則に従って、または関数の記述で指定された規則に従って文字列に変換される算術式にすることができます。
一部の関数は WIDECHAR データをサポートしていません。
文字列処理組み込み関数には、次のものがあります。
BITBOOL |
INDEX |
LOWERCASE |
REPEAT |
TRIM |
COPY |
LENGTH |
MPSTR |
SYSVERSION |
UPPERCASE |
GRAPHIC |
LOW |
PROCEDURENAME |
TRANSLATE |
VALID |
HIGH |
|
|
|
|
- 文字処理組み込み関数。WIDECHAR 文字型のみを受け入れる、または返す関数です。
WIDECHAR/WCHAR |
WCHARVAL |
WHIGH |
WLOW |
|
- 文字処理組み込み関数。文字型引数が適用される WIDECHAR 引数を受け入れる関数です。WIDECHAR 引数が渡されると、戻り値が文字列の場合には戻り値の型は WIDECHAR になります。
CENTREELFT/CENTRELEFT |
INDEX |
RANK |
SEARCH |
TALLY |
CENTERRIGHT/CENTRERIGHT |
LEFT |
REPEAT |
SEARCHR |
VERIFY |
CHARACTER/CHAR |
LENGTH |
REVERSE |
SUBSTR |
VERIFYR |
COPY |
MAXLENGTH |
RIGHT |
|
|
-
JSON サポート組み込み関数。
JSON (Java Script Object Notation) は、名前と値のペアから成るデータ オブジェクトの転送を目的とする、人間が理解できるテキストです。これは、ブラウザー/サーバー通信に使用される最も一般的なデータ形式であり、XML の代わりに使用されます。空白は、区切り文字が許可されている場合には常に許可されます。それ以外の場合には無視されますが、読み書きされたバイト数にはカウントされます。JSON テキストは UTF-8 でエンコードされている必要があります。
PL/I では、いくつかの組み込み関数を介して、またいくつかの新しい属性を使用して、JSON オブジェクトを操作 (読み取りおよび書き込み) できます。JSON オブジェクトは、PL/I データ型 (スカラーと集約の両方) のサブセットにマップされます。
JSON オブジェクトの例:
{ "Last": "Presley",
"First": "Elvis",
"Address" :
[ "4860 Las Vegas Blvd",
"Las Vegas",
"NV 89139"
],
"Title": "The King",
"Born" : 1935,
"Alive": true
}
次に対してマップされます。
dcl 1 King,
3 Last char(30) varying,
3 First char(30) varying,
3 Address(3) char(30) varying,
3 Title char(30) varying,
3 Born fixed bin(31),
3 Alive bit;
JSON 組み込み関数の引数
すべての JSON 組み込み関数には、2 つまたは 3 つの引数があります。
- 最初の引数は、常に、JSON テキスト バッファーを指すロケーター (POINTER 式または AREA 参照で明示的に宣言された OFFSET) です。
- 2 番目の引数は、常に、バッファーの長さをバイト単位で指定する式です。
- 3 番目の引数は、組み込み関数によってはオプションであることもありますが、存在する場合または必須の場合は、常に、変数 (スカラーまたは集約) への参照です。これは、計算関連のデータ型であるか計算関連のデータ型のみを含む必要があり、構造体の場合は、スケールを指定済みの FIXED BINARY または FIXED DECIMAL (p, q) (q < 0 または q > p) である要素、あるいは * 名、UNION 属性、または GRAPHIC 属性を持つ要素を含むことはできません。
- JSON 組み込み関数は、関数によって異なる結果を表す FIXED BIN(31) 値を返します。
JSON 組み込み関数は次のとおりです。
JSONGETARRAYEND |
JSONGETOBJECTEND |
JSONPUTCOLON |
JSONPUTVALUE |
JSONGETARRAYSTART |
JSONGETOBJECTSTART |
JSONPUTCOMMA |
JSONVALID |
JSONGETCOLON |
JSONGETVALUE |
JSONPUTMEMBER |
|
JSONGETCOMMA |
JSONPUTARRAYEND |
JSONPUTOBJECTEND |
|
JSONGETMEMBER |
JSONPUTARRAYSTART |
JSONPUTOBJECTSTART |
|
このセクションでは、各組み込み関数について説明します。組み込み関数はアルファベット順に示されています。各組み込み関数の定義には、目的、構文、および説明 (その組み込み関数の効果) が含まれています。例 (各組み込み関数の使用法および結果を示す 1 つ以上の例) および制約事項 (組み込み関数の使用上の制約事項) が含まれている場合もあります。
組み込み関数の引数は、実質的に値によって渡されます。つまり、引数の変更は行われません。