Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報
トップ  >  システムコマンド その2

システムコマンド その2

3 システムコマンド一覧

システムコマンドの一覧です。

システムコマンド説明
操作開始コマンド業務を開始する。Linux系のログイン相当機能
操作終了コマンド業務を終了する。Linux系のログアウト相当機能
画面接続コマンド裏にいるジョブの画面を表示する。Linux系のfg相当機能
画面切り離しコマンド新しいジョブを実行するための画面を表示する。Linux系のcommand相当機能
優先処理コマンド優先処理するジョブを実行する画面を表示する。
停止コマンド実行中のジョブを一時停止する。
再開コマンド一時停止中のジョブを再開する。
プログラム放棄コマンド実行中のプログラムを強制終了する。Linux系のkill相当機能
業務放棄コマンド実行中のジョブストリームを強制終了する。Linux系のkill相当機能
アテンションコマンド拡張システムコマンド実行、システム状態の確認、その他コマンド類実行。
メッセージ送信コマンド他ワークステーションにメッセージを送信。メッセンジャーみたいなもの
メッセージ受信コマンド他ワークステーションからメッセージを受信。メッセンジャーみたいなもの
画面ハードコピーコマンド画面をハードコピーする。
リモートWSコマンドワークステーションモード切替。
ローカルWSコマンド ワークステーションモード切替。
時刻 日付、時刻の表示、変更コマンド

★操作開始コマンド

端末(ワークステーション、PC/WSエミュレータ)を使用できる状態にし、そのワークステーションで業務ができるようにします。

Windowsのログオン(Windowsを使う前に[CTRL]+[ALT]+[DEL]を同時に押す操作)と同じようなものです。UnixやLinuxのログインに相当します。
Windowsと同様に、この「操作開始コマンド」を実行すると(OCFありのシステムの場合)ユーザ名やパスワードの入力画面となります。

OCFが設定されていなければ、たいていの場合、端末(PC/WSエミュレータ)を起動すると自動的に「操作開始コマンド」を実行してメニュー画面が表示されるように設定されているはずです。このため、OCF無しなら、ほとんど使用しなくて済むコマンドです。

以下の3つの場合に「操作開始コマンド」を実行することができます。

  • 下の画面は、端末を誰も使用していない状態です。この画面の時に「操作開始コマンド」を実行することにより、各種コマンドを実行できるようになり、ジョブを投入したりできるようになります。「操作終了コマンド」を実行するとまたこの画面になります。

  • 下の画面は、端末を誰かが使用しているが、表画面になっていない状態です。OCFを使用しているとこのような画面になることがあります。その端末を使用していない人は、「操作開始コマンド」を実行することにより、ジョブを投入できるようになります。その端末を使用している人は、「操作開始コマンド」は実行できません。「操作開始コマンド」ではなく「画面接続コマンド」で、その人が使用している画面を表にします。

  • OCFありの場合、誰かが使用中(ジョブ実行中でもOK)に「操作開始コマンド」を実行することにより、別の人が使用できるようになります。

★操作終了コマンド

その端末で該当するオペレータが実行中の全てのジョブを強制終了し、ジョブを実行する権利を放棄します。

業務を終了する時に必ず実行しなければならないコマンドです。「操作終了コマンド」を実行せずに端末の電源を切ったりPC/WSエミュレータを終了させたりするのは、Windowsでシャットダウンやログオフせずにいきなり電源を切るのと同じで、非常に危険です。

「操作終了コマンド」は、WindowsでやLinuxのログアウトに相当します。

ジョブ実行中であろうと無かろうといつでも「操作終了コマンド」は実行できます。
「操作終了コマンド」を実行すると以下のような画面が表示されて、本当に終了しても良いか聞いてきます。
ここで「2:いいえ」を選択すると「操作終了コマンド」はキャンセルされます。一方「1:はい」を選択すると実行中のジョブは強制終了されて「操作開始コマンド」のところで説明したような画面になります。

下の画面では、実行中プログラム一覧に「#TITLE」と「#ABC」が表示されています。ここで「1:はい」を選択すると、たとえ「#ABC」が何をしていても強制的に終了させられてしまいます。

設定次第ですが、PC/WSエミュレータの場合は、「操作終了コマンド」を実行するとエミュレータ自身が終了するか、以下の画面になるかのどちらかになるはずです。PC/WSエミュレータ自身が終了した場合は問題ないのですが、PC/WSエミュレータが終了せず以下のような画面になった場合や専用端末(あるいは下位の端末兼用オフコン)の場合は、終了させる場合には注意が必要です。

下の画面は、誰も使用していない状態なので、端末の電源を切る(あるいはPC/WSエミュレータを終了させる)ことができます。


下の画面の場合は、誰かが裏側で使用しているので、端末の電源を切ってはいけません。もちろんPC/WSエミュレータを終了させたりしてもいけません。(右下の「*」に注目。詳しくは「A−VXの画面」のページを参照してほしいのですが、裏に何かの画面があります。自分は操作終了しているので、誰か他の人の画面があるということです。おそらく「画面接続コマンド」を実行すると「オペレータ」名などを入力する画面(つまり他の人の画面を出すため)になるはずです。)

机上にあるWindowsパソコンを使っている人がよく勘違いするのが、「PC/WSエミュレータを終了させる=サーバを終了させる」あるいは「端末の電源を切る=サーバを終了させる」だと思っていることです。PC/WSエミュレータや端末を終了させてもサーバが終了したことにはなりません。単にLinuxで言うところのtelnet接続を終了しただけです。
ちなみにシステムステーション以外からA−VXのシャットダウンはできません。これはLinuxで一般ユーザがサーバの電源を切れないのと同じです。

★画面接続コマンド

画面から切り離された状態で実行中のプログラムに画面を接続します。

Windowsと同様、A−VXは1台の端末で複数のジョブが実行できます。Windowsの場合は、ウインドウをマウスでクリックして切り替えれば裏にあるジョブが表示されますが、A−VXの場合はウインドウが無いので、その方法では裏にあるジョブの画面を見ることができません。

Windowsで言えば、タスクの切り替え([ALT]+[TAB])に相当する機能です。Linuxだと「fg」コマンドに相当します。Linuxの「fg」コマンドのように番号を指定するのではなく、Windowsのタスクの切り換えのように1回実行する毎に順番に画面を接続します。

例えば、あるユーザが「Aジョブ」「Bジョブ」「Cジョブ」「Dジョブ」の4ジョブを動かしていて、現在「Aジョブ」が表画面(画面接続中)だとします。ここで「画面接続コマンド」を1回実行すると「Bジョブ」が表画面(画面接続される)になり、「Aジョブ」は裏に回ります。さらにもう1回「画面接続コマンド」を実行すると「Cジョブ」が表画面になります。そこでさらにもう1回「画面接続コマンド」を実行すると「Dジョブ」が表になります。さらに「画面接続コマンド」を実行すると「Aジョブ」が表になります。このように「画面接続コマンド」を実行する毎にラウンドロビン方式で順番に表になります。


下の画面になっている時は全部のジョブが裏画面になっている状態です。誰かのジョブが裏画面にあるので、その人が「画面接続コマンド」を実行することによって、そのジョブを表画面にすることができます。


★画面切離コマンド

現在、画面を使用しているタスクを画面から切り離し、新しいプログラムを起動します。

例えば新しいジョブを実行したい時に「画面切離コマンド」を実行します。このコマンドを実行すると今まで実行中のジョブが裏画面になり、新しく作られたスレッドが表画面になります。

ちょっと動きが違いますがLinuxの「command」に相当するのですかね。

OCFありのシステムで複数のオペレータが使用している場合は、どのオペレータが画面切離を行うのかオペレータの識別コードや部門コードを入力する画面になります。そこで画面切離をしたいオペレータの識別コードや部門コードを入力します。

A−VXは同時に起動できるジョブの最大数が決まっています。
もしこのジョブの最大数を超えてしまった場合は、「画面切り離しコマンド」を実行した時に、下の画面のようにエラーメッセージが出て、これ以上新しいジョブは投入できません


★優先処理コマンド

該当するオペレータに属する全スレッドの実行を一時停止させた後で、「画面切り離しコマンド」と同一処理をします。

あるジョブを実行中に、緊急で割り込ませたいジョブがあるときに、そのジョブを優先的に実行するために用意されたコマンドです。まず「優先処理コマンド」を実行したオペレータが実行中のジョブを全て停止させます。そしてそれらのジョブを全て画面から切り離し(裏画面にして)、新しく作られたスレッドが画面に接続(表画面に)されます。オペレータは新しく作られたスレッドを使って、緊急に実行したいジョブを新たに投入します。
「優先処理コマンド」を実行するとスレッドが終了するまで「優先処理」状態となります。

「優先処理コマンド」を実行した後にどうなるかは、システム生成でどのような設定にしているかによって変わります。以下の画面は「優先処理コマンド」を実行した後の画面の一例です。ただし、どのような設定になっている場合でも、優先処理中は画面の右下の実行中アプリケーション名の左側に「I」という文字が表示されます。


優先処理中は「画面接続コマンド」も「画面切り離しコマンド」使用できません。さらに「優先処理コマンド」を実行することもできません。これらを使用しようとすると下のようにエラーになります。他の処理を一時停止して優先処理しているのだから、他のジョブを見たり新規ジョブを実行したりすることができないのは当然といえば当然の話です。

優先処理中に「画面切り離しコマンド」を実行した場合


優先処理中に「画面接続コマンド」を実行した場合


他のシステムコマンド、例えば「操作終了コマンド」「操作開始コマンド」「停止コマンド」「プログラム放棄コマンド」などは優先処理中でも使用できます。

一時停止状態になるジョブは、「優先処理コマンド」を実行したオペレータのみで、他の人のジョブは一時停止にならないことは注意しなければなりません。また「優先処理」状態のままになると一時停止したジョブはずっと一時停止のままになってしまうことにも注意しなければなりません。「優先処理」を終了するためには、「優先処理コマンド」によって新たに作られたスレッドを終了させる必要があります。

この優先コマンドを使うかどうかはシステムの組み方によります。例えば即伝処理で多用するシステムもあるようです。
しかし「優先処理コマンド」は全然使わないところは本当に全く使わないでしょう。「優先処理コマンド」と「画面切離コマンド」「停止コマンド」は並んでいるため、「画面切離コマンド」を実行しようとしたら間違えて隣の「優先処理コマンド」を実行してしまった、ということもあると思います。一旦誤って「優先処理」状態になると他のジョブも全然終了しなくなる上に画面接続や画面切り離しもできず、操作に不慣れなユーザだと何が起こったのかわからず困ってしまう場合もあります。

そのような場合は「優先処理コマンド」を実行しても、すぐに優先処理のスレッドが終了するようにすればよい訳です。
例えば、すぐに終了するジョブストリームを作ります。そしてシステム生成の「優先処理プログラム」にそのジョブストリームを指定します。そうすると「優先処理コマンド」を実行すると「優先処理」状態となり、「優先処理プログラム」で指定したジョブストリームが実行されます。そのジョブ(スレッド)がすぐに終了するので 「優先処理」状態が終了します。「優先処理」状態は一瞬だけなので、事実上「優先処理コマンド」を無効にしたのと同じ事になります。

すぐに終了するJSの例:ユーティリティ#LBMを起動してすぐに終了する。

/RUN #LBM;
MDE=END
/> ;


★停止コマンド

現在端末に接続中のプログラムの実行を一時停止します。

このコマンドは接続中の(表画面になっている)ジョブを一時的に停止させることができます。一時停止状態を解除するには「再開コマンド」を実行する必要があります。もし「再開コマンド」を実行しない場合はずっと停止したままです。
ジョブストリーム実行中であろうとアプリケーション実行中であろうといつでも一時停止状態になります。「停止コマンド」を実行した時にキー入力待ち状態であれば、キー入力が終了した後に一時停止状態となります。

接続中でない(つまり裏画面になっている)ジョブは「停止コマンド」で一時停止できません。「画面接続コマンド」を使って、停止させたいジョブを接続して(つまり表画面にして)から「停止コマンド」を実行して一時停止させます。

「停止コマンド」を実行して停止状態になると、画面の画面の右下のプログラム名の左側に「P」と表示されます。

一時停止状態であっても「画面接続コマンド」「画面切離コマンド」「操作開始コマンド」「プログラム放棄コマンド」などのシステムコマンドは使用できます。

★再開コマンド

端末に接続中のプログラムが一時停止の状態であれば、その実行を再開します。

一時停止状態になるのは以下の場合です。一時停止状態の場合、画面に「P」マークが表示されます。

  • 停止コマンドを実行した場合
  • JCLのPAUSE文を実行した場合
  • アプリケーションから一時停止を実行した場合(例えばCOBOLでSTOP命令実行した場合)

「再開コマンド」を実行することによって、上記の一時停止状態を解除します。

★プログラム放棄コマンド

現在端末に接続中のプログラムの実行を強制終了させます。

「プログラム放棄コマンド」を実行すると以下の画面になります。終了する場合は「1:はい」か「3:アボートダンプ不要」を選択します。「1:はい」の場合はアボートダンプを採取する画面になります。やっぱり終了しませんという場合は「2:いいえ」を選択します。


アボートダンプ採取画面

ある程度どのような処理をしているのかわかっていて「プログラム放棄コマンド」を実行していれば問題ないのですが、ジョブ実行中に実行すると途中でプログラムを終了させてしまうので、データが不正になったり危険な状態になる可能性があります。ある意味最後の手段的なコマンドです。

★業務放棄コマンド

現在ワークステーションに接続中のジョブストリームの実行を強制終了させます。

「業務放棄コマンド」を実行すると以下の画面になります。終了する場合は「1:はい」か「3:アボートダンプ不要」を選択します。「1:はい」の場合はアボートダンプを採取する画面になります。やっぱり終了しませんという場合は「2:いいえ」を選択します。


これも最後の手段的なコマンドで、データが不正な状態になってしまうこともあります。

「プログラム放棄コマンド」と「業務放棄コマンド」との違い

「プログラム放棄コマンド」と「業務放棄コマンド」は一見良く似ています。何が違うのでしょうか。
「プログラム放棄コマンド」は現在実行中のプログラムだけ強制終了するのに対して、「業務放棄コマンド」は現在実行中のプログラムに加えてJS自体も終了させます。

例えば、以下のようなジョブストリームがあったとします。このJSでは、LMA、LMB、LMCという3つのロードモジュールを順番に実行しています。LMBはDBからデータを入力/編集して結果をファイルに出力するロードモジュールだとします。
LMBを実行中に「プログラム放棄コマンド」と「業務放棄コマンド」を実行した場合の動作の違いを説明します。

/RUN LMA;
/> ;
/RUN LMB;  <--ここでコマンド実行
/> ;
/RUN LMC;
/> ;


・LMB実行中に「プログラム放棄コマンド」を実行した場合
LMBは「プログラム放棄コマンド」を実行した時点で強制終了されます。例えばデータ編集中に「プログラム放棄コマンド」が実行された場合、その時点でLMBの処理は終了され、編集中のデータがファイルに出力されません(あるいは中途半端な状態になっているか)。LMBが強制終了された後、次のRUN文が実行されLMCが実行されます。
例えばLMCの処理にLMBのファイル出力したデータが必要だった場合、LMBはデータ出力せずに強制終了してしまっているので、LMCは正しく動きません。このように強制終了した場合に備えて、JSの流れ制御文等で「LMBがアボートしたらLMCを実行しない」ような作りにしなければなりません。

・LMB実行中に「業務放棄コマンド」を実行した場合
LMBは「業務放棄コマンド」を実行した時点で強制終了されます。例えばデータ編集中に「業務放棄コマンド」が実行された場合、その時点でLMBの処理は終了され、編集中のデータがファイルに出力されません。JS自体も強制終了されるので、LMCは実行されません。


上ではLMBがロードモジュールだった場合を説明しましたが、これがロードモジュール(LMB)ではなくJS(JSB)だった場合はまた話が変わります。JSB実行中に「業務放棄コマンド」が実行された場合、「業務放棄コマンド」によって強制終了されるJSはJSBです。LMCは実行されます。JSからJSを起動して、またJSからJSを・・とJSが階層化している場合は、今実行中のJSだけが終了します。その上位の階層のJSの続きから実行します

★アテンションコマンド

各種コマンドをプログラムファンクションキーとして入力する時に使用するシステムコマンドです。
また拡張システムコマンド(拡張コマンド)を使用するためにも使用します。

コマンド一覧のメニューの内容は、システム構成によって変わります。以下は一覧の例です。
ここで実行したいコマンドに対応するプログラムファンクションキー(PF1〜)または数字を入力します。

★画面ハードコピーコマンド

端末に接続されているプリンタに、そのワークステーションの画面イメージを出力します。ハードコピー動作中に、再度画面ハードコピーコマンドのシステムファンクションキーを押すと、コピー動作は停止、終了します。画面がシステム画面(画面上に*SYST*表示中)になっているときは、ハードコピーコマンドは無効となります。

パソコンのPC/WSエミュレータの場合は、デフォルトでPrintScreenキーに割り当てられているので、Windows自身のPrintScreenキーの機能であるウインドウの全体のビットマップイメージがクリップボードに転送されるということも同時に行われます。これが嫌な場合はPC/WSエミュレータの設定変更でCOPYキーの割り当てをPrintScreenキーとは別のキーに変更します。あるいは画面ハードコピーコマンド自体使わないのならCOPYキーの割り当て自体をなしに変更します。

ハードコピーはPC/WSエミュレータが動作しているパソコンに接続したプリンタに対してのみ印刷可能で、カラー印刷はできません。

★メッセージ送信コマンド

システム生成で設定されている場合のみ使用できます。次のメッセージ受信コマンドと対になります。

あるステーション(端末)から別のステーションに対して、メッセージを送信することができます。

アテンションコマンドを実行すると表示されるメニューからPF12キーを押すと以下の画面が表示されますので、そこで送信したいメッセージを入力します。
下の画面では「こんにちは!」と入力しています。


メッセージを入力して、HTABキー(パソコンのキーだとENTERキー)を押すと、下の画面になります。
センタステーション(システムステーション)に送信するときはPF1キー(パソコンのキーだとF1キー)を押します。その他に送信するときはPF2キー(F2キー)を押します。


上でPF2キーを押すと下の画面になるので、メッセージを送信したいステーションを指定します。1画面で10台ぐらい表示されるので、表示されていないステーションに送りたい場合は前進キー(SHIFT+Page Down)と後退キー(SHIFT+Page Up)でメニューを移動して、目的のステーションを探して送信します。


メッセージ本文は日本語で40文字までです。
OCFありの場合は、自動的に送信者名がオペレータ名になります。
相手ステーションにメッセージの数が6個以上たまっている場合は、メッセージは送信されずエラーメッセージが表示されます。
この機能が使用できるシステムは、ステーションが64台までのシステムです。これ以上のステーションを接続している場合は、システム生成時にエラーになります。

一見便利な機能のように見えますが、実際使ってみるとあまり役に立ちません。

★メッセージ受信コマンド

システム生成で設定されている場合のみ使用できます。メッセージ送信コマンドと対になります。

メッセージ送信コマンドで送信されたメッセージを受信することができます。

業務中に画面下に以下のように「I M0118:受信メッセージがあります」というメッセージが表示されたら、どこかのステーションからのメッセージが届いています。


アテンションコマンドを実行すると表示されるメニューからPF13キーを押すと下のような画面が表示されます。もしメッセージが届いていれば、メッセージが表示されます。
1メッセージが表示されると、確認のためのキー待ち状態となります。ここでHTABキー(ENTERキー)を押すと、次のメッセージが表示されます。蓄積されたメッセージがなくなるまで、順番に表示されます。1度表示されたメッセージは消えてしまいます。残すことはできません。


1台のステーションで蓄積できるメッセージの数は6個までです。既に6個たまっている場合は、受信できません。

この機能が使用できるシステムは、ステーションが64台までのシステムです。これ以上のステーションを接続している場合は、システム生成時にエラーになります。

システム管理者が「あと10分でシャットダウンします」みたいに端末使用者に一斉にメッセージ送信したり、特定の使用者間でメッセージを送受信することを想定した機能だと思いますが、実際は使えないです。
画面下に表示される「受信メッセージがあります」が気付かれにくいうえに何かキーを押すと消えてしまう、たいていの使用者はアテンションコマンドを知らないのでメッセージを見ることができない、などの理由によります。

★リモートWS、ローカルWSコマンド

仮想ワークステ−ションエミュレータの画面に切り換えたり、ステーション画面に切り換えたりします。

A−VX/NETという機能を利用している場合に使用できます。

★日付、時刻の表示、変更コマンド

このコマンドを入力した時点の日付と時刻が表示されます。また、日付、時刻を変更することもできます。

このコマンドだけは特別でキーが割り当てられておらず、アテンションコマンドから「PF11]キーを押して実行します。

日付や時刻を変更することもできますが、A−VX側の日付時刻はオフコン起動時にWindows側の日付時刻を自動的に適用します。なのでWindows側の日付時刻が正しければ変更する必要はありません。

以前私が個人的に試行錯誤した記事がありますので、以下にリンクしておきます

A−VXの日付・時刻と時刻サーバで同期をとるには?

4 もっと詳しく知りたい

そういう時は

・システム管理説明書

『画面に接続していない』状態と言います。画面に表示されている状態のジョブを『画面に接続している』状態のジョブと言います。
「画面接続コマンド」を実行することによって、画面に接続されていないジョブを順番に画面に接続することになります。言葉を変えると順番にジョブを「表画面」にするということ。
画面に接続されると(画面が現れるのだから当然のことながら)そのジョブにデータを入力したり、出力待ち状態となっているメッセージ等が画面に出力されたりします。
PC/WSエミュレータ(Windows版)には、ジョブの一覧を表示してそこから接続するジョブを選ぶ機能が付いています。一方なぜかPC/WSエミュレータ(32)版には、その機能が削除されています。
このジョブが起動できる数はシステムによって違い、システム生成で設定されています。小さいシステムでは1、2ジョブまでから、大きいシステムでは数百ジョブが同時に実行できるようにもなります。
この値はSEの人などが業務の内容やシステムの資源(メモリサイズやCPUの能力)を元に設計して決めています。
「いつもはこのメッセージは出ないのに、今日はなぜか出た」という場合は、たいてい誰かがいっぱいジョブを起動しています。
「画面接続コマンド」を実行してメニュー画面が表示された場合、そのメニュー画面が1つのジョブとなるので、誰かが「画面接続コマンド」をいっぱい実行して、いっぱいメニュー画面のジョブを起動してしまったというのはありえます。この場合は「アテンションコマンド」でジョブの一覧を表示して犯人を捜すのが一番です。後は不要なメニュー画面のジョブを「業務放棄コマンド」で終了させます。

もし「誰も悪さをしていないのにいつも出る」ならばジョブの最大数が少なすぎるので、システム生成を再度行う必要があります。
例えば、システム生成の「初期プログラム」や「優先処理プログラム」の設定をどのようにしているか、あるいは「WSモード」をどうしているかなど。
画面の下にシステムメッセージ行がある25行モードの場合には画面の右下に表示される。
26行モードを持つ一部の端末は画面の上にシステムメッセージ行があるので、その場合は画面の右上に表示される。
パソコン上で動くPC/WSエミュレータは25行モードしか持たないので、画面の右下に「I」が表示されます。
スレッドはジョブの入れ物みたいなものです。だいたい「スレッドを終了させる=ジョブを終了させる」と思ってよい。
とは言え、アプリケーション終了が「プログラム放棄コマンド」実行を前提としているものも結構あります。そういう終わり方ができるように作ってあるアプリケーションは特に問題なく実行できます。
メッセージ行が下にある場合。メッセージ行が上にあるときは画面上側に表示されます。パソコンのPC/WSエミュレータはメッセージ行は下側にあります。
画面の下にシステムメッセージ行がある25行モードの場合には画面の右下に表示される。
26行モードを持つ一部の端末は画面の上にシステムメッセージ行があるので、その場合は画面の右上に表示される。
パソコン上で動くPC/WSエミュレータは25行モードしか持たないので、画面の右下に「P」が表示されます。
画面を接続したり、ジョブが終了したりしたタイミングで表示されるので、たいてい気付かれません。私個人的にはこのメッセージ送受信機能はあまり使い道の無い機能だと思います。