演算仕様書では、配列全体または配列の個々の要素を指定することができます。 個々の要素は、フィールドの場合と同様に処理することができます。
OVERLAY キーワードによって定義された不連続の配列は、MOVEA 命令によって、
あるいは PARM 命令の結果フィールドの中で使用することはできません。
配列全体を指定するためには、配列名だけを使用してください。配列名は、演算
項目 1、演算項目 2、または結果のフィールドとして使用することができます。 配列
名を使用できる命令は次のとおりです。すなわち、ADD、Z-ADD、SUB、Z-SUB、
MULT、DIV、SQRT、ADDDUR、SUBDUR、EVAL、EXTRCT、MOVE、MOVEL、
MOVEA、MLLZO、MLHZO、MHLZO、MHHZO、DEBUG、XFOOT、LOOKUP、
SORTA、PARM、DEFINE、CLEAR、RESET、CHECK、CHECKR、および SCAN です。
配列名だけでは使用できず、配列要素だけで使用できる命令もいくつかあります。
これらの命令には、BITON、BITOFF、COMP、CABxx、TESTZ、TESTN、TESTB、
MVR、DO、DOUxx、DOWxx、DOU、DOW、IFxx、WHENxx、WHEN、IF、
SUBST、および CAT が含まれますが、これらに限定されているわけではありません。
指標のない配列名またはアスタリスクを指標として持つ配列名 (たとえば、
ARRAY または ARRAY(*)) を指定した場合には、配列の各要素について特定の命令
が反復されます。これらの命令は、ADD、Z-ADD、EVAL、SUB、Z-SUB、
ADDDUR、SUBDUR、EXTRCT、MULT、DIV、SQRT、MOVE、MOVEL、
MLLZO、MLHZO、MHLZO、および MHHZO です。
指標のない配列名を指定した場合には、これらの命令に対して次の規則が適用さ
れます。
- 演算項目 1、演算項目 2、および結果のフィールドが同数の要素を含む配列
の場合に、演算には各配列の最初の要素が使用され、次に、各配列の 2 番目の要
素が使用され、同様に配列中のすべての要素が処理されます。
配列が同じ項目数
でない場合には、要素の数が最も少ない配列の最後の要素が処理された時点で、
演算は終了します。
ADD、SUB、MULT、および DIV 命令の場合に演算項目 1 が指定されないと、演算項
目 1 は結果のフィールドと同じであると見なされます。
- 演算項目のどちらか 1 つがフィールド、リテラル、または形象定数で、もう
1 つの演算項目と結果のフィールドが配列であった場合には、演算は、短い方の
配列の各要素について一度だけ実行されます。 すべての演算で、同じフィールド
、リテラル、または形象定数が使用されます。
- 結果のフィールドは、常に配列でなければなりません。
- 命令コードが演算項目 2 だけを使用し (たとえば、Z-ADD、Z-SUB、SQRT、
ADD、SUB、MULT、または DIV では演算項目 1 が
指定されないことがある)、
結果のフィールドが配列の場合には、演算は配列のすべての要素に対して一度だ
け実行されます。 演算項目 2 が配列でない場合には、すべての命令で同じフィールドまたは固定情
報が使用されます。
- 処理される演算の回数が多いため、結果の標識 (71 から 76 桁目) を使用するこ
とはできません。
- EVAL 式において、右側に指標を用いない配列を指定した場合、
左側にも指標を用いない配列を含める必要があります。
注: EVAL 命令の中で使用した場合に、%ADDR(配列) および %ADDR(配列 (*)) は同じ意
味を持ちません。 詳細については、
%ADDR (変数のアドレスの検索)を参照してください。
EVAL または SORTA 命令をコーディングするときには、組み込み関数 %SUBARR(arr) を使用して、
その命令で使用される配列の一部を選択することができます。
詳細については、%SUBARR (配列の部分の設定/入手)を参照してください。