最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

9.47.罫線を画面につけたい(1)

[ Previous ] [ HOME ] [ Upper ] [ Next ]


今回は、画面の罫線を説明しましょう。これは、DBCS環境特有の機能のため、SBCSの端末では、罫線はひけません。

2つの方法

画面に罫線を出す方法には、(1)5250の画面罫線機能を使う、(2)DDSキーワードGRDxxを使う、の2つの方法があります。ここでは、ややこしい(1)の5250の画面罫線機能を説明します。また、TOOL BOXには、この両者をサポートするユーティリティが含まれていますので、ご利用下さい。Grdxxへの変換もあり、便利ですよ。尚、この5250の罫線機能は、古くからあり、System38でも使っていました。

WWWマニュアル

1. 5250機能によるもの

2. DDSキーワードによるもの

仕組みの簡単な説明

基本的に、罫線データと、それを合成したい通常の画面とに分けて考えます。右の図で、2つの画面が一つの結果としての画面になっているように見えます。

これを正確に表現するならば、「罫線画面(罫線データ)は、端末ごとの表示用のバッファに格納されて、消去されるまで残り、通常画面では、そのバッファに格納された罫線データを単に、マージして表示しているだけ」となります。

ここでの注意は、表示までの手順です。

1.罫線データ(右の図では、イメージしやすいように罫線画面とした)を、バッファに格納(WRITE)

2.罫線合成を指示する制御コードをつけた通常画面(文字データ)をWRITEする。

3.用が無くなったら、罫線データを消去する。

grd005.gif (5777 バイト)

もう一つ、前提として、頭に入れておいてほしいことがあります。それは、5250は、データストリームを、読みやすいように画面に表示している、という基本です。それは、この罫線データも同じことです。画面の左上から右下まで、一本のデータストリームなのだ、というイメージを持っていてください。

先ほども言いましたが、画面に罫線が出るまでは、以下のステップを踏みます。

  1. 罫線データを、画面バッファに書き出し(罫線データの書き込み制御)
  2. 罫線合成画面を書き出し
  3. 罫線データの消去データを書き出し

すべて、画面バッファを扱うものですが、普通のWRITE 命令(つまりデータストリームを書き出す)で行います。このデータストリームの先頭の4バイトが、表示の仕方をコントロールしています。

罫線書き込み制御

罫線書き込み制御は罫線画面様式をPC5250に保管するときに使用します。その制御データの形式は次のとおりです。

形式

scrngrd1.gif (14475 バイト)

罫線書き込み制御コード

1行目、1桁目を指定して罫線書き込み制御コードがホスト・システムから送られると、そのあとのデータを罫線画面様式の書き込みに関連した一連のデータとみなします。

scrngrd5.gif (4551 バイト)

1桁目 2桁目 3桁目 4桁目
X'27' X'2F' X'nn' X'20' or X'27'
非表示 非表示 F/B 通常
/ND

註:

文字

は、固定情報を意味します。

X'nn' ... 罫線情報バッファー指定データ

  1. X'C6'(英字“F”) : 罫線定義データは罫線情報バッファー1に蓄えられます。
  2. X'C2'(英字“B”) : 罫線定義データは罫線情報バッファー2に蓄えられます。

注:  PC5250が罫線書き込み制御コードを受けた時点で、指定された罫線情報バッファーの内容は消去され、それに続く罫線定義データの記憶に備えます。

grdbeye.gif (19913 バイト)

この、FとBは、FrontとBackだと思います。この部分は重要で、最初私も勘違いしていましたが、

あくまで、罫線データは「装置」に結びつくもので、ジョブに結びつくものではない

と言うことを、頭に入れて置いてください。罫線の表示中に、システムリクエストで、セカンドジョブへ移行したとき、両方のジョブ画面で、罫線を出そうとすると、おかしくなります。最後に書き出した、罫線データが有効なのです。罫線データはジョブではなく、表示装置に書き込まれるのです。お分かりですか?

ある罫線のついた画面Aを使用中に、そのまま、システムリクエストによるセカンドジョブでも、別の罫線つきの画面Bを呼び出したとします。画面Bは自分用の罫線をバッファに書き出して、表示しますので、うまく出てきます。問題は、その後、画面Aに戻ったときです。画面Aが罫線データをリフレッシュしないかぎり、画面Aの文字データ+画面Bの罫線になってしまうのです。また、画面Bを終わらせるときに、罫線データ消去するはずですので、画面のバッファに罫線データが、なくなることもありえます。

これを、2つのバッファ(FとB)で切り替えて、行おうと言うのは、かなり設計の段階から、そのプログラムの用途を限ることになります。たとえば、画面AはバッファFのみ、画面BはバッファBのみ、これでバッティングしなくはなります。でも、画面CがFを使い、画面DがBを使い、と成ってくると、組合せ(システムリクエスト後に呼ばれるプログラム)次第で、同じバッファを使ってしまう確立は高くなります。こんな制限つけたくないですよね。あまり、自分が罫線にこだわらなくなったのは、このあたりの事情です。どうしても、必要なとき外は、罫線は使いません。まあ、とりあえず、罫線の「リフレッシュキー」をつけて、「罫線表示がおかしい時は、押してください」と、するか、ユーザーがセカンドジョブへ飛ばさないようにしましょう。

罫線指定データ

scrngrd6.gif (9196 バイト)

罫線書き込み制御コードに続き1行目の4桁目を表示開始位置として指定されたデータは、罫線指定データと見なされます。罫線指定データは、縦24行、横80桁にわたる全表示画面の各文字表示位置ごとに縦、横の罫線の有無を指定します。

罫線の色(使えるのか不明です)

罫線指定データの最後から2番目の「色」の部分は、CAのマニュアルによれば、「予約済み」とありますが、PC用の5250(CAではない)のマニュアルによれば、罫線の色指定に使われているようです。どっち?CAはダメなのか?

コード※ 0 1 2 3 4 5 6 7 8 9 A B C D E F
水色 灰色 薄青 薄緑 薄水 薄赤 薄紫 薄黄 明白

※コードは16進数はなく、キャラクターです。(紛らわしいけど...)

罫線定義データに関しては 9.51. 罫線を画面につけたい(2) に詳しく書きました。

罫線合成表示

今度は、文字データを出す番です。ここで、罫線データと、文字が組み合わさって、ユーザーが見る画面を出すわけです。当然、罫線指示データが、バッファのFとBどちらに入っているか、指定しなくてはいけません。したがって、ここでもやはり、制御コードが出てきます。

形式

scrngrd2.gif (8925 バイト)

1桁目 2桁目 3桁目 4桁目
X'28' X'2F' X'nn' X'20'
明滅 非表示 F/B 通常

X'nn' ... 罫線情報バッファー指定データ

  1. X'C6'(英字“F”) : 罫線情報バッファー1の内容といっしょに表示されます。
  2. X'C2'(英字“B”) : 罫線情報バッファー2の内容といっしょに表示されます。

注:  文字データの属性文字は、1行目の4桁目のX'20'に上書きするこ ができます。

罫線表示を伴うユーザー画面様式の1行目の1桁目から4桁目は、文字データとして使用できません。また1行目の3桁目は英文字"F"または"B"を含んでいなければなりません。そうでない場合は、罫線画面様式は表示されず、文字データのみからなる
ユーザー画面様式が表示されます。

罫線情報バッファー消去

1行目、1桁目を開始位置として指定した以下のデータは、罫線情報バッファー消去制御コードとみなされます。パラメーターで指定された罫線情報バッファーの内容を消去します。

形式

scrngrd3.gif (5413 バイト)

1桁目 2桁目 3桁目 4桁目
X'29' X'2F' X'nn' X'20'
非表示・
反転
非表示 F/B 通常

X'nn' ... 罫線情報バッファー指定データ

  1. X'C6'(英字“F”) : 罫線情報バッファー1の内容を消去します。
  2. X'C2'(英字“B”) : 罫線情報バッファー2の内容を消去します。

ちょっと、内容が長くなりましたので、第一部はここまで。第2部では、実際に罫線データをコードにする部分を取り上げて、また、サンプルを表示する部分のプログラムの説明をします。

続く...

2000-8-5


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送