COBOL言語の「ACCEPT文」の使い方を分かり易く解説 | 用語辞典
COBOL(コボル)言語の予約語ACCEPTを使った命令文の書き方とは
COBOL(コボル)言語のACCEPT文とは?
COBOL(コボル)には、様々な予約語が用意されていますが、その中のACCEPTは、その意味の通りデータを受け取ったり、ハードウェア装置の時刻や年月日などを取得して格納する機能を持ちます。(ACCEPTとは、受け入れる・受納するという意味です。)
書き方1:(データの取得)
・ACCEPT 一意名(受け取りデータ項目) FROM 呼び名(取得先指定)
使用例1:
・ACCEPT CONSOLE-INPUT-DATA FROM CONSOLE
・ACCEPT SYSIN-INPUT-DATA FROM SYSIN
※CONSOLEはコンソール(操作卓)からデータを取得し、SYSINは入力されたデータを取得します。
書き方2: (ハードウェア装置から日時データなどを取得)
・ACCEPT 一意名(受け取りデータ項目) FROM データ形式(DATE・DAY・TIMEなど)
使用例2:
・ACCEPT DATE-DATA FROM DATE (現在の年月日を取得します。)
・ACCEPT DAY-DATA FROM DAY (年と1月1日からの経過日を取得します。)
・ACCEPT TIME-DATA FROM TIME (現在の時刻を取得します。)
・ACCEPT DOW-DATA FROM DAY-OF-WEEK (現在の曜日を取得します。)
※受け取れるデータの形式は、下記「日時を取得する場合の形式一覧」をご覧ください。
COBOL(コボル)言語で、日時を取得する場合の形式一覧
※表示例は、2017年01月01日01時01分にデータを取得して出力したと仮定した場合になります。
※DAYは、「yy」:年の下2桁と、「ddd」:1月1日からカウントした現在の経過日数3桁が格納されます。(最大366まで)
※DAY-OF-WEEKは、現在の曜日を数値で表します。(月曜日:1、火曜日:2、水曜日:3、木曜日:4、金曜日:5、土曜日:6、日曜日:7)
※上記データ形式、「DATE、DAY、D-O-W」の書式に使われている「y」は年、「m」は月、「d」は日を表しています。
※上記データ形式、「TIME」の書式に使われている「hh」は時、「mm」は分、「ss」は秒、「ms」はミリ秒を表しています。
ACCEPT文のCOBOL言語におけるルールについて
1. ACCEPT文は、少量のデータを受け取る際に使われます。大量のデータ処理をすることはできませんので注意しましょう。
2. 書き方1のように、呼び名を指定する場合、ACCEPTで指定した呼び名のハードウェア装置を環境部内の「特殊名段落」で指定して関連付ける必要があります。この時、FROMの指定を省略した場合、ハードウェアの標準装置(SYSIN)が選択されたと認識されます。
3. ACCEPT文で、CONSOLE(コンソール)などから入力データを受け取る際は、作業場所節(WORKING-STORAGE SECTION)で設定した数値分(文字数)のデータを受け取ります。
4. データ取得先がCONSOLEと設定されているACCEPT文が実行された場合、あらかじめ登録したメッセージを自動で読み込み表示します。
その際、ACCEPT文はプログラム処理を中断し、キー入力が完了するまでプログラムの処理を待機状態にします。入力が完了すると、入力されたデータを受け取り項目へ格納し次の処理に移行します。
5. 書き方2の形式で受け取れるデータは、ACCEPT文と一部の関連命令文・関数内でのみ有効なデータなため、データ部など他のプログラム処理内で呼び出して使うことはできません。
6. 書き方2の、DAYやDATEなどのデータ形式は、基本的に西暦下2桁までしか取得できません。4桁の西暦を表示させたい場合は、「CURRENT-DATE関数」を使うことで、取得することが可能です。
COBOL(コボル)言語のACCEPT文を使う上での注意点
1. ACCEPT文は、取得先からデータを受け取る際、指定された形式(文字や数値の形式)が正しいかどうかの検査を行ないません。
2. ACCEPT文は、作業場所節(WORKING-STORAGE SECTION)の受取りデータ項目で指定した形式以外のデータを受け取ると、正常にデータを取得できない(エラーになる)場合があります。
そこで、事前に入力された形式のチェックをIF文などで指定した上で処理を分岐させる方法があります。(COBOL言語での分岐の記述方法とACCEPT文の記述方法は1番上の画像で確認できます。)
3. 基本事項・ルールでも記載しましたが、ACCEPT文は作業場所節の中で指定した数値分(文字数)のデータを、指定のデータ項目へ格納します。ですが、受け取ったデータが指定数以上の大きさで送られてきた場合は、左端のデータから指定数だけを取得し残りは切り捨てます。
4. 上記とは逆に、指定の大きさ以下のデータが送られてきた場合、数字項目ならば0を、文字項目ならば空白が挿入されます。(例えば、「PIC 999」と指定した数字項目に数値1という桁数を満たさないデータが送られた場合、「001」というデータとして格納します。
また、「PIC XXX」と指定した文字項目に文字扱いの1というデータが送られてきた場合、1□□というデータとして格納します。) ※□は空白です。 文字項目の場合、入力された場所の情報がそのまま送られてきます。ですので、入力した箇所以外に空白が挿入されます。
5. ACCEPT文は、文字項目で受け取るのが一般的です。数字項目も扱えない訳ではありませんが、処理の違いを確認する必要があります。
ACCEPT文を使ったCOBOL(コボル)プログラムの活用法
COBOL(コボル)言語でちょっとしたデータの受取りに非常に便利なACCEPT文ですが、データ部(DATA DIVISION)内の画面節(SCREEN SECTION)を活用することで、画面をコントロールする機能も備わっています。そこで今回はサンプルとして簡易な入力装置をご紹介します。
- IDENTIFICATION DIVISION.
- PROGRAM-ID. ACCEPT-SAMPLE03.
- ENVIRONMENT DIVISION.
- CONFIGURATION SECTION.
- SPECIAL-NAMES.
- CURSOR IS CURSOR-POSITION.
- CRT STATUS IS CRT-DATA.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- 01 CURSOR-POSITION PIC 9(6).
- 01 CRT-DATA PIC 9(4).
- 01 WARNING PIC X(5) VALUE "INPUT".
- 01 INPUT-RESULT PIC X(5).
- SCREEN SECTION.
- 01 CONSOLE-SCLEEN
- LINE 12 COLUMN 37.
- 05 WARNING-STRING PIC X(10)
- FROM WARNING.
- 05 INPUT-RESULT-SCREEN
- LINE 14 COLUMN 37 PIC X(5)
- TO INPUT-RESULT.
- PROCEDURE DIVISION.
- MOVE "014037" TO CURSOR-POSITION.
- ACCEPT CONSOLE-SCLEEN
- ON EXCEPTION DISPLAY "ELL...".
- STOP-RUN.
このプログラムは、起動すると画面中央にINPUTという文字と文字入力欄が5箇所分でてきて、入力された文字を受け取ります。画面節をコントロールするACCEPT文でも、通常時と同じく入力データを受け渡す役割をもっています。
それを利用し、キーボードなどの入力装置から入力データを取得します。このような、ファイルからデータを呼び出す必要のない簡単な処理をさせるのに、ACCEPT文は向いています。カーソルなどの動きも管理することができますので、キー入力を促す効果も期待できます。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
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句」は便利?使用方法を学びましょう|用語辞典