JCL サポート

この章では、提供される JCL のサポートについて説明します。

概要

この COBOL 開発システムを使用すると、MVS メインフレーム・アプリケーションをビルドし、それを Windows または UNIX 上の Enterprise Server にディプロイして、Enterprise Server で実行することができます。JCL ファイルは、開発システムまたは実行環境のいずれかで管理できます。

MVS アプリケーションの重要な部分は、そのアプリケーションの実行を制御する JCL ジョブストリームです。MSS は、PC または UNIX ワークステーションでのバッチ JCL ジョブストリームの使用をサポートする機能を備えています。統合開発環境 (Integrated Development Environment; IDE) 内では、次の操作ができます。

JCL サポートの主目的は、MSS での操作をメインフレームで行われる操作とできるだけ同様になるように維持することです。したがって、MSS では次の操作を行うことができます。

JCL サポートを使い始める前に、次のトピックについて理解を深める必要があります。

後続のセクションでは、これらの各トピックについて説明します。

JCL ジョブストリーム

MSS では、メインフレームで実行できる JCL ジョブストリームと同じ JCL ジョブストリームを実行できます。MSS は、JCL 文にエラーがないかを可能な限りチェックします。いくつかのパラメータ (特に DD 文のパラメータ) は、Windows または UNIX で動作している MSS では意味を持たないため、無視されます。このセクションでは、MVS メインフレーム環境の代わりに MSS 環境で JCL ジョブストリームを使用する場合に適用される違いについて説明します。

MSS は、MVS JCL と VSE JCL の両方をサポートしています。後続の各セクションでは、MVS JCL と VSE JCL に対するサポートのレベルについて説明します。

MVS JCL サポート

次の各セクションでは、サポートされている MVS JCL の機能と文について説明します。

MVS JCL 機能

次の MVS JCL 機能がサポートされています。

次の MVS JCL 機能はサポートされていません。

MSS によってサポートされる MVS JCL 文の詳細については、このセクションの後の方で説明します。

MSS は、直接的に、または TSO SUBMIT コマンドと Micro Focus 拡張の ASUBMIT によって MVS JCL ジョブストリームの実行をサポートします。これらの TSO コマンドは、IKJEFT01 ユーティリティーで実行できます。

MVS JCL ジョブストリームとカタログ式プロシージャーが含まれているファイルは、PC または UNIX マシン上で作成できます。カタログ式プロシージャーは、プロシージャー・ライブラリーと呼ばれる区分データ・セットのメンバーとして格納する必要があります。プロシージャー・ライブラリーは、次の 2 つの方法で MSS に対して定義されます。

MSS は、これらのライブラリーを上記の順に検索します。

ジョブが実行用にエンタープライズ・サーバーへサブミットされた場合、その結果は、次のように JOB 文の TYPRUN パラメータの設定によって異なります。

TYPRUN=SCAN   構文がスキャンされます。
TYPRUN=COPYジョブストリームが SYSOUT データ・セットにコピーされます。
TYPRUN=HOLD明示的に実行用にリリースされるまでジョブが保留されます。
No TYPRUNリソースが使用可能であることを前提として、ジョブがすぐに実行されます。

MVS JCL 文

MVS JCL 文の詳細については、マニュアル 『IBM OS/390 MVS JCL Reference』を参照してください。

次の MVS JCL 文がサポートされています。

説明
DD データ・セットの割り当てとディスポジションを定義します。
EXEC 実行されるプログラムまたはカタログ式プロシージャーを含めて、ジョブ・ステップを定義します。
  • IF
  • THEN
  • ELSE
  • ENDIF
MVS JCL 文の条件付き実行を指定します。
INCLUDE 定義済みの MVS JCL 文をジョブストリーム内のどこにインクルードするのかを指定します。
JCLLIB プロシージャー・ライブラリーとそれらのライブラリーの検索順序を指定します。
JOB ジョブを定義します。MSS では、ジョブストリームごとに 1 つのジョブだけがサポートされます。
JOBLIB EXEC 文で識別されたプログラムが検索されるプライベート・ライブラリーを指定します。
PROC インストリーム MVS JCL プロシージャーの開始を定義します。
PEND インストリーム MVS JCL プロシージャーの終了を定義します。
SET シンボリック・パラメータに割り当てられる値を定義します。
STEPLIB EXEC 文で識別されたプログラムが検索されるプライベート・ライブラリーを指定します。
OUTPUT ジョブ・エントリー・サブシステムで SYSOUT データ・セットを印刷する場合に使用する処理オプションを指定します。MSS では、次のパラメータだけがサポートされます。
  • BURST
  • CHARS
  • COPIES
  • DEST
  • FLASH
  • FORMS
  • UCS

次の MVS JCL 文はサポートされていません。これらは、正しい構文かどうかのみチェックされます。

説明
COMMAND コマンドを MVS および JES2 に発行します。
CNTL プログラム制御文のセットの開始を定義します。
ENDCNTL プログラム制御文のセットの終了を定義します。
XMIT JES3 からレコードを送信します。

VSE JCL サポート

次の各セクションでは、VSE JCL のサポートについて説明します。

制限事項

次のリストでは、VSE JCL のサポートに適用される一般的な制限事項をいくつか示します。個々の文のサポートについては、VSE JCL および POWER 文POWER 文のセクションを参照してください。

VSE JCL および POWER 文

VSE JCL および POWER 文に対して用意されているサポートのレベルを次の表に示します。各文の「サポート・レベル」列は、文が完全に処理されるのか、あるいは正しい構文かどうかをチェックするために構文解析のみ行われるのかを示しています。この表にリストされていない VSE JCL および POWER 文はサポートされません。

パラメータサポート・レベル
// ASSGN SYSxxx構文解析
 ",Device"構文解析
 "[,TEMP|PERM]]"構文解析
 "[,VOL-volser]"構文解析
// ASSGN SYSxxx処理
 ",Device"処理
 "[,TEMP|PERM]]"処理
// ASSGN SYSxxx構文解析
 ",Device"構文解析
 "[,mode|ALT]"構文解析
 "[,TEMP|PERM]]"構文解析
 "[,VOL-volser]"構文解析
// DATEシステム設定に応じて mm/dd/yy または dd/mm/yy構文解析
//DLBL filename処理
 ",’fileid’"処理
 "[,date]"構文解析
 "[,code]"構文解析
 "[,DSF]"構文解析
 "[,BLKSIZE=n]"処理
 "[,CISIZE=n]"構文解析
//DLBL filename処理
 ",’fileid’"処理
 "[,exp-date]"構文解析
 "[,VSAM]"処理
 "[,DSF]"構文解析
 "[,BUFSP=n]"構文解析
 "[,BUFND=n]"構文解析
 [BUFNI=n]構文解析
 "[,CAT=catname]"構文解析
 "[,DISP=(disp,disp,disp)]"処理
 "[,RECORDS=primary,secondary]"構文解析
 "[,CISIZE=n]"構文解析
// EXECPROC=procname処理
 "[,parms]"処理
// EXEC[PGM=]progname処理
 "[,REAL]"構文解析
 "[,SIZE=size]"構文解析
 "[,GO]"構文解析
 "[,PARM=’value’]"処理
// EXTENT[logical-unit]構文解析
 ",[volser]"構文解析
 ",[type]"構文解析
 ",[seqnumber]"構文解析
 ",[location]"構文解析
 ",[quantity]"構文解析
 ",[split-cylinder-track]"構文解析
// GOTO[label | $EOJ]処理
// IF{ $RC | $MRC | parameter-name }処理 (構文解析のみ行われる parameter-name を除く)
 operator処理
 value処理
 [OR|AND]処理
 { $RC | $MRC | parameter-name }処理
 operator処理
 value処理
 THEN処理
// JOBjobname処理
 [accounting info]処理
// LIBDEFtype処理
 "[,SEARCH=(lib1,slib1,…lib15,slib15)]"処理
 "[,CATALOG=lib.slib]"処理
 "[,TEMP|PERM]"構文解析
// LIBDEFtype構文解析
 "[,SEARCH=(lib1,slib1,…lib15,slib15)]"構文解析
 "[,CATALOG=lib.slib]"構文解析
 "[,TEMP|PERM]"構文解析
// LIBDROPtype処理
 "[,definition-type]"処理
 "[,TEMP|PERM]"構文解析
// LIBDROPtype構文解析
 "[,definition-type]"構文解析
 "[,TEMP|PERM]"構文解析
// LIBLISTtype処理
 "[,partition]"構文解析
 "[,SYSxxxx]"構文解析
// LISTIOtype処理
 "[,partition]"構文解析
 "[,outdev]"構文解析
// LIBSERVテープ・ライブラリー・サーバーに要求を送信する構文解析
// LOG および // NOLOG 構文解析
// MTC operation構文解析
 "[,device]"構文解析
// ON{$RC operator n | $CANCEL |$ABEND }処理
 [{OR|AND} condition]処理
 {$RC operator n | $CANCEL |$ABEND }処理
 [GOTO label | CONTINUE]処理
// OPTIONparm構文解析
 "[,parm2,…….]"構文解析
// PAUSEComment data構文解析
// PROC[parm=value]処理
// PWRPRELEASE [operands] !]処理
 PHOLD[operands構文解析
// RESETtype処理
// SETPARM Parm=value処理
 "[,parm=value,………]"処理
// SETPFIX 構文解析
// STDOPT"Option[,option2…]"構文解析
// TLBLfilename処理
 ",’fileid’"処理
 "[,date]"構文解析
 "[,volser]"構文解析
 "[,volseq]"構文解析
 "[,fileseq]"構文解析
 "[,generation]"構文解析
 "[,version]"構文解析
// UPSInnnnnnnn処理
// ZONEEAST/hh/mm または WEST/hh/mm構文解析
/. label 処理
/* 処理
./ 処理
* 処理
/+ 処理

POWER 文

POWER 文に対して用意されているサポートのレベルを次の表に示します。各文の「サポート・レベル」列は、文が完全に処理されるのか、あるいは正しい構文かどうかをチェックするために構文解析のみ行われるのかを示しています。この表にリストされていない POWER 文はサポートされません。

パラメータサポート・レベル
* $$ JOBJNM=jobname処理
 [,DISP=disp]構文解析
 [,PRI-pri]構文解析
 [,CLASS=class]構文解析
 [,NTFY=ntfy-option]構文解析
 [,USER='user info'}構文解析
 FROM=user_id構文解析
 LOG=x構文解析
 BRTNC=xxx構文解析
 DUETIME=options構文解析
 [,BLDG=x]構文解析
 [,DEPT=x]構文解析
 [,ROOM=x]構文解析
 [,EOJMSG=YES]構文解析
 [,PWD=x]構文解析
 [,PROGR=x]構文解析
 SYSID=(node_id,user_id)構文解析
 NETACCT=account_no構文解析
 XDEST=(node_id,user_id)構文解析
 LDEST=(node_id,user_id)構文解析
 PDEST=(node_id,user_id)構文解析
 SEC=(user_id,password)構文解析
* $$ LST[,DISP=disp]処理
 [,PRI-pri]処理
 [,CLASS=class]処理
 [,UNIT=addr]処理
 [,LST=SYSxxx]処理
 [,FNO=xxx]処理
 [,FCB=xxxxxx]処理
 [,JSSEP=x]処理
 [,RBS=nnnn]処理
 RBM=(norbm1,norbm2)処理
 RBC=norbc処理
 BRTNC=xxx処理
 PURGE=nnn処理
 DEST=(node_id,user_id,subsystem)処理
 PRMODE=value処理
 REMOTE=remote_id処理
 CMPACT=name処理
 SYSID=n処理
 DIST=distcode処理
 TADDR=(tapeaddr,mode)処理
 USER=user_info処理
 PWD=password処理
 BURST=x処理
 CHARS=tablename処理
 COPYG=(groupvalue)処理
 DLFT=x処理
 FLASH=(overlayname,count)処理
 MODIFY=(copymodname,tablename)処理
 [,PAGEDEF=xxx]処理
 [,FORMDEF=xxxx]処理
* $$ PUN 処理
 JNM=jobname処理
 CLASS=class処理
 DISP=disposition | D | T処理
 PRI=priority処理
 PUN=punchaddr処理
 COPY=n処理
 FNO=formno処理
 RBS=norbs処理
 RBM=(norbm1,norbm2)処理
 RBC=norbc処理
 JSEP=(n,option)処理
 BRTNC=YES | NO処理
 PURGE=NO | nnnn処理
 DEST=(node_id,user_id,subsystem)処理
 PRMODE==x処理
 SYSID=n処理
 DIST=distcode処理
 USER=userinfo処理
 PWD=password処理
* $$ SLI  
 MEM-membername構文解析
 ,[.type]構文解析
 ,S=lib1.sublib,lib2.sublib2]構文解析
 Sublib.構文解析
 bookname構文解析
* $$ SLI  
 ICCF=membername,処理
 LIB=(libnumber,password)処理
* $$ DATAname構文解析
* $$ CTL CLASS=class構文解析
* $$ EOJ 処理

VSE JCL 構成ファイル

VSE では、シャットダウンまでシステム上で実行される任意のジョブに使用可能な値をシステム・スタートアップ時にいくつか設定できます。MSS は、構成ファイルを使用して、この動作をエミュレートします。構成ファイルでは、次のことに関する情報を指定できます。

MSS は、各ジョブの開始時に構成ファイルを読み取ります。そのため、ジョブを実行してから構成ファイルを変更した場合は、そのジョブを再実行すると、変更済みの構成ファイルが取得されます。

VSE JCL 構成ファイルの構造

VSE JCL 構成ファイルは、名前と値のペアー・エントリーがいくつか含まれているテキスト・ファイルです。各エントリーは、別々の行にあります。空白行やアスタリスク (*) で始まる行は、コメント行として扱われます。

名前と値のペアー・エントリーのフォーマットを次に示します。

デバイスの場合:

device_id      id
device_type    type

補足説明:

idはデバイス・アドレスを指定する 3 桁のコードです。
typeは PRINTER、READER、PUNCH、DISK、または TAPE のいずれかです。

論理装置の場合:

assgn_lu        lu
assgn_device    device

補足説明:

luは使用する論理装置です。
deviceは論理装置 lu に割り当てるデバイスです。

標準ラベルの場合:

dlbl_dd         dd
dlbl_dsn        dsn

補足説明:

ddは使用するラベルです。
dsnはラベル dd に割り当てるデータ・セット名です。

注:パーティションを定義するための名前と値のペアー・エントリーもありますが、それを指定しても効果はありません。

VSE JCL 構成ファイルのロケーションの指定

VSE JCL 構成ファイルを MSS で使用できるようにするには、VSE_STARTUP_CFG 環境変数を使用してそのファイルのロケーションを指定します。例えば、/home/setup/vseconfg.cfg で構成ファイルを作成した場合は、次のように VSE_STARTUP_CFG を設定します。

VSE_STARTUP_CFG=/home/setup/vseconfg.cfg
export VSE_STARTUP_CFG
VSE JCL 構成ファイルの例
* ==================================================================
* =     VSE SYSTEM START-UP                                        =
* ==================================================================
partition        BG
* ==================================================================
* =     devices                                                    =
* ==================================================================
device_id        02A
device_type      PRINTER
*
device_id        02B
device_type      PRINTER
*
device_id        02C
device_type      PRINTER
*
device_id        02D
device_type      PRINTER
*
device_id        02E
device_type      PUNCH
*
device_id        02F
device_type      READER
*
device_id        42E
device_type      PRINTER
*
device_id        43E
device_type      PRINTER
*
device_id        44E
device_type      PRINTER
*
device_id        45E
device_type      PRINTER
*
device_id        46E
device_type      PRINTER
*
device_id        020
device_type      DISK
* ==================================================================
* =     permanent assignments                                      =
* ==================================================================
*
assgn_lu         SYSIPT
assgn_device     02F
*
assgn_lu         SYSLST
assgn_device     02A
*
assgn_lu         SYS001
assgn_device     02B
*
assgn_lu         SYS002
assgn_lu_2       SYS001
*
assgn_lu         SYS002
assgn_lu_2       SYSLST
* ==================================================================
* =     standard labels                                            =
* ==================================================================
dlbl_dd          CMAST
dlbl_dsn         CUSTOMER.MASTER.FILE

JCL プログラム名における特殊文字

MSS では、IBM の有効文字リストを使用して JCL プログラム名の妥当性検査が行われます。このリスト内の有効文字は、@、#、および $ です。ただし、一部のコードページでは、これらの文字の変換によって名前の妥当性検査との非互換性が生じます。 JCL プログラムの名前でこれらの特殊文字を使用したときに問題が生じた場合は、その問題を Micro Focus に報告してください。

文字セット

Enterprise Server 上の JCL アプリケーションは、EBCDIC または ASCII のいずれかで実行できます。詳細については、『Mainframe Subsystem Support 構成と管理』『JCL 対応エンタープライズ・サーバーの管理』の章にある 文字セット のセクションを参照してください。

データ・セット

高度なデータ・セット情報の章で説明しているように、ほとんどのメインフレーム・データ・セット編成とレコード・フォーマットがサポートされています。

また、ジョブストリームに含まれている一時的なデータ・セットとインストリーム・データ・セットもサポートされます。

アプリケーション・プログラム

MSS は、データ・セットを割り当ててパラメータを渡すために、アプリケーション・プログラムと MVS の間のインターフェイスをエミュレートします。これらの機能について、次に説明します。

データ・セットの割り当て

MVS では、プログラムで使用されるファイル名と JCL で使用される対応データ・セット名の間の直接接続が提供されます。例えば、COBOL プログラム内の SYSUT1 の場合、

SELECT INFILE ASSIGN TO UT-S-SYSUT1

は次の文に接続し、

//SYSUT1 DD DSN=DSNAME1,DISP=OLD

DSNAME1 という名前のデータ・セットを表す PC ファイルをプログラムに割り当てます。

また、SYSUT2 の場合、

SELECT OUTFILE ASSIGN TO UT-S-SYSUT2

は次の文に接続し、

//SYSUT2 DD DSN=DSNAME2,DISP=(NEW,CATLG),...

DSNAME2 という名前のデータ・セットを表す PC ファイルをプログラムに割り当てます。そのファイルは、ジョブストリームの実行時に自動的に作成され、カタログされます。

パラメータの引き渡し

JCL PARM パラメータで指定されたパラメータは、メインフレームと同じルールを使用してプログラムに渡されます。パラメータ文字列で指定されるオプションは、スラッシュ (/) 文字によってアプリケーション・パラメータから分離されます。その例を次に示します。

PARMS(application-parameters/run-time-options) 

パラメータを渡すときに使用されるリンケージ領域は次のとおりです。

01 PARM.
     03 PARM-LENGTH    PIC 9(4)   COMP.
     03 PARM-DATA      PIC X OCCURS 100.

プリンター出口モジュール

Server Enterprise Edition JCL サポートでは、ブラウザー・ベースの SDSF に似たスプール・ビューアーを使用してジョブおよびレポート出力の表示と参照を行う機能が提供されます。このサポートには他の出力やドキュメント管理ソフトウェア自体は含まれませんが、代わりにプリンター出口モジュールを利用してバッチ印刷機能を他のサードパーティまたは外部の印刷サブシステムと統合することができます。

プリンター出口モジュール (多くの場合、単にプリンター出口と略される) は、バッチ・プリンターのサーバー実行プロセス (Server Execution Process; SEP) に関連付けることができるプログラムです。SEP は、出力をプリンターに直接書き込むのではなく、特定のプリンター出口モジュールに渡します。そのプリンター出口モジュールは、出力を処理してから印刷することができます。例えば、円グラフなどのグラフィカルな要素を使用して、図を示す出口を記述することができます。

ユーザーは、バッチ・プリンター SEP ごとに一意のプリンター出口モジュールを指定できます。つまり、必要であれば、特化された出力処理を出力クラスごとにセットアップすることができます。プリンター出口モジュールは、JCL に含まれている関連 OUTPUT 文情報 (出力先、コピー部数、ルーティング、フォーム定義など) にフルにアクセスできます。

プリンター出口の記述

プリンター出口モジュールの例 (sampprnx) は、$COBDIR/demo/esjcl に用意されています。この例では、単に各行を取得し、COBOL ランタイム・システムの印刷ルーチンを呼び出してその行を印刷しています。

プリンター出口は COBOL で記述されている必要はありませんが、sampprnx に示してあるようにパラメータを処理する必要があります。これらのパラメータは、cascbprn.cpy コピーブックで定義され、記録されます。COBOL プリンター出口は、非メインフレーム方言、つまり CHARSET(ASCII) を使用してコンパイルする必要があります。また、これらのプリンター出口は、.int.gnt、または .dll としてビルドしなければなりません。

sampprnx のリンケージ・セクションと、cascbprn.cpy を次に示します。

       linkage section.
       copy 'cascbprn.cpy' replacing ==(ws)== by ==lk==.
       01 lk-catalog-rec.
       copy 'mvscatlg.cpy' replacing ==(TAG)== by ==lk==.

       01 LK-OUTPUT.
       copy mvsdout  replacing ==()== by ==LK-OUTPUT==.
       01  (ws)-prn-exit-interface.
           *>  What is the format of the structure used to call the
           *>  printer exit.  Will change with major revisions to this
           *>  Data Structure.
           03  (ws)-prn-version                     pic x(4) comp-5.
               88  (ws)-prn-current-version-88      value 1.
           *>  The printer exit is driven once as the batch printer SEP
           *>  starts, once for every print job, and once when the batch
           *>  printer is shut down.
           03  (ws)-prn-command                     pic x    comp-5.
               88  (ws)-prn-exit-init-88            value 0.
               88  (ws)-prn-exit-print-88           value 1.
               88  (ws)-prn-exit-term-88            value 2.
           *>  For the requested print job.  (ws)-prn-exit-print-88
           *>  what is the character set of the data being printed.
           03  (ws)-prn-char                        pic x.
               88  (ws)-prn-char-ascii-88           value 'A'.
               88  (ws)-prn-char-ebcdic-88          value 'E'.
               88  (ws)-prn-char-unknown-88         value '?'.
           *>  This is the file status returned by driving the procedure
           *>  pointers:
           *>              (ws)-prn-sysout-open-pptr
           *>              (ws)-prn-sysout-read-next-pptr
           *>              (ws)-prn-sysout-close-pptr
           *>
           03  (ws)-prn-sysout-status               pic x(2).
               88  (ws)-prn-sysout-status-ok-88     value '00'.
               88  (ws)-prn-sysout-status-eof-88    value '10'.
      ***--------------------------------------------------------------*
           *>  Procedure pointer to drive the open of the sysout dataset
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-sysout-open-pptr            procedure-pointer.
           *>  Procedure pointer to a read of the sysout dataset
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-sysout-read-next-pptr       procedure-pointer.
           *>  Procedure pointer to drive the close of the sysout dataset
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-sysout-close-pptr           procedure-pointer.
           *>  Procedure pointer to allow a message to be driven to the
           *>  console.  (all functions)
           03  (ws)-prn-message-pptr                procedure-pointer.
           *>  Procedure pointer to retrieve the next OUTPUT statement.
           *>  Returns a null (ws)-prn-output-record-ptr if none are
           *>  available.
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-output-read-next-pptr       procedure-pointer.
           03                                       procedure-pointer.
           03                                       procedure-pointer.
      ***--------------------------------------------------------------*
           *>  A pointer to the data structure contained in Spool.cpy
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-spool-record-ptr            pointer.
           *>  A pointer to the data structure contained in mvscatlg.cpy
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-catalog-record-ptr          pointer.
           *>  The printer handle for the printer assigned to the this SEP
           03  (ws)-prn-printer-handle              pic x(4) comp-5.
           *>  The LRECL of the dataset being printed.
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-lrecl                       pic x(4) comp-5.
           *>  The Maximum LRECL of the dataset being printed.
           *>  Same as ws-prn-lrecl.
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-lrecl-max                   pic x(4) comp-5.
           *>  The Minimum LRECL of the dataset being printed.
           *>  (Variable Length SYSOUT Datasets.
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-lrecl-min                   pic x(4) comp-5.
           03                                       pic x(4).
           *>  The length of the buffer used to return data when driving
           *>     (ws)-prn-sysout-read-next-pptr
           *>  (How much data was returned)
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-buffer-len                  pic x(4) comp-5.
           03  (ws)-prn-buffer.
               05  (ws)-prn-buffer-byte occurs 384 times pic x comp-x.
           *>  The "MVS" Name of the document being printed.
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-document.
               05  (ws)-prn-document-len            pic x(2) comp-5.
               05  (ws)-prn-document-title          pic x(128).
           *>  The name of the batch printer driving this print job.
           03  (ws)-prn-printer.
               05  (ws)-prn-printer-name-len        pic x(2) comp-5.
               05  (ws)-prn-printer-name            pic x(128).
           *>  The "physical" filename for the file being printed.
           *>  (eg.  Where does it reside on the disk pack)
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-sysout-file-name            pic x(260).
           *>  A pointer to an OUTPUT Statement associated with this
           *>  SYSOUT Dataset.  Points to the data structure contained
           *>  in IDADOUTP.CPY
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-output-record-ptr           pointer.

OUTPUT 文情報へのアクセス

出口は、データセットに関連付けられている OUTPUT 文に (ws)-prn-output-record-ptr というポインターを通じてアクセスできます。このポインターは、cascbprn.cpy コピーブックで定義されます。これは、IDADOUTP.cpy コピーブックで定義された構造体をポイントします。これの実例については、sampprnx の process-output-statements セクションを参照してください。

出口の呼び出し方法

プリンター出口モジュールを使用するように設定されたプリンター SEP は、そのモジュールを次のように呼び出します。

出口の使用

プリンター出口モジュールは、Enterprise Server の永続的機能として定義されたバッチ・プリンター SEP、セッション中に作成されたバッチ・プリンター SEP、またはその両方に関連付けることができます。また、プリンター出口モジュールを複数のバッチ・プリンター SEP に関連付けることもできます。

出口を使用したプリンター SEP を永続的機能として作成するには、Server Enterprise Edition Administration の [JES Printer] タブを使用します。

  1. Server Enterprise Edition Administration のホーム・ページにあるサーバーのテーブルで、関連サーバーの行の左にある[Edit] をクリックします。
  2. [Server > Properties > MSS > JES > Printers] を選択します。
  3. [Add]をクリックしてプリンターの詳細を指定し、プリンター出口の名前を [Exit Module] フィールドに入力します。
  4. [Add] をクリックします。

プリンター出口モジュールの実行可能ファイルは、MSS トランザクション・パス、JES プログラム・パス、または COBPATH のいずれかになければなりません。また、出口が Windows dll の場合は、PATH 環境変数で指定されたディレクトリーにその dll が入っている必要があります。

ACCEPT および DISPLAY の処理

エンタープライズ・サーバーでは、ACCEPT FROM CONSOLE および DISPLAY UPON CONSOLE 文が含まれているジョブを実行できます。実行が DISPLAY 文に達すると、ディスプレイ・テキストがコンソール・ログとジョブ・ログに表示されます。実行が ACCEPT FROM CONSOLE 文に達すると、ジョブは一時停止し、ESMAC 内のページを使用して入力を求めます。詳細については、Server Enterprise Edition の 『Mainframe Subsystem Support 構成と管理』にある JCL ジョブとの相互作用 のセクションを参照してください。

ASCII/EBCDIC

デフォルトでは、Server Enterprise Edition は ASCII 文字セットを使用します。 EBCDIC を使用する場合は、個々のエンタープライズ・サーバーについて、 このデフォルトをオーバーライドすることができます。

エンタープライズ・サーバー用に ASCII または EBCDIC を選択するには、 環境変数 MF_CHARSE を使用します。これは、ES Admin で 指定します。エンタープライズ・サーバーに対する [Edit] ページの [General] タブでは、[Configuration Information] フィールドの [ES-Environment] セクションに 次の情報を入力します。

MF_CHARSET=E

または

MF_CHARSET=A

必要であれば、分かりやすくするためにこれらを次のように入力することもできます。

MF_CHARSET=EBCDIC

または

MF_CHARSET=ASCII

ただし 、意味があるのは最初の文字 (E または A) のみです。

プログラムは、エンタープライズ・サーバーの文字セットと一致する CHARSET コンパイラー指令を使用してコンパイルする必要があります。EXEC PGM= JCL 文、DSN コマンドの RUN サブコマンド、または TSO CALL コマンドの結果として呼び出されたプログラムの場合は、システムによってユーザー・プログラム・データが適切に処理されます。

ASCII プログラムと EBCDIC プログラムは混合しないでください。混合する場合、必要な変換を行うのはユーザーの責任になります。コンパイラー指令は次のとおりです。

CHARSET(EBCDIC)

または

CHARSET(ASCII)

すべてのデータセットの文字セット属性が現在のシステム文字セットに設定されます。ファイルの文字セットに基づいて、LSEQ データセットと SYSIN インストリーム・データ・セットは、プログラムに適合するように自動的に変換されます。

JOBLIB DD および STEPLIB DD 処理の有効化

これらの文では、EXEC 文で指定されたプログラムを検索するディレクトリーが指定されます。

JOBLIB/STEPLIB 処理を有効にするには、次の操作を行います。

  1. .gnt および .int ファイルが保存される各 PC または UNIX サブディレクトリーを表す動的 PDS を作成します。.gnt ファイルと .int ファイルは、異なるサブディレクトリーに分離することをお奨めします。
  2. ステップ 1 で作成したサブディレクトリーを参照する JOBLIB および/または STEPLIB 文を使用して、JCL を実行します。検索順序は、STEPLIB、JOBLIB、Enterprise Server の [JCL > General] タブにある [JES Program Path] フィールドで指定されたパスの順になります。

特定の STEPLIB または JOBLIB 文で参照される区分データ・セットがカタログ・エントリーとして存在する場合は、DD が割り当てられます。STEPLIB または JOBLIB 連結で複数の区分データ・セットが参照される場合は、存在するデータ・セットだけが JOBLIB または STEPLIB 連結の一部としてマップされます。

STEPLIB および/または JOBLIB 文が含まれているジョブは、未変更の状態で引き続き実行されます。