#MSGM
メッセージファイル保守ユーティリティ(#MSGM)は、メッセージファイル(SYS@MSG)を保守するためのユーティリティです。
#MSGMでメッセージをメッセージファイルに登録しておいて、COBOLプログラムなどでそのメッセージを画面上に出力することができます。例えば複数のCOBOLプログラムで共通のメッセージをメッセージファイルに登録しておけば、メッセージの内容を変更する時も、全部のCOBOLプログラムを変更する必要はなくなります。その他にリセットキーを押すまで待つとか警告音を鳴らすとかある程度のカスタマイズもでき、エラー発生時の自動通報などにも利用できます。
- 1 メッセージファイル
-
メッセージファイル(SYS@MSG)が何かというと、システム上で表示するメッセージを一括管理するためのファイルです。メッセージファイルにはA−VXが画面上に出力するメッセージをいろいろ保存しています。
このファイルはシステムに必ず1個あります。SRV(通常MSD000)に存在します。
システムのメッセージも登録されています。下に、最初からシステムのメッセージとして登録されているメッセージの一部を紹介します。
メッセージファイルの中のメッセージ(最初から入っているシステムのメッセージの最初の数個分) 0001 : 00011200 00000000 00 01 0 059 CBS P 15O E M0012: 要求機能がSGされていません 0002 : 00011500 00000000 00 01 0 059 CBS P 13M S M0015: ボリュ―ムカタログ機能が働きません 0003 : 00011600 00000000 00 01 0 059 CBS P 13M S M0015: ボリュ―ムカタログファイルが見つかりません 0004 : 00012000 00000000 00 01 0 059 CBS 15O E M0020: (PRG=%PRGT ,ADR=%PEAR ) プログラムエラー %PERP 0005 : 00012100 00000000 00 01 0 059 CBS P 15O E M0021: (PRG=%PRGT ,ADR=%PEAR ) 不正十進数エラ― 0006 : 00012200 00000000 00 01 0 059 CBS P 11M E M0022: メモリパリティエラ―が発生しました 0007 : 00012300 00000000 00 01 0 059 CBS P 15O E M0023: (PRG=%PRGT ,ADR=%PEAR ) 不正命令を実行 0008 : 00012400 00000000 00 01 0 059 CBS P 15O E M0024: (PRG=%PRGT ,ADR%PEAP) ブランチ命令エラ― 0009 : 00013000 00000000 00 01 0 059 CBS P 15O E M0030: DMAがオ―バ―フロしました 0010 : 00016000 00000000 00 01 0 059 CBS 15O C M0060: RORI可能領域不足で起動できません。(PRG=%PRGT ) 0011 : 00018000 00000000 00 01 0 059 CBS P 13M A M0080: システムログファイルオ―バ―フロ. ・ ・ ・
システムのメッセージしか入れられないとしたら、私たちには何の役にも立ちません。
メッセージファイルにはシステムのメッセージがあらかじめ入っていますが、ユーザアプリケーションが出すメッセージも登録することができます。
- 2 メッセージファイル利用方法
-
どんな時に利用するかというと、
複数のプログラムに共通のメッセージ(例えばエラーメッセージとか)があるとき、そのメッセージをメッセージファイルに登録しておき、複数のプログラムからはメッセージファイル上のメッセージを表示するようにします。このようにすることによって、プログラム毎にメッセージを用意する必要がなくなります。
利点としては、メッセージを変更する必要が発生した時には、メッセージファイルのメッセージのみ変更するだけでよくなり、プログラムの再コンパイルは必要なくなります。(プログラム側にメッセージが必要なくなるので、メモリやディスク容量の節約にもなるのですが、メモリもハードディスクのサイズも潤沢にあるこの時代、あまり利点にはなりませんね。)
欠点といえば、OS(この場合A−VXのこと)バージョンアップやサーバ移行の時に、ちゃんと管理していないとメッセージファイル上のデータを移行するのを忘れてしまいがちということでしょうか。他にメッセージの登録や移行時に気をつけることとしてはメッセージファイルのサイズを考えてメッセージの登録を行わないと、ファイルがオーバーフローしてしまいます。(これはファイルサイズを拡張すればよいだけの話ですが。)
サーバを移行する時に、メッセージファイルの移行を忘れると、メッセージを表示しようとした時に、下のように「メッセージがありませんよ!」というエラーが表示されてしまいます。
このメッセージファイルを使う目的はいろいろあるかと思います。メモリやハードディスクの容量が非常に少なかった時代には、それらの節約のためにメッセージファイルを使用するということも大きな目的だったのだと思われますが、最近ではメモリもハードディスクも潤沢にあるのでその必要性は薄れました。パラメータでメッセージ表示時の処理を追加(音を出す、画面保存etc.)できるので、そういった機能を利用してプログラム間で操作の共通化を図ったり、コーディングの省力化といった目的、あるいは自動通報機能を使用するといった目的に使用することができます。
- 3 メッセージファイル保守使用例
-
メッセージの登録 実際にユーザプログラム用のメッセージをSYS@MSGに登録してみます。
おまけ
メッセージファイルに登録したメッセージをCOBOLで使用する方法の例 あまり良いプログラム例ではありませんが・・・。