COBOLのFILLERの使い方とは?未使用領域を上手に管理する基本テクニック
生徒
「COBOLで使わないデータの部分ってどうやって扱えばいいんですか?」
先生
「そんなときには、FILLER(フィラー)という仕組みを使うことで、未使用領域を上手に管理できますよ。」
生徒
「FILLERって名前だけ聞くと、何かを埋める感じがしますけど、どういうふうに使うんですか?」
先生
「とても良い感覚ですね。FILLERの役割や使い方を、具体例を交えてわかりやすく説明しますね!」
1. FILLER(フィラー)とは何か?
COBOL(コボル)のプログラムでは、データの構造を細かく定義することができます。例えば、名前・年齢・住所などの項目を扱う場合、それぞれの項目に対して領域を用意します。
しかし、データの中には「使わないけれど形式上存在している部分」というものがあります。たとえば、昔のシステムで使われていたけれど今は不要な欄や、固定長のファイルにおける空白部分などです。
このような「使わないけれど、無視はできないデータの領域」を扱うために登場するのが、FILLER(フィラー)です。
FILLERとは、名前を付けずに使わない領域を定義するためのキーワードです。
2. FILLERの使い方(基本例)
ここでは、FILLERの基本的な使い方を、やさしい例で見てみましょう。
以下は、1行のデータが20文字あり、そのうちの最初の5文字は使わず、次の10文字だけを名前として使いたい場合の定義です。
01 CUSTOMER-DATA.
05 FILLER PIC X(5).
05 CUSTOMER-NAME PIC X(10).
05 FILLER PIC X(5).
この例では、CUSTOMER-DATAというデータ構造の中に、3つの項目を定義しています。そのうち、CUSTOMER-NAMEだけが名前を持ち、他の2つのFILLERは名前がありません。
つまり、「前の5文字」と「後ろの5文字」は使わず、真ん中の10文字だけを使用するという形になります。
3. FILLERを使う理由とメリット
「使わないなら、定義しなくてもいいのでは?」と思うかもしれません。でも、COBOLではデータの形式(構造)をきちんと定義しないと、他の処理と整合性がとれなくなります。
たとえば、他の会社やシステムから渡されたデータが次のような形式で決まっていたとします。
- 1〜5文字目:不要
- 6〜15文字目:顧客名
- 16〜20文字目:不要
この場合、「不要な領域」をスキップする必要があるため、FILLERを使って正確な位置を合わせてあげるのです。
これにより、プログラムが他のシステムと正しく連携できるようになります。
4. FILLERを複数使うとどうなる?
COBOLでは、同じレベル番号内に複数のFILLERを定義することができます。
ただし、FILLERは名前を持たないため、プログラムの中で参照することはできません。あくまで「この領域は使わないよ」と示すだけのものです。
以下は、複数のFILLERを使った例です。
01 PRODUCT-DATA.
05 FILLER PIC X(3).
05 PRODUCT-CODE PIC X(6).
05 FILLER PIC X(2).
05 PRICE PIC 9(5)V99.
この例では、「PRODUCT-CODE」と「PRICE」だけを使い、他の領域はFILLERでスキップしています。
5. FILLERの注意点
FILLERを使うと便利ですが、いくつか注意点があります。
- FILLERは参照できない:名前がないため、DISPLAY文などで中身を表示することはできません。
- FILLERに重複名はない:名前を持たないため、複数書いても競合しません。
- FILLERの位置に注意:定義の順番によって、データの対応位置が変わるため、並び順を正確に。
6. FILLERを使った実践的なサンプルと出力結果
ここでは、実際にFILLERを使ってデータを表示しようとした例と、出力結果を紹介します。
IDENTIFICATION DIVISION.
PROGRAM-ID. FILLER-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SAMPLE-DATA.
05 FILLER PIC X(4) VALUE "XXXX".
05 USER-NAME PIC X(6) VALUE "YUIKO ".
05 FILLER PIC X(2) VALUE "ZZ".
PROCEDURE DIVISION.
DISPLAY "ユーザー名は:" USER-NAME
STOP RUN.
出力結果:
ユーザー名は:YUIKO
このように、FILLERの部分は出力されず、USER-NAMEの部分だけが表示されます。
7. どんな場面でFILLERを使う?
FILLERは、以下のような場面で役に立ちます。
- 固定長ファイルの形式に合わせるとき
- 過去のシステムから引き継いだデータ構造を再現するとき
- 将来のために予備領域を確保しておきたいとき
たとえば、銀行や保険会社などの基幹システムでは、データ形式が厳格に決まっていることが多く、FILLERが欠かせません。
8. FILLERでデータ構造を美しく保とう
プログラムの読みやすさや、他のプログラマーが見たときの理解しやすさも大切です。FILLERを使って不要な領域を明示的に示すことで、「ここは使っていない領域ですよ」という意図が明確になります。
また、将来的にこの領域を使うことになったときも、簡単に置き換えることができるというメリットがあります。