Archive for 'APIで学ぶMVSの機能' Category

11.2DASD空きスペースの取得(LSPACE)

By 神居 - Posted: 木曜日, 12月 9, 2010

ボリュームにどのくらいの空きスペースがあるかを知りたい場合は、OBTAINマクロで空きスペース情報を管理するDSCBや、CVAFでVTOCインデックスデータセットの空きスペースマップを読み込み、それを解析することもできま […]

11.1カタログの探索とデータセット情報の取得(LOCATEとOBTAIN)

By 神居 - Posted: 水曜日, 12月 8, 2010

一般のデータセットへのアクセスだけでなく、カタログやDASDボリュームのVTOC(索引)にアクセスするためのサービスも提供されています。現在ではわざわざプログラムなどを作らなくても、ISPFやユーティリティ、ISVソフト […]

10.3定義されているDD文の取得(TIOTの探索)

By 神居 - Posted: 火曜日, 12月 7, 2010

JCLにどのようなDD文が定義されているかを知りたい場合は、TIOTをスキャンします。TIOT(Task Input/Output Table)は、JCLに定義されたDD文に基づいて作成される制御表で、ステップ開始時のデ […]

03.3ENQされているリソースを求める(GQSCAN)

By 神居 - Posted: 月曜日, 10月 11, 2010

資源の排他制御を行うためにはENQおよびDEQを使用します。MVSでは8バイトのQ名と255バイトまでのR名を組み合わせて資源に名前を付けて排他制御を行います。ENQ/DEQについては「資源の逐次化(排他制御)を行う(E […]

04.4MCS仮想コンソール機能

By 神居 - Posted: 金曜日, 10月 8, 2010

コンソールをプログラムでハンドリングしたい、という要望は古くからありました。SDSFのような対話型の操作ツールに乏しかった当時は、コンソールはOSを操作する上で最も基本となるデバイスでした。専門のオペレーターをコンソール […]

01.4共通域のGETMAINとアンカーポインター(NAME/TOKEN)

By 神居 - Posted: 金曜日, 9月 24, 2010

複数のジョブで構成されるソフトウェア、ジョブをまたがってデータをやり取りするようなソフトウェア(例えば通信サーバー、データベースなど)では共通域を使ってデータをやり取りすることができます。多重アドレス空間のMVSではジョ […]

01.3獲得済み領域の管理(VSMLIST)

By 神居 - Posted: 木曜日, 9月 23, 2010

プログラムが仮想記憶内のどの領域をGETMAINしているかをマッピングすることができます。一般のプログラムではほとんど必要とされませんが、サーバー・プログラムなどで、自分が使用しているリソース量の詳細を得る機能などを実装 […]

07.2複数の非同期事象をFIFOで処理する(EVENTS)-2

By 神居 - Posted: 木曜日, 9月 9, 2010

EVENTSマクロによって複数のECBをFIFOで処理できることは解説しました。複数のECBにPOSTがなされている状態でも、WAIT=YES指定のEVENTSマクロ発行毎に完了済みのECBが順番に通知されます。しかし同 […]

07.2複数の非同期事象をFIFOで処理する(EVENTS)-1

By 神居 - Posted: 木曜日, 9月 9, 2010

非同期事象(「いつ来るかわからない」「いつ終わるかわからない」と言った事象)の待ち合わせを行うAPIとして基礎編では WAIT マクロを解説しました。1つ、あるいは数個のイベントを待ち合わせる場合はWAITマクロが利用で […]

06.3タスクの生成(ATTACH/DETACHとIDENTIFY)-2

By 神居 - Posted: 火曜日, 9月 7, 2010

ATTACHマクロのEPまたはEPLOCキーワードで指定できるのはロードモジュール・メンバーの名前です。したがってこの点だけで考えるとATTACHできるのはLINKやXCTLのように独立したロードモジュールになっているプ […]

06.3タスクの生成(ATTACH/DETACHとIDENTIFY)-1

By 神居 - Posted: 火曜日, 9月 7, 2010

MVS(z/OS)はマルチタスクのオペレーティング・システムです。一般のアプリケーションでも複数のタスクに処理を振り分けることで、より実行効率のよいプログラム構造を持つこともできます。同時に複数のイベント(処理要求)が発 […]

05.4ABENDリカバリーを行う(ESTAE)

By 神居 - Posted: 月曜日, 12月 28, 2009

ESTAEは、プログラム独自のリカバリー環境を作成するためのAPIです。リカバリーとは、プログラムが異常終了する際に行われる一連の回復手順です。ESTAEを使用すれば、プログラムは異常終了の発生を受け取り、必要な診断情報 […]

10.1データセットを割り振る(DYNALLOC)

By 神居 - Posted: 木曜日, 12月 10, 2009

MVSではプログラムがアクセスするデータセットは、ジョブを実行するJCLのDD文で、あらかじめ定義しておくのが一般的です。バッチ処理においては、ほとんどのジョブがDD文による事前の定義を行っています。しかしオンライン処理 […]

10.2DD文定義情報を得る(DEVTYPEとRDJFCB)

By 神居 - Posted: 水曜日, 11月 25, 2009

プログラムを実行するには、JCLを作成し、使用するデータセットに対応したDD文を定義します。DD文にどのようなパラメーターが定義されているかによってプログラムの動きを変えたり、アクセスするデータセットの情報を得たりするこ […]

04.3複数行メッセージの出力

By 神居 - Posted: 水曜日, 4月 8, 2009

コンソールにメッセージを出すために、WTOマクロを使うことはすでに説明しました。一般には1つのメッセージが1つのWTOマクロによって出力されますが、オペレータ・コマンドの処理結果など、プログラムの処理結果を複数のメッセー […]

05.3プログラム割込みのトラップ(SPIE,ESPIE)

By 神居 - Posted: 月曜日, 4月 6, 2009

業務用アプリケーションでは、誤ったデータによる演算の結果、プログラムが異常終了することがしばしば起こります。プログラムロジックには問題がないのにデータが原因でプログラム割り込みが引き起こされるためです。このようなことを防 […]

04.2オペレーター応答とコマンドを受け取る(WTORとQEDIT)

By 神居 - Posted: 金曜日, 12月 12, 2008

プログラムがコンソール・オペレーターと通信(会話)を行うには2つの方法があります。1つはメッセージを出力して、そのメッセージに対する応答を受け取る方法です。もう1つはメッセージとは無関係にオペレーターがMODIFYコマン […]

01.2ストレージ・プールの作成(CPOOL)

By 神居 - Posted: 金曜日, 12月 5, 2008

リエントラントプログラムでは書き込みを行うレジスター保管域や作業域はプログラムの外に確保するため、GETMAIN/FREEMAINマクロを利用します。しかし頻繁に呼び出されるモジュールでは呼び出しの度にこれらの領域の獲得 […]

09.1プログラムをスーパーバイザー・モードに切り替える(MODESET)

By 神居 - Posted: 水曜日, 11月 26, 2008

一般のアプリケーション・プログラムではほとんど必要ありませんが、システム・プログラムでは処理によっては監視プログラム(スーパーバイザー)モードに切り替える必要が生じます。例えば監視プログラム状態を要求するAPIの使用(M […]

08.1TSO端末との通信(TPUTとTGET)

By 神居 - Posted: 水曜日, 11月 26, 2008

MVSにおけるアプリケーション・プログラムの基本はバッチ処理ですが、端末と直接会話できるオンライン処理もポピュラーな利用方法です。基幹業務システムに使うプログラムはCICSやIMSなどを使って動かしますが、簡単な処理や非 […]