COBOL言語の「DELETE文」とは? 削除の使い方を理解しよう | 用語辞典
COBOL(コボル)言語の予約語DELETE文を使った命令文の書き方とは
COBOL(コボル)言語のDELETE文とは?
COBOL(コボル)には、様々な予約語が用意されていますが、その中のDELETE文は指定したファイルのレコードを論理的に取り除く機能を持ちます。
本記事では、COBOLにおけるDELETE文について基本的な使い方やルール、注意点などをご紹介します。
書き方:
DELETE ファイル名 RECORD
[INVALID KEY 無条件文1]
[NOT INVALID KEY 無条件文2]
END-DELETE.
DELETE文を使用してファイルのレコードを取り除くためには、ファイルのオープンモードを「入出力両用モード(I-O)」で指定する必要があります。
以下にDELETE文を使用して、指定した相対ファイルの相対キーのレコードを取り除く簡単なプログラムを紹介します。
使用例:(1/2)
使用例:(2/2)
実行結果:
サンプルでは、ACCEPT文で書き込むデータを入力してWRITE文で相対ファイルを作成し、指定した相対キー(2)に対してDELETE文で削除処理を実施しています。
その後にREAD文でファイルを読み込むと、相対キー(2)に紐づくレコードが削除されていることがわかります。
DELETE文のCOBOL(コボル)言語における基本事項やルールについて
- DELETE、ファイル名、RECORD間の空白や改行有無は自由に設定できます。
- DELETE文で指定したファイルは、ファイルのオープンモードを必ず入出力両用モード(I-O)で指定する必要があります。
- 順呼出し法ファイルでは、DELETE文を実行する前に、必ずREAD文が成功している必要があります。
- 乱呼出し法または動的呼出し法の相対ファイルは、相対キー項目により指定されたレコードをファイルから論理的に取り除きます。
- 乱呼出し法または動的呼出し法の牽引ファイルは、主レコードキー項目により指定されたレコードをファイルから論理的に取り除きます。
- DELETE文が成功すると、指定されたレコードは論理的に取り除かれて、以後呼び出すことはできません。
- DELETE文を実行しても、ファイル位置指示子には影響を与えません。
COBOL(コボル)言語のDELETE文を扱う上での注意点
- DELETE文で指定するファイルは、順ファイルであってはなりません。
- 順呼出し法ファイルに対しては、INVALID KEY(無効キー)及びNOT INVALID KEY指定を記述してはいけません。
- 相対ファイル、牽引ファイルはファイル管理段落(FILE-CONTROL)で指定するファイル名やファイルに対する定義などを正しく指定しないと、DELETE文が失敗する場合もあります。
DELETE文を使ったCOBOL(コボル)プログラムの活用法
ファイルから指定したレコードを論理的に取り除くときに便利なDELETE文ですが、ACCEPT文を活用することでファイルの作成、レコードの削除、レコードの読み込みなどを指定して、独立した処理を行うことができます。
以下に紹介するサンプルでは、ACCEPT文で入力した値によって処理が分岐して、相対ファイルの作成、レコードの削除、レコードの読み込みの処理をそれぞれ行います。
また、DELETE文によるレコードの削除処理も、ACCEPT文による相対キーの指定が可能となっています。
- IDENTIFICATION DIVISION.
- PROGRAM-ID. DELETE_SAMPLE02.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT TEST-FILE ASSIGN TO "test.txt"
- ORGANIZATION IS RELATIVE
- ACCESS MODE IS DYNAMIC
- RELATIVE KEY IS KEY-NUM
- FILE STATUS IS FILE-STATUS.
- DATA DIVISION.
- FILE SECTION.
- FD TEST-FILE.
- 01 TEST-RECORD.
- 05 TEST-NUM PIC 9(3).
- 05 DATA-1 PIC X(5).
- WORKING-STORAGE SECTION.
- *>ファイルステータス
- 01 FILE-STATUS PIC XX.
- *>相対キー
- 01 KEY-NUM PIC 99.
- *>レコードを5件までに設定
- 01 TEST-RECORD-NUM PIC 99 VALUE 5.
- *>読み込み判定処理
- 01 HANTEI PIC X.
- 88 READ-CONTINUE VALUE "1".
- 88 READ-END VALUE "2".
- *>実行処理指定(1:ファイル作成 2:ファイルの読み込み 3:レコードの削除)
- 77 INPUT-NUM PIC 9 VALUE ZERO.
- PROCEDURE DIVISION.
- DISPLAY "実行する処理を入力してください(1:ファイル作成 2:ファイルの読み込み 3:レコードの削除)".
- ACCEPT INPUT-NUM.
- EVALUATE INPUT-NUM
- WHEN 1
- OPEN OUTPUT TEST-FILE
- WHEN 2
- OPEN INPUT TEST-FILE
- WHEN 3
- OPEN I-O TEST-FILE
- WHEN OTHER
- DISPLAY "プログラムの終了"
- STOP RUN
- END-EVALUATE.
- DISPLAY "FILE-STATUS : "FILE-STATUS.
- IF FILE-STATUS = "00"
- THEN
- EVALUATE INPUT-NUM
- WHEN 1
- PERFORM WRITE_RECORD
- WHEN 2
- PERFORM READ_RECORD
- WHEN 3
- PERFORM DELETE_RECORD
- WHEN OTHER
- CONTINUE
- END-EVALUATE
- ELSE
- STOP RUN
- END-IF.
- DISPLAY "プログラム終了".
- CLOSE TEST-FILE.
- STOP RUN.
- *>*****レコード書き込み処理*******
- WRITE_RECORD SECTION.
- DISPLAY "WRITE_RECORD START".
- MOVE 1 TO KEY-NUM
- PERFORM TEST-RECORD-NUM TIMES
- DISPLAY "INPUT TEST-NUM 9(3):"
- ACCEPT TEST-NUM
- DISPLAY "INPUT DATA-1 X(5):"
- ACCEPT DATA-1
- WRITE TEST-RECORD
- INVALID KEY
- DISPLAY "無効な値です"
- NOT INVALID KEY
- DISPLAY "書き込み成功:"TEST-NUM","DATA-1
- END-WRITE
- ADD 1 TO KEY-NUM
- END-PERFORM
- EXIT.
- *>*****レコード読み込み処理*******
- READ_RECORD SECTION.
- DISPLAY "READ_RECORD START".
- SET READ-CONTINUE TO TRUE.
- PERFORM UNTIL READ-END
- READ TEST-FILE NEXT
- AT END
- SET READ-END TO TRUE
- NOT AT END
- DISPLAY TEST-NUM","DATA-1
- END-READ
- END-PERFORM.
- EXIT.
- *>*****レコード削除処理*******
- DELETE_RECORD SECTION.
- DISPLAY "DELETE_RECORD START".
- DISPLAY "INPUT NO :" WITH NO ADVANCING.
- ACCEPT KEY-NUM.
- DISPLAY "KEY-NUM : "KEY-NUM.
- DELETE TEST-FILE RECORD
- INVALID KEY
- DISPLAY "削除失敗:"KEY-NUM
- NOT INVALID KEY
- DISPLAY "削除成功:"KEY-NUM
- END-DELETE.
- EXIT.
実行結果1:ファイル作成
実行結果2:レコードの削除
実行結果3:レコードの読込み
サンプルでは、初めに相対ファイルを作成し、次にレコード削除処理を実行してACCEPT文による相対キーを指定してレコードを論理的に取り除いています。
再度プログラムを実行してファイルを読込むと、指定した相対キーのレコードが削除されていることがわかります。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典