この章では、COBOL言語の概要を解説する。
COBOL(Common Business Oriented Language)は、事務処理および管理分野のデータ処理に 最も広く使用されているプログラミング言語である。
このCOBOL言語は、ANSI X3.23-1974 (ISO 1989-1978)で規定されたANSI および ISO COBOL標準、さらにANSI X3.23-1985 (IS 1989:1985)、ANSI X3.23a-1989 (IS 1989:1985/AM1)、およびANSI X3.23b-1993 (IS 1989:1985/AM2)で規定された現行のANSI および ISO COBOL標準の上位セットである。拡張された言語は、以下のとおり。
上記の拡張機能を組み合わせて、原始プログラム中で使用できる。
全機能を備えたANSI COBOL 1974および1985は下記の機能単位から構成される。
このCOBOLシステムは、上記の機能単位に関する米国商務省の全米標準・技術研究所 (National Institute of Standards and Technology)のCOBOLコンパイラ検査システム(CCVS)の 合格基準を満たしている。
この他にも、いろいろな面からCOBOL言語の機能拡張がなされている。
原始(ソース)文は
自由形式か
固定形式で記述する。
固定形式では、 COBOL正書法(source format)により、COBOL原始(ソース)レコードを72カラム毎に分ける。これらのカラムは以下のように使われる。
カラム1-6 | 一連番号 |
カラム7 | 標識領域 |
カラム8-11 | A領域 |
カラム12-72 | B領域 |
COBOL原始(ソース)レコードは80カラムまで使用できる。COBOLのシステムは、73カラムから80カラムまでを無視する。
原始プログラムの各行を識別するために、6桁の一連番号(sequence number)を使用する。
一連番号の1桁目に星印(*)または印字されない制御文字(ASCII文字の照合順序で空白文字よりも小さい文字)を書くと、その行は注記行として扱われ、リスト用のファイルまたは装置には出力されない。この機能を利用して出力したリスト・ファイルを入力用として使用して、コンパイルを行うことができる。
この機能はMFCOMMENTコンパイラ指令に影響される。
一連番号には計算機の文字集合の中の任意の文字を記述できる。
標識領域(indicator area)に星印(*)を書くと、その行は注記行となる。注記行は、見出し部の見出しより後ろならば、どこにでも置ける。注記行のA領域およびB領域には、ASCII文字集合の中の 任意の文字を記すことができる。
注記行は、見出し部の見出しより前に置くことができる。
標識領域に斜線(/)を書くと、その行が注記行となり、改ページされてから印刷が行われる。
標識領域に"D"または"d"を書くと、その行はデバッグ行となる。デバッグ行のA領域およびB領域には有効な任意のCOBOL文を記述できる。
標識領域にハイフン"-"を書くと、その行は前の行からの継続を表す。その場合、前の行の後続の空白は、文字定数の場合はその一部とみなされ、文字定数でない場合はないものとみなされる(詳細については、COBOLの概念の行の継続を参照)。
標識領域に"$"を書くと、その行は特殊行となり、指令やコンパイル対象行の選択条件文を記述できる。
節名および段落名は A領域から書き始め、終止符(.)と続く空白で止める。 レベル指示語FD、SD、CD及びRDは、A領域から書き始め、 B領域
またはA領域
から対応する記述を書き始める。レベル番号01及び77は、A領域から書き始め、B領域
またはA領域
から対応するデータ記述を書き始める。レベル番号02から49、66及び88は、B領域から書き始める。
レベル番号78は、A領域またはB領域から書き始めてよい。
見出し部中の注記項以外には、A領域とB領域に関して規則をいっさい設けない。
自由形式の原始コードが使う場合は、A領域とB領域の区別はない。自由形式の原始コードに関する詳細は、この章の次のセクションを参照。
1行のコーディング中に複数の文を記しても構わない。
000010 identification division. 000020 program-id. stock-file-set-up. 000030 author. MicroFocus. 000040 environment division. 000050 configuration section. 000060 source-computer. mds-800. 000070 object-computer. mds-800. 000075 special-names. console is crt. 000080 input-output section. 000090 file-control. 000100 select stock-file assign "stock.it" 000110 organization indexed 000120 access dynamic 000130 record key stock-code. 000140 data division. 000150 file section. 000160 fd stock-file record 32. 000170 01 stock-item. 000180 02 stock-code pic x(4). 000190 02 product-desc pic x(24). 000200 02 unit-size pic 9(4). 000210 working-storage section. 000220 01 screen-headings. 000230 02 ask-code pic x(21) value "stock code < >". 000240 02 filler pic x(59). 000250 02 ask-desc pic x(16) value "description <". 000260 02 si-desc pic x(25) value " >". 000270 02 filler pic x(39). 000280 02 ask-size pic x(21) value "unit size < >". 000290 01 enter-it redefines screen-headings. 000300 02 filler pic x(12). 000310 02 crt-stock-code pic x(4). 000320 02 filler pic x(80). 000330 02 crt-prod-desc pic x(24). 000340 02 filler pic x(51). 000350 02 crt-unit-size pic 9(4). 000360 02 filler pic x. 000370 procedure division. 000380 sr1. 000390 display space. 000400 open i-o stock-file. 000410 display screen-headings. 000420 normal-input. 000430 move space to enter-it. 000440 display enter-it. 000450 correct-error. 000460 accept enter-it. 000470 if crt-stock-code = space go to end-it. 000480 if crt-unit-size not numeric go to correct-error. 000490 move crt-prod-desc to product-desc. 000500 move crt-unit-size to unit-size. 000510 move crt-stock-code to stock-code. 000520 write stock-item invalid key go to correct-error. 000530 go to normal-input. 000540 end-it. 000550 close stock-file. 000560 display space. 000570 display "end of program". 000580 stop run. <---->|<--><---------------------------------------------------------> | | | | | | | +-- カラム 12-72 - B領域 | | +-- カラム 8-11 - A領域 | +-- カラム 7 - 標識領域 +-- カラム 1-6 - 一連番号
図1-1 正書法を示すプログラム・コーディング例
自由形式は、SOURCEFORMAT"FREE"指令によって選択される。
始めの6文字は一般行の一部で、COBOL原始文に含まれるものとして扱われる。1カラム目は、 以下のような標識の役目をする。
* | 注記行 |
/ | リストファイルで改ページしてから始まる注記行 |
Dまたはd | 空白が後続する。デバッグ行 |
$ | 特殊行(指令、条件付きコンパイル等) |
その他の文字 | 一般の行 |
継続行はない。英数字定数の継続は、"A" & "B"のように連結して行う。
A領域とB領域の区別はない。
固定の右マージンはないが、実際上は、行の長さは1バイト文字では、最大250文字、また 2バイト文字では、最大125文字までの制限がある。
注記は段落見出しとして同じ行内におさめ、次の行に続けられない。