次のコード例は、端末を拡張モードに切り替えて短いメッセージを表示し、キーボードから文字が入力されるまで待機します。いずれかのキーが押されると、ただちに端末を標準モードに戻します。
cobuns8_t mode_on=1, mode_off=0; if (cobtermmode(&mode_on) == 0) { /* Display some text over beyond column 80 to demo */ /* wide mode */ cobmove(10, 100); cobprintf("Line 10, Column 100"); cobgetch(); /* Wait for a key press */ cobtermmode(&mode_off); /* Back into standard mode */ }
説明:
このルーチンは、端末画面を標準モードと拡張モード間で切り替えます。ただし、使用している種類の端末用の terminfo データベース内で、必要な機能が定義されていることが条件です。
具体的には、使用している端末の種類のエントリに加え、それに -w を付けたエントリが terminfo データベースに登録されており、エントリに適切な初期化機能とリセット機能の両方、または一方が定義されていることが条件になります。たとえば、vt100 端末を使用している場合には、terminfo データベース内に vt100-w のエントリも含まれており、vt100 と vt100-w の両方に is1、is2、is3、rs1、rs2、および rs3 の各エントリ (またはいずれかのエントリ) が定義されている必要があります。
mode パラメーターには、端末画面を標準モード (デフォルト) に設定する場合は 0、拡張モードに設定する場合は 1 を指定します。その他の値は無効です。
端末画面のモードが切り替わると、画面処理システムが必要に応じて初期化され、画面表示が消去されます。その結果、カーソルは開始位置に配置されます。
このルーチンは COBOL コードからも問題なく呼び出すことができます。詳細については、ユーザー ガイドの「TERMINFO データベースと端末装置」の章に記載されている「拡張端末モード」を参照してください。
このルーチンの使用にあたっては、次の点に留意してください。
terminfo データベースの検索順序の詳細については、ユーザー ガイドの「TERMINFO データベースと端末装置」の章を参照してください。
このルーチンは正常終了すると 0 を返し、エラーでゼロ以外を返します。エラーが検出された場合は、次のいずれかの値が返されます。