Index
SORT

【用途】
データの並び替え命令。私は業務で一度も使用したことなし
情報処理試験ではよく出題されるため掲載はするが、通常は処理前にSORTを済ませておく

【使用例】
・IN-FILEをSIMEICDで昇順に並び替え、WK-FILEとして使用しなさい

WORKING-STORAGE  SECTION.

SD SORT-FILE.
01 SORT-REC.
  02 S-SIMEICD …
    ・
    ・
PROCEDURE DIVISION.

   SORT SORT-FILE ON ASCENDING KEY S-SIMEICD
    USING  IN-FILE
    GIVING  WK-FILE.

※文法提供していただいたTさん、ありがとうございました。

MERGE文


機能

MERGE(併合)文は,指定したキーの組に従って同じにそろえられたレコードをもつ二つ以上のファイルを併合する.

また,処理中併合した順序でレコードを出力手続き又は出力ファイルに移す.


一般形式

【書き方】
Image


構文規則

(1)

MERGE文(併合)は,宣言部分を除く手続き部のどこに現れてもよい.

(2)

ファイル名-1は,データ部の整列併合用ファイル記述項で定義しておかなければならない.

(3)

ファイル名-1のファイルが固定長レコードを含むときは,ファイル名-2及びファイル名-3のファイルに含まれるレコードの大きさは,ファイル名-1に対して記述した最大レコードより大きくてはならない.

(4)

ファイル名-1,ファイル名-2,ファイル名-3及びファイル名-4のレコード記述の中にCHARACTER TYPE句の指定されたデータ記述項があってはならない.

(5)

データ名-1は,キー項目であり,次の制限に従わなければならない.
(a)

データ名-1の項目は,ファイル名-1のレコード記述中に書かなければならない.

(b)

データ名-1は,修飾してもよい.

(c)

データ名-1の項目は,可変反復データ項目を含む集団項目を指定してはならない.

(d)

ファイル名-1に二つ以上のレコード記述があるとき,キー項目は,ただ一つのレコード記述に書かなければならない.一つのレコード記述項中のキー項目と同じ文字位置が,そのファイルのすべてのレコード中のキーとみなされる.

(e)

データ名-1の項目は,OCCURS(反復)句を含んでいたり,OCCURS句を含む項目に従属していたりしてはならない.

(f)

データ名-1は,2進,LEADING若しくはSEPARATE指定のSIGN句付き数字項目,日本語項目又は日本語編集項目を指定してはならない.

(g)

データ名-1は,ブール項目であってはならない.

(h)

(6)

ファイル名-2,ファイル名-3及びファイル名-4は,データ部中の整列併合用ファイル記述項以外のファイル記述項に記述しなければならない.

(7)

一つのMERGE文で指定した二つのファイルが,同一の複数ファイルリール上にあってはならない.

(8)

一つのMERGE文に,同じファイル名を2回以上書いてはならない.

(9)

MERGE文中のファイル名の組合せを,同じSAME AREA句,SAME SORT AREA句又はSAME SORT-MERGE AREA句に指定してはならない.同じSAME RECORD AREA句に指定可能なMERGE文のファイル名は,GIVING指定に関連するファイル名だけとする.

(10)

THRUとTHROUGHは同義語であり,どちらを書いてもよい.

(11)

ファイル名-4のファイルが固定長レコードを含むときは,ファイル名-1のファイルに含まれるレコードの大きさは,ファイル名-4に対して記述した最大レコードより大きくてはならない.

(12)

符号系名-1は,環境部の特殊名段落でNATIVEに対応付けられたものでなければならない.

(13)

ファイル名-2,ファイル名-3及びファイル名-4は,大記憶装置の順ファイルでなければならない.


一般規則

(1)

MERGE文は,ファイル名-2及びファイル名-3のファイルに含まれるすべてのレコードを併合する.

(2)

ファイル名-1のファイルが固定長レコードだけを含むときは,その固定長よりも少ない文字位置を含むファイル名-2又はファイル名-3のファイル中のレコードは,そのレコードをファイル名-1のファイルに引き渡すとき,そのレコードの最後の文字の後の最初の文字位置から始まる右側を空白で満たされる.

(3)

KEYに続くデータ名は,KEY指定での区切り方とは関係なく,強さの順に左から右へ並べる.
(a)

ASCENDING(昇順)指定を記述した場合,比較の規則に従って,キー項目の値の小さい方から大きい方への順に併合される.

(b)

DESCENDING(降順)指定を記述した場合,比較の規則に従って,キー項目の値の大きい方から小さい方への順に併合される.

(4)

比較条件中の各作用対象の比較に対する規則に従い,一つのデータレコードのすべてのキー項目の内容が,一つ以上の他のデータレコードの対応するキー項目の内容と等しいとき,次の順序で引き取る.
(a)

MERGE文で指定した関連する入力ファイルの順.

(b)

一つの入力ファイルに関連するそのようなすべてのレコードは,他の入力ファイルからのレコードの引き取りの前に引き取られる.

(5)

文字のキー項目の比較に適用する文字の大小順序は,MERGE文の実行開始時,次の優先順位に従う.
(a)

初めに,MERGE文中にCOLLATING SEQUENCE(文字の大小順序)指定が記述してあればそれによって決まる文字の大小順序.

(b)

次に,PROGRAM COLLATING SEQUENCE(プログラムの文字の大小順序)句で決まる文字の大小順序.

(6)

ファイル名-2,ファイル名-3のファイル上のレコードが,MERGE文のASCENDING KEY指定又はDESCENDING KEY指定で書かれたとおりに並んでいなければ,併合操作の結果は規定しない.

(7)

ファイル名-2及びファイル名-3のファイル中のすべてのレコードは,ファイル名-1のファイルに移される.MERGE文の実行時,ファイル名-2及びファイル名-3のファイルは,開いた状態であってはならない.ファイル名-2及びファイル名-3の各ファイルに対して,MERGE文の実行によって次の動作がなされる.
(a)

INPUT指定付きのOPEN文を実行したかのように,初期処理を行う.出力手続きを指定すると,この初期処理は,出力手続きに制御が渡る前に行われる.

(b)

NEXT指定及びAT END指定付きのREAD文を実行したかのように,レコードを引き取り,併合操作に引き渡す.

(c)

選択指定なしのCLOSE文を実行したかのように,終了処理を行う.出力手続きを指定すると,この終了処理は,出力手続き中の最後の文に制御が渡った後まで行われない.これらの暗黙の機能の動作中に,関連するUSE AFTER STANDARD EXCEPTION手続きがあれば実行される.

(8)

出力手続きは,ファイル名-1のファイルから併合された順にRETURN文によって一時に一つだけ使用可能とされるレコードを選択し,修正し,複写するのに,必要とされる手続きから構成されることができる.出力手続き中のCALL文,EXIT文,GO TO文及びPERFORM文によって制御が移行した結果として実行されるすべての文,及び出力手続きの範囲中の文の実行の結果として実行される宣言手続き中のすべての文を,出力手続きの範囲に含む.出力手続きの範囲は,MERGE文,RELEASE文又はSORT文の実行を引き起こしてはならない.

(9)

出力手続きを指定すると,MERGE文の実行中,出力手続きに制御が移る.コンパイラは,出力手続きの最後の節の終わりに復帰機構を挿入する.出力手続きの最後の文を実行し終わると,復帰機構によってMERGE文の次の実行文に制御が移る.出力手続きに制御が移ったときには,レコードは完全に整列されていて,RETURN文によって順番に引き取れるようになる.

(10)

出力手続きの実行中に,ファイル名-2若しくはファイル-3のファイルを操作する文又はファイル名-2若しくはファイル名-3に関係付けられたレコード領域を呼び出す文を実行してはならない.MERGE文を実行している間に暗に呼び出されるUSE AFTER STANDARD EXCEPTION手続きの実行中に,ファイル名-2,ファイル名-3若しくはファイル名-4のファイルを操作する文又はファイル名-2,ファイル名-3若しくはファイル名-4に関係付けられたレコード領域を呼び出す文を実行してはならない.

(11)

GIVING指定を記述すると,MERGE文に対して出力手続きを指定したのと同じように,併合されたすべてのレコードが,ファイル名-4のファイルに書かれる.MERGE文の実行開始時,ファイル名-4のファイルは,開いた状態であってはならない.ファイル名-4の各ファイルに対して,MERGE文の実行によって次の動作がなされる.
(a)

OUTPUT指定付きのOPEN文を実行したかのように,初期処理を行う.

(b)

併合されたレコードを引き取り,選択句なしのWRITE文を実行したかのように,ファイル上に書く.

(c)

選択指定なしのCLOSE文を実行したかのように,終了処理を行う.


これらの暗黙の機能により,それらに関連するUSE AFTER STANDARD EXCEPTION手続きがあれば実行させる.しかし,そのようなUSE手続きの実行が,ファイル名-4のファイルを操作する文又はファイル名-4に関係付けられたレコード領域を呼び出す文を実行させてはならない.ファイルの外部で定義された区域を超えて最初に書き出そうとした場合,そのファイルに対して指定されたUSE AFTER STANDARD EXCEPTION手続きが実行され,そのUSE手続きから制御が戻るか又はそのようなUSE手続きが指定されていなければ,選択指定なしのCLOSE文を実行したかのようにそのファイルの終了処理を行う.

(12)

ファイル名-4のファイルが固定長レコードだけを含むときは,その固定長よりも少ない文字位置を含むファイル名-1のファイル中のレコードは,そのレコードがファイル名-4のファイルに引き取られるとき,そのレコードの最後の文字の後の最初の文字位置から始まる右側を空白で満たされる.


Index