COMPRESS [NUMERIC ] [FULL ]
|
|||||
operand1 [(parameter)] | |||||
SUBSTRING (operand1,operand3,operand4) [(parameter)]
|
|||||
INTO |
operand2 | ||||
SUBSTRING (operand2,operand5,operand6)
|
|||||
LEAVING [SPACE ]
|
|||||
LEAVING NO [SPACE ] |
|||||
WITH [ALL ] [DELIMITERS ] [operand7]
|
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:ASSIGN
| COMPUTE
| EXAMINE
| MOVE
| MOVE ALL
| SEPARATE
関連機能グループ:算術演算とデータ移動操作
COMPRESS
ステートメントは、1 つ以上のオペランドの内容を単一の英数字フィールドへ転送(結合)するために使用します。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 |
C | S | A | G | N | A | U | N | P | I | F | B | D | T | G | O | ○ | × | ||
operand2 |
S | A | U | B | ○ | ○ | ||||||||||||||
operand3 |
C | S | N | P | I | B* | ○ | × | ||||||||||||
operand4 |
C | S | N | P | I | B* | ○ | × | ||||||||||||
operand5 |
C | S | N | P | I | B* | ○ | × | ||||||||||||
operand6 |
C | S | N | P | I | B* | ○ | × | ||||||||||||
operand7 |
C | S | A | U | B | ○ | × |
* operand3
、operand4
、operand5
および operand6
のフォーマット B は、4 以下の長さでのみ使用できます。
構文要素の説明:
構文要素 | 説明 | |
---|---|---|
NUMERIC |
符号文字の処理:
このオプションは、符号文字や小数文字の扱いを指定します。
COMPRESS -123 1.23 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: 123*123
浮動小数点の値については、 例 1
COMPRESS NUMERIC -123 1.23 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: -123*1.23 例 2:
COMPRESS NUMERIC 'ABC' -0056.00 -0056.10 -0056.01 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: ABC*-56*-56.1*-56.01 例 3:
COMPRESS NUMERIC FULL 'ABC' -0056.00 -0056.10 -0056.01 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: ABC*-0056.00*-0056.10*-0056.01 |
|
FULL |
ソースフィールド値の処理:
すべて 0 の数値ソースフィールドについては 1 つの 0 が転送されます。例えば、次のようになります。 COMPRESS 'ABC ' 001 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: ABC*1
これらは入力したとおりに表示されます。例えば、次のようになります。 COMPRESS FULL 'ABC ' 001 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: ABC *001 |
|
operand1 |
ソースフィールド:
注意:
|
|
operand2 |
ターゲットフィールド:
ターゲットフィールドがフォーマット U(Unicode)であり、フォーマット B のソースフィールドが含まれている場合、送信するバイナリフィールドの長さを同じにする必要があります。 |
|
LEAVING
SPACE |
空白で区切られたターゲットフィールドの値: 追加オプションを一切指定しないで COMPRESS ステートメントを使用したか、または LEAVING SPACE (デフォルトでも適用される)を指定した場合、ターゲットフィールド内の値は互いに空白で区切られます。
|
|
LEAVING NO
SPACE |
区切られていないターゲットフィールドの値: LEAVING NO SPACE が指定されると、ターゲットフィールド内の各値の間には、空白も文字も入りません。
|
|
parameter |
出力モード/日付フォーマットパラメータ: parameter では、セッションパラメータ PM またはセッションパラメータ DF を指定できます。
|
|
PM=I |
右から左に記述する言語をサポートするために、 MOVE 'XYZ' TO #A COMPRESS #A (PM=I) 'ABC' INTO #B LEAVING NO SPACE
|
|
DF |
operand1 が日付変数の場合、この変数に対する parameter としてセッションパラメータ DF を指定できます。
|
|
SUBSTRING (operand1 、operand3 、operand4 )
|
SUBSTRING オプション: operand1 が英数字(A)、Unicode(U)、またはバイナリ(B)フォーマットの場合、SUBSTRING オプションを使用して、ソースフィールドの特定部分だけを転送できます。フィールド名(『operand1 』)の後に、まず開始位置(operand3 )を指定してから、フィールドの転送される部分の長さ(operand4 )を指定してください。
|
|
INTO
SUBSTRING (operand2 、operand5 、operand6 )
|
INTO 節:
どちらの場合も、 |
|
WITH
DELIMITERS |
入力デリミタ文字
|
|
WITH DELIMITERS
operand7 |
特定のデリミタ文字 WITH DELIMITERS operand7 を指定すると、値は operand7 に指定した文字で区切られます。operand7 は、1 文字にする必要があります。operand7 が変数の場合は、そのフォーマット/長さを(A1)または(B1)にする必要があります
ターゲットフィールドがフォーマット A または B の場合は、デリミタ文字のフォーマット/長さを(A1)、(B1)、または(U1)にする必要があります。 ターゲットフィールドがフォーマット U(Unicode)の場合は、デリミタ文字のフォーマット/長さを(A1)、(B2)、または(U1)にする必要があります。 |
|
WITH
ALL |
デリミタの処理:
COMPRESS 'A' ' ' 'C' ' ' INTO #TARGET WITH DELIMITERS '*' Content of #TARGET is: A*C
COMPRESS 'A' ' ' 'C' ' ' INTO #TARGET WITH ALL DELIMITERS '*' Content of #TARGET is: A**C* |
フォーマット B の転送先フィールドは、フォーマット A の転送先フィールドと同様に処理されます。
COMPRESS
操作は、全オペランドの処理が終了するか、またはターゲットフィールド(operand2
)に空きがなくなると終了します。
ターゲットフィールドが全オペランドの合計桁数よりも大きい場合、operand2
の残りの部分は空白となります。ターゲットフィールドの方が小さい場合、値は切り捨てられます。
operand2
がダイナミック変数である場合、COMPRESS
操作は全ソースオペランドが処理されると終了します。値の切り捨ては行われません。COMPRESS
操作後の operand2
の長さは、ソースオペランドの合計の長さに対応します。ダイナミック変数の現在の長さは、システム変数 *LENGTH
を使用して確認できます。
このセクションでは、次のトピックについて説明します。
** Example 'CMPEX1': COMPRESS ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 MIDDLE-I * 1 #COMPRESSED-NAME (A20) END-DEFINE * LIMIT 4 READ EMPLOY-VIEW BY NAME COMPRESS FIRST-NAME MIDDLE-I NAME INTO #COMPRESSED-NAME DISPLAY NOTITLE FIRST-NAME MIDDLE-I NAME 5X #COMPRESSED-NAME END-READ * END
FIRST-NAME MIDDLE-I NAME #COMPRESSED-NAME -------------------- -------- -------------------- -------------------- KEPA ABELLAN KEPA ABELLAN ROBERT W ACHIESON ROBERT W ACHIESON SIMONE ADAM SIMONE ADAM JEFF H ADKINSON JEFF H ADKINSON
** Example 'CMPEX2': COMPRESS (with LEAVING NO SPACE) ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 NAME 2 CURR-CODE (1) 2 SALARY (1) * 1 #CCSALARY (A20) END-DEFINE * LIMIT 4 READ EMPL-VIEW BY NAME COMPRESS CURR-CODE (1) SALARY (1) INTO #CCSALARY LEAVING NO SPACE DISPLAY NOTITLE NAME CURR-CODE (1) SALARY (1) 5X #CCSALARY END-READ * END
NAME CURRENCY ANNUAL #CCSALARY CODE SALARY -------------------- -------- ---------- -------------------- ABELLAN PTA 1450000 PTA1450000 ACHIESON UKL 11300 UKL11300 ADAM FRA 159980 FRA159980 ADKINSON USD 34500 USD34500
** Example 'CMPEX3': COMPRESS (with delimiter) ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 NAME 2 CURR-CODE (1) 2 SALARY (1) * 1 #CCSALARY (A20) END-DEFINE * LIMIT 4 READ EMPL-VIEW BY NAME COMPRESS CURR-CODE (1) SALARY (1) INTO #CCSALARY WITH DELIMITER '*' DISPLAY NOTITLE NAME CURR-CODE (1) SALARY (1) 5X #CCSALARY END-READ * END
NAME CURRENCY ANNUAL #CCSALARY CODE SALARY -------------------- -------- ---------- -------------------- ABELLAN PTA 1450000 PTA*1450000 ACHIESON UKL 11300 UKL*11300 ADAM FRA 159980 FRA*159980 ADKINSON USD 34500 USD*34500