
本記事は、%SYSルーチンの1つZWELCOMEルーチンを使用し、ターミナル起動時の振る舞いの制御方法をご紹介します。
はじめに
リモートシステムアクセスを利用して他環境のインスタンスからターミナルを起動した時、ターミナルのヘッダにプロセス番号が表示しておらず、わざわざ$jobコマンドで確認した事はありませんか?
また、処理を実行する際、現在時刻を確認したい時はありませんか?
これらを解決するには、%SYSネームスペースにZWELCOMEルーチンを作成すると解決します。
ZWELCOMEルーチンを作成すると、ターミナル(ObjectScript シェル)が起動する前に、該当のルーチンを呼び出します。
これにより、ターミナルに必用な情報が表示されます。
本記事は、ZWELCOMEルーチンについて解説していきます。
ZWELCOMEルーチンを作成する
折角なので、今回はターミナルからWELCOMEルーチンを作成したいと思います。
作業の大まかな流れとしては下記になります。
③のルーチン処理を記述する際に若干の癖があるので注意です。
今回は、下記処理をWELCOMEルーチンに追加したいと思います。
ztest() public {
w "テスト出力!"
}
作成開始
②~⑤を入力すると、ターミナル上ではこんな表示になります。
③の入力に関しては癖が強く、「Enter」や「Tab」を入力しても、ターミナル表示上何も変化がありません。
正常に入力できているか分からなくなりますが、自分を信じて作業を行います。
※失敗しても、後々修正すれば問題ないです。

zremoveコマンド実行後、ZWELCOMEルーチンが正常に作成されたか、管理ポータルから確認してみます。

ZWELCOMEルーチンとコメント出力のコマンドが作成されている事を確認しました。
これで準備は完了です。
さっそく新しいターミナルを立ち上げてみましょう。

「テスト出力!」が表示されています。
このようにZWELCOMEルーチンに処理を記述すると、ターミナル起動前に必用な処理を実行する事ができます。
出力内容をカスタムする
テキストの表示ができたので、プロセス番号等の表示を行いたいと思います。
先ほどの処理を、下記サンプルに変更しました。
※ドキュメントに記述している内容と差はないです。
ztest() public{
try{
w " ・起動時刻:", $zdt($h, 3, 1), !
s me = ##class(%SYS.ProcessQuery).%OpenId($j)
w " ・Pid/JobNo:", me.Pid, "/", me.JobNumber, !
w " ・Priority:", me.Priority, !
w " ・OSUserName:", me.OSUserName, !
s obj=##class(%SYS.NLS.Table).%New("System")
w " ・文字コード(ターミナル):", obj.GetIOTable(1)
w "、 文字コード(ファイル):", obj.GetIOTable(3)
w !
}catch e {
}
}
では、ターミナルを起動して、表示内容を確認してみましょう!

あー、いいですね。
表示する項目の要/不要の選別はともかく、ターミナル起動時に種々の情報を表示する事が出来ました。
おわりに
いかがだったでしょうか。
ZWELCOMEルーチンについてご紹介しました。
これで、ターミナルから実行する際に、わざわざコマンドを実行して確認しなくても、初回起動時に必用な情報を表示する事が出来ます。
作業の効率化が見込めますね。
また、今回はターミナルからのルーチン作成を行いましたが、スタジオからZWELCOME.macファイルを作成する方法でも問題ありません。
やりやすい方法を選択してください。