メニューボタン
IBMi海外記事2017.12.14

長い列名を使用できたのに! 第二弾

Ted Holt 著

1990年、Gorla、Benander、Benanderという3人のコンピューター サイエンスの教授が、COBOLプログラムにおけるデバッグに要する労力についての論文を発表しました。彼らが述べるところによれば、変数名の長さが10~16文字の場合にデバッグ作業は容易になるとのことです。オリジナルのネイティブなデータ定義機能では、変数名は最長で10文字まで使用可能でしたが、今日ではエイリアス名を定義することができます。これはGorla、Benander、Benanderの3教授が誇りとするものでしょう。

多くのDB2 for iのショップでは、6文字以下のフィールド名を持つ物理ファイルがあることが普通です。そのような命名の慣例は、選ばれるプログラミング言語がRPG IIであったSystem/36などの前身システムの時代からのものです。短いフィールド名をより長いフィールド名に置き換えることは、多くのケースで実際的ではありませんが、そのような状況にある場合、簡単にエイリアス列名を追加することができます。

物理ファイルにエイリアス名を追加する

エイリアス フィールド名の追加は、DDS記述ファイルを使用して簡単に行えます。ALIASキーワードを使用し、Change Physical File(CHGPF)コマンドを実行します。 以下は、NCUSTという名前のファイルのDDSの一部です。

技術情報code01

エイリアス名を追加した後の同じDDSが以下です。

技術情報code02

ストアード プロシージャーの本文は、アトミック コンパウンド ステートメントです。このことは、プロシージャー全体が1つのトランザクションとして扱われることを意味します。いずれかの部分が失敗した場合、データベースに対して行われたすべての変更がロールバックされます。

以下は、必要となるCHGPFコマンドです。

技術情報code03

いくつか付け加えておきたい点があります。 第1に、エイリアスを追加したときにレコード レベルIDは変わりません。ファイルを使用するプログラムを再コンパイルする必要はありません。 第2に、物理ファイルが使用しているのと同じレコード フォーマットを使用している論理ファイルにも、新しいエイリアスが追加されます。同じレコード フォーマットを使用していない論理ファイルには、エイリアスは追加されません。

第3に、ほとんどのネイティブなインターフェースは、エイリアスを使用することができません。たとえば、Copy File(CPYF)は、CREDIT_LIMITではなく、CRDLMTを参照しなければなりません。

技術情報code04

RPG IVおよびCOBOLコンパイラーは、エイリアスを使用することができます。RPGでは、ファイル定義(F仕様またはDCL-F)にALIASキーワードを追加します。

技術情報code05

COBOLプログラムは、COPYディレクティブのDDオプションを使用します。

技術情報code06

SQL表にエイリアス名を追加する

また、SQL表にエイリアス名を追加することもできます。そうするには、CREATE TABLEステートメントのなかなか新しいオプションである、CREATE OR REPLACE TABLEを使用します。 NCUSTOMERSという表が、数十年間、使用されてきた短い名前を用いて作成されているとします。

技術情報code07

エイリアス名を追加するには次のようにします。

技術情報code08

システム列名および定義は、追加前と同じです。SQL列名(すなわちエイリアス)だけが変わっています。 この表のどのビューも、エイリアス名を自動的に取得しません。それらのビューを再作成する必要があります。 前回、私がエイリアスについて書いてから約6年になります。その間に改善されたことがいくつかあるのを目にして嬉しく思います。

あわせて読みたい記事

PAGE TOP