前のページ | 次のページ | 目次 | 索引


6 日本語SMGを使用したプログラム開発

この章では,新しいプログラムを開発するための日本語SMGの望ましい 使用方法について説明します。この章の説明では特に,日本語SMGルーチンが ASTリエントラントでないことに注意してください。

アプリケーションから日本語SMGルーチンを呼び出す方法としては, 次の2種類の方法があります。

どちらの場合も,呼び出しルーチンは何らかの時点でサブシステムを 呼び出すことにより,サブシステムが画面にデータを 書き込むことができるようにします。

その後,端末ユーザは,サブシステム固有のディスプレイを消去する 必要があるでしょう。しかしサブシステムが,データを表示するために 仮想ディスプレイを作成し使用した場合には,ディスプレイ識別子は 呼び出しプログラムからは利用できません。したがって, 呼び出しプログラムはディスプレイを消去できません。さらに, 呼び出しプログラムが日本語SMGを使っていない場合, 画面のペーストボード識別子も呼び出しプログラムから利用できません。

この問題を解決するには,日本語SMGを直接的または間接的に使用するすべての 呼び出し可能ルーチンが, pasteboard-id 引数に対して(省略可能な)入力引数と, 仮想 display-id 引数に対して(省略可能な)出力引数を使用するようにしなければ なりません。ペーストボード識別子とディスプレイ識別子を渡すことにより, 呼び出しプログラムから消去できないサブシステム固有のデータが, 画面に蓄積されるのを防止できます。これらのガイドラインをまとめると, 次のようになります。

次のガイドラインに従えば,モジュール方式でアプリケーションを開発できます。

6.1 日本語SMGを使用しないルーチンの呼び出し

日本語SMGを使用せずに画面に書き込みを実行するサブルーチン (またはサブシステム)を呼び出す場合には,別の状況が発生します。 日本語SMGを使用しない場合には(つまり,画面上で日本語SMGによって 制御されない領域にテキストが配置される場合), 画面を更新しようとするときに問題が発生します。

この理由から,日本語SMGには,画面管理を使用しないプログラムに画面 (またはその一部)を一時的に渡すルーチンと,制御が SMG$ ルーチン以外の ルーチンから戻された後,前の状態に画面を復元するためのルーチンがあります。 これらのルーチンはSMG$SAVE_PHYSICAL_SCREENルーチンと SMG$RESTORE_PHYSICAL_SCREENルーチンです。

SMG$ 以外の入出力を,画面に対して実行するルーチンを呼び出す場合には, その前にSMG$SAVE_PHYSICAL_SCREENルーチンを呼び出し,画面のどの部分を SMG$ 以外のルーチンに渡すかを指定します。SMG$SAVE_PHYSICAL_SCREENルーチンは 指定された領域を消去し,ターミナルの物理スクロール領域をこの領域に設定し, 物理カーソルを領域の行1,カラム1に設定します。SMG$ 以外のコードが 順次入出力だけしか実行しない場合には(つまり,カーソル・アドレスを 直接指定しない場合には),出力は画面の指定された領域に制限されます。

制御が SMG$ 以外のルーチンから戻された後, SMG$RESTORE_PHYSICAL_SCREENルーチンを呼び出してください。このルーチンは, SMG$SAVE_PHYSICAL_SCREENルーチンを呼び出す前の状態に画面イメージを復元します。


前のページ | 次のページ | 目次 | 索引