»

SYSINデータセットとは

By 神居 - Posted: 2010/11/26 Last updated: 2010/11/26 - Leave a Comment

SYSIN[データセット]

出力のSYSOUTに対して、入力データセットとなるのがSYSINです。正確には「(JCL)ストリーム内データセット」と言い、SYSOUTのOUTに対するINであることや、OSのユーティリティーの多くがそのDD名にSYSINを使用することから、SYSINデータセットと呼ばれます。JCLのDDステートメントにDSNパラメーターの代わりに「*」を指定することで、次の行からJCLステートメントではなく、プログラムへ渡す入力データを記述することができます。
SYSINデータはユーティリティーやアプリケーションプログラムの機能コマンドや制御パラメーターとして非常によく利用されています。

SYSINデータ(ストリーム内データセット)は、「*」を定義したDDステートメントの次の行から書き始めます。書き出し位置(開始桁)や構文、内容はまったくの自由で、入力するプログラムの仕様で決まります。この例ではAMSユーティリティーのDEFINE CLUSTERコマンドを記述しています。
SYSINデータはJCLと同じ80バイトの固定長レコードのデータです。80を超える長いレコード長も取り扱えますが、あまり一般的ではないと思われます。

SYSINデータの終わりは、/*ステートメントまたは別のJCLステートメント(//)によって示します。

別のジョブのJCLそのものを、SYSINデータとして記述したい場合があります。この場合は、DDステートメントに「*」ではなく「DATA」パラメーターを定義します。

/*ステートメントそのものも、SYSINデータとして記述したい場合は、DLMパラメーターで区切り文字を指定できます。


SYSINからのデータ入力

COBOLにせよアセンブラーにせよ、SYSIN(ストリーム内データセット)を読み込むには、固定長レコードの順次データセットとして読み込みを行えばいいのです。SYSOUT同様にプログラム自身ではSYSINから読むとかDISKのデータセットから読むとかの意識は基本的にしません。
実際のデータセットから読むか、JES2のスプールから読むかはJCLで決まります。JCLの定義を変えれば、プログラムをいじらなくても運用でデータの読み込み元を自由に変えることができます。
COBOLプログラムの場合、DD名をSYSINと決めてあるなら、ファイルアクセスよりも簡単にACCEPT文を書くだけで読み込み処理ができます。「COBOLプログラムでSYSINにアクセスする」


プロシージャーでのストリーム内データセット定義

プログラムの実行にとても便利なストリーム内データセットの機能ですが、残念ながらプロシージャー内には定義できません。ただしMVSの場合は、STARTコマンドで起動するプロシージャーのJCLを、MSTRJCLのIEFJOBS DD文に定義されたデータセットにJOB文を持つジョブのJCLとして登録すれば、そのジョブをSTCタスクとして起動することもできます。この場合のJCLはカタログ・プロシージャーではなく、ジョブ用JCLになるのでストリーム内データセットを使用できます。この場合はそのJCLをサブミットすればJOBとして実行され、STARTコマンドで起動すればSTCタスクとして実行されます。
あくまでもプロシージャー内でSYSINを使用するなら、プロシージャー内には定義できないので、そのプロシージャーを呼び出す時に、DD文の追加または置き換えの形で定義します。

Posted in キーワードから(何が知りたいですか) • • Top Of Page