SYSTEM38のセットアップ
今回は、システム38のころのサブシステムと、現在のAS/400を比較して、さらに、2次言語専用のサブシステムを作ってみようと思います。
まずは、参考資料の紹介から。
BXDJ53-0「ブリッジ・セッション CPF導入手順」日本アイビーエム株式会社 システム・サービス・センター(SSC)
なっつかしい、SSCだって。これは、System38(リリース6)の導入手順がまとまっています。たしか、リリースアップの時に参考にしたドキュメントでした。
目次を見ると、
Tシステム38の導入計画
Uシステム導入の手順
CPFの導入
QGPLの導入
プログラムプロダクトの導入
漢字用ソフトウェアの導入
入出力装置構成の生成
IBM提供オブジェクトの変更
当リリースにおける考慮点
保管
付録A 印刷イメージの作成
付録B QMCHPOOL及びQBASACTLVLの計算方法
付録C
ワークステーションアドレス及びターミネータスイッチの設定
付録D 通信制御装置(5251-12,5294)の設置手順
付録E S/38装置変更の手引き
付録F 代替コンソールの割り当て
|
さてこの中で、サブシステムが出てくる部分は、「7.当リリース(REL6.0)における考慮点」の中の「QKJPGMの作成(漢字システムの為の環境設定)」に出ています。
7-3 QKJPGMの作成(漢字システムの為の環境設定)
QINTER, QPGMR、ユーザー作成の対話型サブシステムに対して下記の手順が必要となります。
ADDRTGE SBSD(QINTER) SEQNBR(15) CMPVAL(QIGC) PGM(QKJPGM.QGPL)
ADDRTGE SBSD(QPGMR) SEQNBR(15) CMPVAL(QIGC) PGM(QKJPGM.QGPL)
CHGWSE SBSD(QINTER) WRKSTNTYPE(5555) JOBD(QINTIJBD)
CHGWSE SBSD(QPGMR) WRKSTNTYPE(5555) JOBD(QINTIJBD)
QKJPGMの下記ソースをSEUで登録する。
/* QKJPGM */ OVRMSGF QCPFMSG TOMSGF(QCPFMSG.QSYSIGC)
|
|
ここで、QINTIJOBDって、経路指定データが、QIGCになっていました。ワークステーションタイプが5555だと、そこからサインオンすると、どんなときもジョブ記述は、QINTIJBDになるわけです。※あの当時は気が付かなかったけど、OVRMSGFは不要ですね。SYSLIBLに、追加でQSYSIGC入れているんだからQSYSの前に、QSYSIGCが参照されるはずですよね。
ちなみにQSYSIGCは、2次言語で漢字環境です(AS/400で言うところのQSYS2962のことです)。システム38では、コンソールがビルトインされていて、それがSBCSしか表示できませんので、一次言語は必ず、半角のカナか、英語でした。ところが、端末は漢字端末なので、その表示を何とか漢字にしようということで、上記の様な作業があるのです。
さて、QKJPGMは、CLP38ですけど、理解できますか?すべて、CLP(ネイティブ)でも、存在するコマンドです。それどころか、ADDRTGEやCHGWSEだって、今でもあるのですよ。S38のリリース6ですよ。如何に古くから、使われてきたOSか分かりますか?
おまけ。懐かしいと思う方は、いませんか。今のAS/400のIPL画面とは全然違いますね。うっかり、SYSLIBLにQSYSIGCを追加したら、コンソールが使えなくなって、S38がIPL出来なくなって、本当に困ったのですが、構成メニューのおかげで、助かったのも良い思い出になりました。(客先での出来事...)
セイギョ プログラム キノウ (CPF) ノ カイシ プロンプト
ツギ ヲ ニュウリョクシナサイ: システム ノ ヒヅケ(MDY): / / システム ノ ジコク: : : ジョブ マチギョウレツ (*KEEP *CLEAR): *CLEAR シュツリョク マチギョウレツ (*KEEP *CLEAR): *CLEAR ミカンリョウ ノ ジョブ ログ(*KEEP *CLEAR): *CLEAR コウセイ メニュウ (*NO *YES): *NO
|
ここで、わざわざS38の漢字制御の方法を書いているのは、懐かしむためではありません。仕組みを理解して欲しいからです。最も大事な基礎的な知識は、ライブラリーリストでしょう。QKJPGMの中核は、TFRCTL
QCLよりも、CHGSYSLIBL QSYSIGCなのです。(勿論QCLを呼ばなきゃ始まらないのですが、漢字表示する仕組みは、CHGSYSLIBLが担っています。)
ライブラリーリスト
AS/400のお話に戻りましょう。オブジェクトの探索パスとしてライブラリーリストは機能するのですが、その順番は、
- QSYSLIBL (SYS) 最大15個ライブラリー
- CURLIB (CUR) 1個ライブラリー
- QUSRLIBL (USR) 最大25個ライブラリー
となっています。もしかりに、QSYS2962が1QSYSLIBL以外にあったら、たとえば、メッセージファイルや、画面の固定情報や、コマンドのプロンプトテキストやヘルプは、すべて、1次言語の物になってしまいます。
SYS |
QSYS |
QSYS2 |
QHLPSYS |
QUSRSYS |
CUR |
TKLIB |
USR |
QGPL |
QTEMP |
KTKUTL |
この中に、2次言語を入れるとしたら、先頭のQSYSの前に無くてはいけません。もし、1次言語が日本語で、2次言語が英語(2984)ならば、
SYS |
QSYS2984 |
QSYS |
QSYS2 |
QHLPSYS |
QUSRSYS |
CUR |
TKLIB |
USR |
QGPL |
QTEMP |
KTKUTL |
ここで、試しにSTRSEUというコマンドを探してみましょう。すると、QSYSとQSYS2984に有ることが分かりますね。
Work with Objects
Type options, press Enter.
2=Edit authority 3=Copy 4=Delete 5=Display authority 7=R
8=Display description 13=Change description
Opt Object Type Library Attribute Text
STRSEU *CMD QSYS2984 Start Source Entry U
STRSEU *CMD QSYS SEU開始
Parameters for options 5, 7 and 13 or command |
もし、2次言語の環境ならば、以下のようになっていれば、良いわけです。コマンドに限らず、パネルやMSGQ、プリンターファイルなど、多くの「2次言語化」の為の部品がQSYS2984に詰まっています。
SYS |
QSYS2984 |
STRSEU |
QSYS |
STRSEU |
QSYS2 |
|
QHLPSYS |
|
QUSRSYS |
|
CUR |
TKLIB |
|
USR |
QGPL |
|
QTEMP |
|
KTKUTL |
|
念のため、言いますが、もし、QSYS2984を違う部分に入れてしまうと、(ここでは、ADDLIBLEをしている)いくらライブラリーリストにQSYS2984が入っていても、STRSEUは、あくまで1次言語のQSYSから参照されるわけで、期待に反したことになりますね。
SYS |
QSYS |
STRSEU |
QSYS2 |
|
QHLPSYS |
|
QUSRSYS |
|
CUR |
TKLIB |
|
USR |
QSYS2984 |
STRSEU |
QGPL |
|
QTEMP |
|
KTKUTL |
|
QKJPGMのゆくえ
AS/400では、現在は、QKJPGMは必要有りません。サブシステムに、SYSLIBLがついたおかげで、QKJPGMを作る必要は無くなりました。QKJPGMの中核は、システムライブラリーリストへの2次言語の追加でした。この機能を代わりに行ってくれるのが、SYSLIBLです。また、サインオン画面も指定できますので、もし、外人さんがサインオン画面を見ても、またサインオンしても、違和感無くOSを利用できます。勿論、アプリケーションが漢字だけだったら、だめですよね。
環境の設定
では、実際に設定してみましょう。予め考えておくべき事は、端末の名前とそれが属するサブシステムです。ここでは、2次言語ライブラリーをQSYS2984と想定しています。
タイプ |
端末名 |
サブシステム |
漢字用(1次言語用) |
QP* |
INTERJPN |
英語用(2次言語用) |
E* |
INTERENG |
現行のQINTERから、CRTDUPOBJして以下を作成します。
タイプ |
漢字(1次言語)用名称 |
英語(2次言語)用名称 |
SBSD |
INTERJPN |
INTERENG |
CLS |
もしQINTERのままでよければ、そのままでもよいと思う。結局は、実行環境の問題だから、1次言語、2次言語で変更したければ、各々準備しなくてはいけない。その場合は、サブシステムと同じ名前にすれば良いと思う。 |
JOBQ |
INTERJPN |
INTERENG |
ライブラリーは、オリジナルと同じところに作れば良いのではないかと思います。
サブシステムの設定
サブシステム名 |
SYSLIBL |
サインオン表示ファイル |
INTERJPN |
*NONE |
QSYS/QDSIGNON |
INTERENG |
QSYS2984 |
QSYS2984/QDSIGNON |
CLSの設定
もし、QINTERのままなら、何もしないでいいです。変更するのならば、予め、サブシステムの経路指定項目のQCMDI(で良いと思う)の順序番号などを調べておいて、そして、その番号で、CHGRTGEで変更します。
(例) CHGRTGE SBSD(INTERJPN) SEQNBR(15) CLS(QGPL/INTERJPN)
JOBQの設定
対話型環境になんでJOBQがと思うでしょうが、まあ、TFRJOBで使うくらいでしょう。CRTDUPIBJで作成して、古いJOBQをサブシステムから外して(RMVJOBQE)、新しく作ったJOBQをサブシステムに追加します(ADDJOBQE)。
テスト
「今日はよせ」(自殺の名所の看板より)
PC5250なり、5250WSなりで、端末名を決める。上記の例では、QP*で始まれば、何でも、一次言語になるし、E*で始まれば、2次言語になるわけです。ただし、現行で、既に業務が動いているならば、止めておきましょう。多分、ほとんど全ての端末が、INTERJPNに繋がると思います。サインオン画面のサブシステム名で分かります。このとき誰かがサインオンしてしまうと、簡単に終わりに(ENDSBS)出来ません。だから、時期を考えた方がいいのです。それさえクリアできるなら、STRSBSしてみましょう。うまくいくとこんな画面が出てきます。
もし、最初のメニュー画面が漢字のままだとしたら、そのユーザープロファイルの「初期メニュー」のライブラリーがQSYSと固定になっていませんか?これを*LIBLにして下さい。
くれぐれも、業務にぶつからないように、気を付けて下さい。サブシステムって、間違えると「こわいですよぉー!」<g>
CRTDUPOBJで新しくサブシステム記述を作った場合、重複したジョブ待ち行列項目ができているはずです。そのまま、両方とも活動すると、後から活動化したサブシステムは、ジョブ待ち行列を獲得できない旨、エラーログを書き出します。まあ、それだけですけど、気になるようでしたら、RMVJOBQEで無駄なジョブ待ち行列をはずしてください。[2000-3-11]
アメリカ製の5250 (Mohca5250)を動かしたら、装置タイプが5555ではなく、3179で作成されました。しかも端末名がQPA*だったので、INTERJPNにつながってしまい、エラー(CPF5511)で、つながりません。この場合には、以下のよう,もう一つサブシステム記述(INTERENG2)を作成しましょう。まあ装置名は、Mで始まることとして使います。(他とバッティングしなければ、何だっていいのですけど。)[2000-3-11]
サブシステム記述 |
ワークステーション名項目 |
ワークステーション・タイプ項目 |
SYSLIBL |
サインオン表示ファイル |
INTERJPN |
QPA* |
5555 |
*NONE |
QSYS/QDSIGNON |
INTERENG |
E* |
5555 |
QSYS2984 |
QSYS2984/QDSIGNON |
INTERENG2 |
M* |
3179 (24*80) 3477 (27*132) |
QSYS2984 |
QSYS2984/QDSIGNON |
たいしたことではないのですが、念のため、INTERENGとINTERENG2は一つに出来ます。以下のように、3179や3477の端末名を、E*にすれば、いいでしょう。でも、多分、サブシステムを別にしたほうが、管理しやすいかもしれません。[2000-3-25]
サブシステム記述 |
ワークステーション名項目 |
ワークステーション・タイプ項目 |
SYSLIBL |
サインオン表示ファイル |
INTERJPN |
QPA* |
5555 |
*NONE |
QSYS/QDSIGNON |
INTERENG |
E* |
5555 3179 (24*80)
3477 (27*132) |
QSYS2984 |
QSYS2984/QDSIGNON |
2000-3-1 |