[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

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ルーチンを呼び出す前の状態に画面イメージを復元します。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]