バージョン 8.1.3
 —  ユーティリティ  —

ADASEL 構文

他の Adabas ユーティリティと異なり、ADASEL では各パラメータ行の最初にユーティリティ名を付ける必要はありません。 選択要求は次の要素で構成されます。

ADASEL 構文の概要を以下に示します。

graphics/util_adasel.png

複数の選択要求をコーディングできます。 それぞれの要求は SELECT で始まり、END で終わります。

SELECT ALL RECORDS FROM FILE 1
   DISPLAY AA BB CC
END

SELECT BEFORE IMAGE FILE 2
   OUTPUT TO EXPA1
END

このドキュメントでは、次のトピックについて説明します。


SELECT ステートメント

graphics/util_adasel_select.png

キーワード SELECT の後に、次の選択オプションのうちの 1 つを指定してください。

オプション 選択レコード
ALL A1(更新)コマンドおよび E1(削除)コマンドのビフォーイメージ、A1 コマンドおよび N1(追加)コマンドのアフターイメージ
BEFORE IMAGE | BI A1 コマンドおよび E1 コマンドのビフォーイメージ
AFTER IMAGE | AI A1 コマンドおよび N1 コマンドのアフターイメージ
NEW N1 コマンドのアフターイメージ
DELETED E1 コマンドのビフォーイメージ
NEWDEL N1 コマンドのアフターイメージおよび E1 コマンドのビフォーイメージ
UPDATED A1 コマンドのビフォーイメージとアフターイメージ

file-number

選択するプロテクションログデータの Adabas ファイルを指定します。 指定可能なファイル番号は、0~5000 または 0~(ASSO ブロックサイズ - 1)のうち、どちらか小さい方の数字です。 C5 コマンドによって書かれたユーザーデータを選択するには、チェックポイントファイルのファイル番号を指定します。

Top of page

追加の選択条件

追加の選択条件を指定するときは、STARTING FROM 節、ENDING AT 節、WITH 節、および IF ステートメントが使用できます。 これらのオプションの節およびステートメントは、前述の選択オプションよりも優先されます。

graphics/util_adasel_addselcrit.png

STARTING FROM 節および ENDING AT 節は、一定の時間内に追加、更新または削除されたレコードだけに選択を制限します。 date-time 変数については、次の「date-time」セクションで説明します。

指定した値の条件を満たすレコードを選択するには、WITH 節を使用します。 AND または OR 論理演算子を使用することで複数の条件を指定できます。 WITH 節については、「WITH 節」のセクションで説明します。

一定の条件に基づいてレコードの選択および出力命令を実行するには、IF ステートメントを使用します。 IF ステートメントについては、「IF ステートメント」のセクションで説明します。

WITH 節と IF ステートメントの両方で使用する value-criterion 変数の構文については、「value-criterion」のセクションで説明します。

出力命令については「output-instruction」を参照してください。

Top of page

date-time

date-time 変数に使用できるフォーマットを以下に示します。

フォーマット 説明
yyyymmdd/hhmmss 日付/時刻
J(yyyyddd/hhmmss) ユリウス暦の日付/時刻
X ' xxxxxxxx ' STCK の表示

注意:
yyyy に指定可能な最小値は "1980" です。

1996 年 5 月 12 日(ユリウス暦の日付 132 日)の 午前 0 時以前(午前 0 時を含む)に追加、削除または更新されたすべてのレコードをファイル 1 から選択します。

SELECT ALL RECORDS FROM FILE 1
   ENDING AT J(1996132/240000)
   DISPLAY AA BB CC
END

1996 年の 1 月 1 日と 12 月 31 日の間(1 月 1 日と 12 月 31 日を含む)に追加、削除または更新されたすべてのレコードをファイル 112 から選択します。

SELECT ALL 112
   STARTING FROM 19960101/000000
   ENDING AT 19961231/240000
   OUTPUT TO EXPA1
END

Top of page

WITH 節

指定した値の条件を満たすレコードを選択するには、WITH 節を使用します。 AND または OR 論理演算子を使用することで複数の条件を指定できます。

value-criterion 変数の構文については「value-criterion」のセクションで説明します。

プロテクションログには、2 つの更新されたレコードのビフォーイメージとアフターイメージが含まれています。 レコードのフィールド BB の内容は、次のとおりです。

ビフォーイメージ アフターイメージ
BB=SMITH BB=ZINN
BB=SMITH BB=JONES

SELECT ステートメントには、選択対象をさらに制限する WITH 節が含まれています。

SELECT ALL RECORDS FROM FILE 1
   WITH BB ='SMITH'
   DISPLAY AA BB CC
END

この例では、ALL オプションが使用されているにもかかわらず、2 つのビフォーイメージのみが選択されます。これは、BB フィールドのビフォーイメージに "SMITH" が含まれているためです。 ADASEL では、BB フィールドに "SMITH" 以外の値があるレコード(この場合は 2 つのアフターイメージ)をすべて無視します。 AFTER IMAGE オプションが指定されている場合、レコードは 1 つも選択されません。

Top of page

IF ステートメント

一定の条件に基づいてレコードの選択および出力命令を実行するには、IF ステートメントを使用します。

デフォルト設定により、ADASEL では IF ステートメントのネストが 20 まで許可されます。 このデフォルトを変更する詳細については、「グローバルパラメータによる ADASEL デフォルトの変更方法」セクションを参照してください

graphics/util_adasel_if.png

value-criterion 変数の構文については「value-criterion」のセクションで説明します。 出力命令については「output-instruction」を参照してください。

"field-nameCHANGES" 条件は、更新時に指定フィールドの値が変更されたレコードを選択します。 ADASEL では、ビフォーイメージとアフターイメージ間の変更内容を検出します。 したがって、この条件は、プロテクションログにビフォーイメージとアフターイメージの両方を書き込む A1(UPDATE)コマンドに対してのみ有効です。 field-name は、FDT のエレメンタリフィールドの 2 文字の Adabas 名である必要があります。 グループ、ピリオディックグループ(PE)、スーパーディスクリプタ、サブディスクリプタ、フォネティックディスクリプタまたはハイパーディスクリプタは参照できません。 ただし、マルチプルバリューフィールド(MU)やピリオディックグループ(PE)のメンバフィールドは参照できます。「value-criterion」の「MU および PE メンバフィールドのインデックス」のセクションを参照してください。

注意:
"IF field-name CHANGES" 条件に対しては、アフターイメージのみが報告されます。 変更されたフィールドのビフォーイメージとアフターイメージの両方を ADASEL を使用して報告するには、実行の OUTPUT 命令に LOGINFO オプションまたは EXTENDED オプションを指定してください。 詳細については、「OUTPUT 命令」を参照してください。

DO グループの構文は次のようになります。

graphics/util_adasel_do.png

DO グループとは、一連の出力命令(NEWPAGE、SKIP、DISPLAY、OUTPUT)のことです。 このグループはキーワード DO で始まり、キーワード DOEND で終わる必要があります。 DO グループにはネストされた IF ステートメントを含めることはできません。また、DO グループは別の DO グループ内にネストすることもできません。

IGNORE を指定すると、ADASEL によって項目の表示または出力が行われません。

SELECT ALL FROM FILE 77
   IF AA ='SMITH' THEN 
      IF BB CHANGES THEN DO
         DISPLAY 'Field BB changed:' BB AA CC
         SKIP 1 LINE
      DOEND
      ELSE DISPLAY AA BB CC
   ELSE IGNORE
END

Top of page

value-criterion

value-criterion は、1 つ以上の値に基づいてレコードを選択するために、WITH 節または IF ステートメントで使用します。 構文は次のとおりです。

graphics/util_adasel_valcrit.png

BUT NOT 節は、等式(=)で指定された範囲から値または値範囲を除外します。

比較の対象

ADASEL は、値または値範囲を次の項目に対して比較します。

論理演算子

等式または不等式の論理演算子は、語句、省略形または記号で表現できます。これらの表現方法を次の表に示します。

比較 語句 省略形 記号
等しい EQUAL EQ =
より大きい GREATER THAN GT >
より大きいまたは等しい GREATER EQUAL GE > =
より小さいまたは等しい LESS EQUAL LE < =
より小さい LESS THAN LT <
等しくない NOTEQUAL NE ¬=

注意:
記号 ¬= の 16 進表示は X'5F7E' です。

値のフォーマット

条件値のフォーマットは、比較の対象となる項目のデフォルトフォーマットに応じて異なります。

Adabas フィールド(field-name)のデフォルトフォーマットは、FDT に指定されたフォーマットです。 下表は、条件値を表示するときの最大長(バイト数)および有効なフォーマットを示します。

条件値 最大 バイト数 最大 桁数
FDT のフィールドフォーマット 有効なフォーマット
英数字 英数字 253  
  16 進 253 506
10 進(パックまたはアンパック) 10 進数(0-9) 29 *  
2 進 10 進 4 * 10
  16 進 126 252
浮動小数点 16 進 8 16
固定小数点 16 進 4 8
ワイド文字 16 進 253 506

* マイナス符号を除きます。

その他の項目のデフォルトフォーマットおよび最大長(バイト数)は、次のとおりです。

項目 デフォルトフォーマット 条件値
有効なフォーマット 最大 長さ
ISN 2 進 10 進、16 進 4
USERDATA 英数字 英数字、16 進 30
USERID バイナリ、英数字 10 進、16 進 8
USERTID バイナリ、英数字 10 進、16 進 8

値のフォーマットの例 1:

デフォルトフォーマットが英数字の場合、値は英数字または 16 進で表示できます。

BA EQ 'SMITH' or BA EQ X'E2D4C9E3C8'

値のフォーマットの例 2:

デフォルトフォーマットがパックまたはアンパック 10 進の場合は、10 進数(0~9)で値を表示します。 先頭のマイナス符号は、値が負であることを示します。 29 桁まで(マイナス符号は除く)が指定可能です。 他の特殊文字($、小数点、コンマなど)は許可されません。

NU = 123456789
NU = -987654321 

値のフォーマットの例 3:

デフォルトフォーマットが 2 進の場合、値は 16 進または数字フォーマットで表示できます。

2 進の Adabas フィールドに対し、252 桁の 16 進数字(126 バイト)まで許可されます。

数字フォーマットでは、10 桁の 10 進数字(4 バイナリバイト)まで許可されます。 したがって、-2,147,483,648~2,147,483,647 の範囲の 10 進数字で表示できます。

BB = 2147483647  or   BB = X'80000000'
BB = -2147483648 or   BB = X'7FFFFFFF'

英数字値

英数字の値は、アポストロフィで囲む必要があります。

AA ='SMITH'

英数字文字列内にアポストロフィが必要な場合は、2 つの連続したアポストロフィを使用します。間にスペースや文字は入れません。

JJ ='Smith''s Market'

16 進値

16 進値は、先頭に "X" を付け、値をアポストロフィで囲まなければなりません。

AA = X'E2D4C9E3C8'

16 進値は、偶数個の 16 進文字から成ります。

JJ = X'04D2'

継続行

ADASEL は 1~72 桁を入力行として扱います。 英数字または 16 進値を複数行にわたって継続させるには、全文字列の一番最後にのみ閉じるアポストロフィを指定します。 値は閉じるアポストロフィが見つかるまで連結されます。

英数字文字列では、アポストロフィに囲まれた先頭および最後のスペースは文字列の一部とみなされます。16 進文字列では、これらのスペースは無視されます。

例 1:英数字文字列

                                                                       7
1......................................................................2

       AA ='THIS IS AN EXAMPLE OF HOW TO CONTINUE AN ALPHANUMERIC VALU
E. KEY THROUGH COLUMN 72 AND CONTINUE IN COLUMN 1 OF THE NEXT
LINE.'

                                                                       7
1......................................................................2

       AA ='DO NOT CONTINUE AN ALPHA VALUE THIS WAY. LEADING AND
   TRAILING SPACES IN COLUMNS 1-72 ARE INCLUDED.'

上記の 2 番目の値は、次のように扱われます。

'DO NOT CONTINUE AN ALPHA VALUE THIS WAY. LEADING AND         TRAILING BLANKS 
IN COLUMNS 1-72 ARE INCLUDED.'

例 2:16 進英数字文字列

                                                                       7
1......................................................................2

           XX = X'C1C2C3C4C5C6C7C8C9
                  D1D2D3D4D5D6D7D8D9'

上記の 16 進値は、次のように扱われます。X'C1C2C3C4C5C6C7C8C9D1D2D3D4D5D6D7D8D9'

MU および PE メンバフィールドのインデックス

MU フィールドまたは PE のメンバフィールド

field-name がマルチプルバリューフィールド(MU)またはピリオディックグループ(PE)のメンバフィールドを参照する場合は、フィールド名の直後にインデックス(オカレンス番号)を付ける必要があります。

AAi "AA" は MU のフィールド名で、i はインデックスです。
BBk "BB" は PE のメンバフィールドで、k は PE のインデックスです。

i および k に有効な値は、Adabas 8 以上がインストールされ、拡張 MU および拡張 PE のカウントが要求されている場合は "1"~"65,534" の範囲、それ以外の場合は "1"~"191" の範囲になります。

注意:
ファイル中で 191 個を超える MU フィールドまたは PE グループを使用することは、そのファイルが明示的に許可されている必要があります(デフォルトでは許可されません)。 この場合には、ADADBS MUPEX 機能または ADACMP COMPRESS MUPEX および MUPECOUNT パラメータを使用します。

ファイル 12 で、フィールド JT は MU です。 次のステートメントは、JT の第 2 オカレンスが "Programmer" である全レコードのビフォーイメージを選択します。

SELECT BI FROM FILE 12
   WITH JT2 = 'Programmer'
   DISPLAY NA
END

フィールド SA は、PE のメンバです。 次のステートメントは、ピリオディックグループの第 3 オカレンスの SA が 35000 以上である全レコードを選択します。

SELECT ALL FROM 12
   WITH SA3 >= 35000
   DISPLAY NA SA3
END

PE 内の MU

PE 内に MU が含まれている場合は、両方(PE および MU)のインデックスを指定する必要があります。

ABk(i) "AB" は MU の名前、i は AB のオカレンス、k は AB が属する PE のオカレンスです。

ファイル 211 で、マルチプルバリューフィールド ST は PE のメンバです。 次のステートメントによって、ピリオディックグループの第 2 オカレンスの ST の第 3 オカレンスが "PAST DUE" である全レコードが選択されます。

SELECT ALL FROM FILE 211
   WITH ST2(3) ='PAST DUE'
   DISPLAY AA BB ST2(3)
END

Top of page

output-instruction

出力命令には DISPLAY、OUTPUT、SKIP、NEWPAGE などがあります。 少なくとも 1 つの出力命令が必要です。 出力命令は複数指定することができ、また、IF ステートメントの一部に出力命令を含めることもできます。 構文は次のとおりです。

graphics/util_adasel_output_instr.png

DISPLAY 命令については次のセクション、OUTPUT 命令については「OUTPUT 命令」のセクションで説明します。 SKIP および NEWPAGE に関する説明も参照してください。

DISPLAY 命令

DISPLAY は、出力レポートを DDDRUCK/DRUCK に書き込みます。 構文では 1 つ以上の出力タイプを指定します。 複数の出力タイプを指定するときは、それぞれを 1 つ以上のスペースで区切ります。

graphics/util_adasel_display.png

ここでは次の内容を表しています。

field-name フィールドの内容を表示します。 field-name は、FDT のエレメンタリフィールドの 2 文字の Adabas 名である必要があります。 field-name は、グループ、ピリオディックグループ(PE)、スーパーディスクリプタ、サブディスクリプタ、フォネティックディスクリプタまたはハイパーディスクリプタは参照できません。 しかし、マルチプルバリューフィールド(MU)や PE のメンバフィールドは参照できます。
MU および PE メンバフィールドのインデックスについては、「MU または PE フィールド」を参照してください。
HEX 出力のタイプに対応する 16 進数の値を表示します。 HEX は、出力不能な文字が出力に含まれる場合に特に便利です。 出力タイプとその後に続く HEX キーワードの間には 1 つ以上のスペースを空けてください。
ISN 選択した各レコードの ISN を表示します。
USERDATA C5 コマンドによってプロテクションログに書き込まれたレコードを表示します。 チェックポイントファイルのファイル番号は、SELECT ステートメントに指定する必要があります。
USERID レコードを追加、削除または更新したユーザーの ID を表示します。
USERTID レコードを追加、削除または更新したユーザーの TID(端末 ID)を表示します。
NOHEADER ヘッダーを省略します。
'text' テキスト文字列を表示します。

修正されたレコードを選択し、 テキスト文字列 "The following records were modified:" を表示します。 次に、フィールド AA と CC を 16 進フォーマットで、フィールド BB を FDT に定義されたフォーマットで表示します。

SELECT UPDATED RECORDS FROM FILE 117
   DISPLAY 'The following records were modified:'
   DISPLAY AA HEX BB CC HEX
END

新しいレコードごとにフィールド AA を表示します。また、そのレコードを追加したユーザーのユーザー ID と端末 ID も一緒に表示します。ヘッダーは省略します。

SELECT NEW RECORDS FROM FILE 211
   DISPLAY AA USERID USERTID NOHEADER
END

デフォルトフォーマット

フィールドはデフォルトフォーマットに従って表示されます。

英数字 入力したとおりに表示され、出力不能文字は空白に変換されて表示されます。
2 進 X'80000000' より小さい値は、符号なしの 10 進数(0~9)で表示されます。それ以外の値は 16 進表記で表示されます。
パック/アンパック 10 進数字(0~9)で表示されます。負の値は、先頭にマイナス符号が付加されます。

MU または PE フィールド

field-name が MU または PE のメンバを参照する場合は、インデックスをフィールド名の一部として指定することによって、1 つまたは一定範囲のオカレンスを表示できます。

DISPLAY AA5

Adabas 8 以降がインストールされ、ファイルに対する拡張 MU および拡張 PE のカウントがオンになっている場合、有効なインデックス値は "1"~"65534" の範囲になります。それ以外の場合の有効なインデックス値は "1"~"191" の範囲です。 また、インデックス範囲の上限として "N" を指定できます。ADASEL は範囲内の最初のオカレンスから開始して全オカレンスを表示します。

注意:
ファイル中で 191 個を超える MU フィールドまたは PE グループを使用することは、そのファイルが明示的に許可されている必要があります(デフォルトでは許可されません)。 この場合には、ADADBS MUPEX 機能または ADACMP COMPRESS MUPEX および MUPECOUNT パラメータを使用します。

DISPLAY ステートメントに PE 名を指定することはできません。 ピリオディックグループ全体を表示したいときは、グループ内の各フィールド名を指定しなければなりません。

PE 内に MU が含まれている場合は、両方(PE および MU)のインデックスを指定しなければなりません。 以下に示すインデックスフォーマットでは、ij が MU インデックス、kl が PE インデックスです。 AB は PE のメンバフィールドを表し、MB は PE のメンバフィールドである MU を表します。

インデックス 表示される値
MUi MU のオカレンス i
MUi-j MU のオカレンス ij
MUi-N オカレンス i から始まる MU の全オカレンスの値
ABk PE のオカレンス k のフィールド AB。フィールド AB は PE に属します。
ABk-l PE のオカレンス kl のフィールド AB
ABk-N オカレンス k から始まる PE の全オカレンスのフィールド AB
MBk(i) PE のオカレンス k にある MB のオカレンス i。MB は PE に属します。
MBk - l(i) PE のオカレンス kl にある MB のオカレンス i
MBk - l(i-j) PE のオカレンス kl にある MB のオカレンス ij
MBk - l(i-N) PE のオカレンス kl にある MB の全オカレンス(オカレンス i 以降)
MBk-N)(i - j) PE の全オカレンス(オカレンス k 以降)にある MB のオカレンス ij
MBk-N(i-N) PE の全オカレンス(オカレンス k 以降)にある MB の全オカレンス(オカレンス i 以降)

ファイル 12 には次の PE が含まれています。

レベル 名前 説明的な名前 フォーマット 長さ オプション オカレンス
1 JT JOB TITLE A 16 DE,MU 12
1 PA INCOME     PE 12
2 SA SALARY P 6 DE,MU 7
2 BO BONUS P 5    

下記は、ファイル 12 に対する正しい DISPLAY ステートメントを表しています。

SELECT NEW FROM FILE 12
   DISPLAY JT1
END
SELECT ALL FROM FILE 12
   DISPLAY JT1-5 SA1-5(1-N) BO1-5
END
SELECT ALL FROM FILE 12
   WITH JT3 ='Programmer' THRU 'Systems Analyst'
   DISPLAY JT3 SA3(1-N) BO3
END
SELECT UPDATED FROM FILE 12
   DISPLAY JT2-N SA2-N(1-N)
END
OUTPUT 命令

OUTPUT 命令によって、プロテクションログの非圧縮レコードが出力データセットに書き込まれます。

graphics/util_adasel_output.png

最高 20 個の出力データセットが使用できます。 出力データセットは EXPAn パラメータおよび DDEXPAn/EXPAn ジョブ制御ステートメントに指定します。

更新または削除された全レコードのビフォーイメージをデータセット DDEXPA1/ EXPA1 に書き込みます。

SELECT BEFORE IMAGE FILE 2
   OUTPUT TO EXPA1
END

出力レコードのフォーマット

出力レコードのフォーマットは、LOGINFO パラメータか EXTENDED パラメータのどちらが指定されているかに応じて異なります。 LOGINFO および EXTENDED は、追加情報の表示に使用されます。

下の表に、すべての出力レコードに共通のフィールドを示します。 カッコ内の値は、LOGINFO(バイト 32~38)または EXTENDED(バイト 64~70)が指定されている場合のフィールド位置を示しています。

バイト 説明
0~1 プロテクションログレコード長(バイナリ形式)
2~3 ゼロに設定(X'0000')
4~5
レコードのイメージタイプ
C'BI' ビフォーイメージ
C'AI' アフターイメージ
C'C5' ユーザーデータ
6~7 Adabas のファイル番号(バイナリ形式)
8~9(32~33、64~65) 非圧縮レコードの長さ(このフィールドおよび ISN を含む)
10~13(34~37、66~69) ISN(バイナリ形式)または C5 コマンドから得られたユーザーデータ
14 (38, 70) 圧縮解除プロテクションログデータの始まり

注意:
各ブロックの最初のレコードの先頭には、ブロック長を表す 2 バイトおよび空値または空白から成る 2 バイトが付加されます。

プロテクションログレコードのフィールドは、ファイルの FDT に定義された順番、長さおよびフォーマットに従って提供されます。 FDT に定義された長さよりも長い英数字フィールドは切り捨てられます。 FDT に定義された長さよりも長い数字フィールドがある場合は、ADASEL は異常終了します。

MU および PE には、オカレンス数を示す 1 バイトのバイナリフィールドがあります。

可変長フィールドのデフォルト長は 0 であり、先頭に値の長さ(このフィールドを含む)を示す 1 バイトのフィールドが付加されます。

NC 省略オプション付きで定義されたフィールドに空値が含まれていた場合、その空値は ADASEL によって空の値(フィールドのフォーマットに応じて空白またはゼロ)に圧縮解除されます。 このような NC フィールドの空値処理は、ADASEL にのみ当てはまります。

LOGINFO

LOGINFO を指定すると、各レコードに次の情報が追加されます。

バイト 説明
8~15 レコードを追加、削除または更新したユーザーの ID
16~19 レコードを追加、削除または更新したユーザーの TID の下位 4 バイト(コミュニケーション ID から取得、TP モニタのユーザーのみ)
20~23 レコードの存在するデータストレージ RABN(バイナリ形式)
24~27 レコードのデータプロテクションブロック番号(バイナリ形式)
28~31 更新タイムスタンプ(STCK の上位 4 バイトがバイナリ形式で格納される)

EXTENDED

EXTENDED を指定すると、各レコードに次の情報が追加されます。

バイト 説明
8~15 レコードを追加、削除または更新したユーザーの ID(ETID)
16~23 レコードを追加、削除または更新したユーザーの端末 ID の下位 8 バイト(コミュニケーション ID から取得、TP モニタのユーザーのみ)
24~27 レコードの存在するデータストレージ RABN(バイナリ形式)
28~31 レコードのデータプロテクションブロック番号(バイナリ形式)
32~35 更新タイムスタンプ(STCK の上位 4 バイトがバイナリ形式で格納される)
36
バックアウトインジケータ:  
C'B' レコードはバックアウトの結果です。
C' ' 通常のレコードです。
37 予約
38~41 トランザクション番号
42~63 予約

出力データセットの指示

EXPAn パラメータは出力データセットを識別します。 n の値は、DDEXPAn/EXPAn JCL ステートメントの値と一致する必要があります。 有効な出力データセット番号は 1~20 であり、先行ゼロは付加しません。

有効なステートメント:
OUTPUT TO EXPA3
無効なステートメント:
OUTPUT TO EXPA03

DD/EXPAn JCL ステートメントにも上記の規則が適用されます。

ファイル 1 の全レコードを選択します。 BA フィールドの内容が "SMITH" または "SMYTH" である非圧縮レコードを DDEXPA1/EXPA1 に書き込みます。 その他のレコードはすべて DDEXPA2/EXPA2 に書き込みます。

SELECT ALL RECORDS FROM FILE 1
IF BA ='SMITH' OR BA ='SMYTH'
   THEN OUTPUT TO EXPA1
ELSE
   OUTPUT TO EXPA2
END
NEWPAGE 命令と SKIP 命令

NEWPAGE 命令と SKIP 命令はページのフォーマットを制御します。

SELECT ALL RECORDS FROM FILE 1
   WITH BA EQUAL 'SMITH' THRU 'SMYTH'
IF BA CHANGES THEN DO
   NEWPAGE
   DISPLAY 'NEW NAME' BA BB BC
   DOEND
ELSE DO
   SKIP 2 LINES
   DISPLAY BA BB BC
   DOEND
END

Top of page