CodeZine(コードジン)

特集ページ一覧

COBOLプログラミング ファイル処理編その1

OpenCOBOLを使用したファイル処理の基本プログラミング

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/07/10 14:00

ダウンロード サンプルコード (769.0 B)

目次

コマンドライン引数の利用方法

 前述したコーディング例では、ファイル名をプログラム内部にハードコーディングしていました。通常は、実行時にコマンドラインで引数を設定してファイル名などを動的に取得するのが一般的な機能です。OpenCOBOLでもコマンドライン引数を利用できます。

引数を利用するための特別な変数

 OpenCOBOLでは、コマンド引数を利用するために特別な変数があります。この変数は、データ部での定義は不要です。

  • ARGUMENT-NUMBER…引数の個数を取得する
  • ARGUMENT-VALUE…各引数の値を取得する

コーディング例

 コマンドラインから引数を指定し、引数の内容を表示するプログラムのコーディング例は次のとおりです。

引数を利用するプログラムのコーディング例
001000 IDENTIFICATION DIVISION.
001100 PROGRAM-ID.    SAMPLE1.
001200 AUTHOR. FUSE KAKO.
001300 ENVIRONMENT DIVISION.
001400 DATA DIVISION.
001500 WORKING-STORAGE SECTION.
001600   77 ARG PIC 99.
001700   77 CNT PIC 99.
001800   77 DATA-LEN PIC 99.
001900   77 LF PIC X VALUES " ".
002000 01 DISP-NAME.
002100    03 X OCCURS 256 PIC X.
002200 PROCEDURE DIVISION.
002300 ACCEPT ARG FROM ARGUMENT-NUMBER.
002400 PERFORM VARYING CNT1 FROM 1 BY 1 UNTIL CNT > ARG
002500     ACCEPT DISP-NAME FROM ARGUMENT-VALUE
002600     PERFORM VARYING CNT FROM 1 BY 1 UNTIL X(CNT) = " "
002700         DISPLAY X(CNT) WITH NO ADVANCING
002800     END-PERFORM
002900     DISPLAY LF
002800 END-PERFORM.
002900 DISPLAY "HIT ANY KEY AND PROGRAM END".
003000 ACCEPT CMD.
003100 STOP RUN.

各機能の説明

 引数の取得をする変数はACCEPT命令を使用して通常の変数に代入します。上記コーディング例では、引数の個数をARGに、それぞれの引数の値をDISP-NAMEに代入し利用しています。DISP-NAMEは引数全体が入力できるように、十分な桁数を取っておいてください。

 順序番号002200で引数の個数をプログラムで定義しているARGに代入しています。順序番号002300~002800で、引数の個数分を繰り返し実行するようにして、コマンドラインで指定した引数すべてを表示するようにしています。

 順序番号002400では引数の内容をプログラムで定義しているDISP-NAMEに代入しています。特に指定がない場合は、前回取得した引数の次の引数を取得することがでます。

 順序番号002500~002700で代入した文字を1キャラクタずつ表示しています。DISP-NAMEに空白が現れたら表示を打ち切り、改行をして、次の引数を取得するようにしています。

コンパイルおよび実行

 上記サンプルを適当なファイル名で作成してコンパイルを行い、実行ファイルを作成します。

 以下は、ソースファイル名をsample1.cobとした場合の例です。

コンパイル方法
/usr/local/bin/cobc -x sample1.cob

 コンパイルが問題なければ実行してみます。

実行方法
[e-fuse@]$ ./sample1 test1 line2 fusekako
test1
line2
fusekako
HIT ANY KEY AND PROGRAM END
0
[e-fuse@]$

 それぞれ指定した引数が表示されることを確認できました。

まとめ

 今回は基本的な処理である「DISK to DISKプログラム」でサンプルプログラムをコーディングしOpenCOBOLの機能を確認しました。合わせてコマンドライン引数の利用方法についての機能も確認しました。

 Linuxでは、これら単純なファイル処理はシェルやawkなどのツールで処理してしまうことがほとんどで、単独ではCOBOLでコーディングすることはありません。とはいえ、一連の業務処理をCOBOLで作成している場合は、メンテナンス方法の統一からあえてCOBOLで作成することも少なくはないです。実際のCOBOLプログラミングでは、外部処理を実行したり、多数のファイルやテーブルを処理したりで、このような単純な機能ばかりではありませんが、単純な機能の積み重ねで複雑な処理を理解することができると思います。

 次回は、マッチング処理について、サンプルプログラムを作成しながら解説する予定です。

参考



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:COBOLプログラミング

著者プロフィール

  • 布施 榮一(ふせえいいち)

    布施加工有限会社 代表取締役 布施加工って何しているとこなの?? 実はIT屋さんだったりします(笑) Linux基盤各種サービスの設計構築およびコンサルティングをやっています。 ブログもちょこちょこっと書いてます。 Alinous-Core 正規販売代理店

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5