最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

4.6.ジョブ記述:ジョブの育ちを解明する

[ Previous ] [ HOME ] [ Upper ] [ Next ]


ジョブ記述とは

サインオンして、対話型ジョブが開始する、または、SBMJOBでバッチジョブが開始する、そんな中で、そのジョブの環境とか、性質(属性)が、何らかの方法で決まっていきます。このジョブは、システムの上で活動化する具体的な存在です。オブジェクトではありません。ジョブ記述は、一種のテンプレートです。これを元に、OS400は、ジョブを作るのです。

前にも説明しましたように、ジョブは3つのオブジェクトから、その定義内容を取り出し、初期値として設定して、ジョブが成立します。そのオブジェクトとは、

  1. *USRPRF    権限関係を規定しています。

  2. *CLS     実行優先順位などを規定しています。結構マイナーな存在です。

  3. *JOBD     ジョブのほとんどの属性を規定しています。

の3つです。また、この図を出しましょう。大きくて恐縮ですが、とても大事なエッセンスが詰まっているのです。さて、この中で、JOBDはどこにありますか?

ジョブ記述*JOBDは、ユーザープロファイルに指定されていますね。一個のジョブ記述を、たくさんのユーザープロファイルで共有できます。ユーザープロファイルの作成コマンドをちょっと見てみましょう。

                     ユーザー・プロファイル作成  (CRTUSRPRF)                    
                                                                                
  ユーザー・プロファイル  . . . . USRPRF                                        
  ユーザー・パスワード  . . . . . PASSWORD       *USRPRF                        
  パスワードを満了にセット  . . . PWDEXP         *NO                            
  状況  . . . . . . . . . . . . . STATUS         *ENABLED                       
  ユーザー・クラス  . . . . . . . USRCLS         *USER                          
  援助レベル  . . . . . . . . . . ASTLVL         *SYSVAL                        
  現行ライブラリー  . . . . . . . CURLIB         *CRTDFT                        
  呼び出す初期プログラム  . . . . INLPGM         *NONE                          
    ライブラリー  . . . . . . . .                                               
  初期メニュー  . . . . . . . . . INLMNU         MAIN                           
    ライブラリー  . . . . . . . .                  *LIBL                        
  制限機能  . . . . . . . . . . . LMTCPB         *NO                            
  テキスト ' 記述 ' . . . . . . . TEXT           *BLANK                         
  特殊権限  . . . . . . . . . . . SPCAUT         *USRCLS                        
                            値の続きは+                                        
  特殊環境  . . . . . . . . . . . SPCENV         *SYSVAL                        
  サイン・オン情報の表示  . . . . DSPSGNINF      *SYSVAL                        
  パスワード満了間隔  . . . . . . PWDEXPITV      *SYSVAL                        
  装置セッション限界  . . . . . . LMTDEVSSN      *SYSVAL                        
  キーボード緩衝方式  . . . . . . KBDBUF         *SYSVAL                        
  最大許容記憶域  . . . . . . . . MAXSTG         *NOMAX                         
  最高スケジュール優先順位  . . . PTYLMT         3                              
  ジョブ記述  . . . . . . . . . . JOBD           QDFTJOBD                       
    ライブラリー  . . . . . . . .                  *LIBL                        
  グループ・プロファイル  . . . . GRPPRF         *NONE                          
  所有者  . . . . . . . . . . . . OWNER          *USRPRF                        
   グループ権限  . . . . . . . . . GRPAUT         *NONE                          
  グループ権限タイプ  . . . . . . GRPAUTTYP      *PRIVATE                       
  補足グループ  . . . . . . . . . SUPGRPPRF      *NONE                          
                            値の続きは+                                        
  会計コード  . . . . . . . . . . ACGCDE         *BLANK                         
  文書パスワード  . . . . . . . . DOCPWD         *NONE                          
  メッセージ待ち行列  . . . . . . MSGQ           *USRPRF                        
    ライブラリー  . . . . . . . .                                               
  配布  . . . . . . . . . . . . . DLVRY          *NOTIFY                        
  重大度コード・フィルター  . . . SEV            0                              
  印刷装置  . . . . . . . . . . . PRTDEV         *WRKSTN                        
  出力待ち行列  . . . . . . . . . OUTQ           *WRKSTN                        
    ライブラリー  . . . . . . . .                                               
  アテンション・プログラム  . . . ATNPGM         *SYSVAL                        
    ライブラリー  . . . . . . . .                                               
  分類順序  . . . . . . . . . . . SRTSEQ         *SYSVAL                        
    ライブラリー  . . . . . . . .                                               
  言語識別コード  . . . . . . . . LANGID         *SYSVAL                        
  国別 ID . . . . . . . . . . . . CNTRYID        *SYSVAL                        
  コード化文字セット ID . . . . . CCSID          *SYSVAL                        
  文字識別コードの制御  . . . . . CHRIDCTL       *SYSVAL                        
  ロケール・ジョブ属性  . . . . . SETJOBATR      *SYSVAL                        
                            値の続きは+                                        
  ロケール  . . . . . . . . . . . LOCALE         *SYSVAL                        
  ユーザー・オプション  . . . . . USROPT         *NONE                          
                            値の続きは+                                        
  ユーザー ID 番号  . . . . . . . UID            *GEN                           
  グループ ID 番号  . . . . . . . GID            *NONE                          
  ホーム・ディレクトリー  . . . . HOMEDIR        *USRPRF                        
                                                                                
  権限  . . . . . . . . . . . . . AUT            *EXCLUDE                       
                                                                                

JOBDの構成要素

さて、ジョブ記述の内容を見てみましょう。

                            ジョブ記述作成  (CRTJOBD)                           
                                                                                
 ジョブ記述  . . . . . . . . . . JOBD                                          
    ライブラリー  . . . . . . . .                  *CURLIB                      
  ジョブ待ち行列  . . . . . . . . JOBQ           QBATCH                         
    ライブラリー  . . . . . . . .                  *LIBL                        
  ジョブ優先順位 (JOBQ での ) . . JOBPTY         5                              
  出力優先順位 (OUTQ での ) . . . OUTPTY         5                              
  印刷装置  . . . . . . . . . . . PRTDEV         *USRPRF                        
  出力待ち行列  . . . . . . . . . OUTQ           *USRPRF                        
    ライブラリー  . . . . . . . .                                               
  テキスト ' 記述 ' . . . . . . . TEXT           *BLANK                         
                                                                                
  ユーザー  . . . . . . . . . . . USER           *RQD                           
  印刷テキスト  . . . . . . . . . PRTTXT         *SYSVAL                        
                                                                                
  会計コード  . . . . . . . . . . ACGCDE         *USRPRF                        
  経路指定データ  . . . . . . . . RTGDTA         QCMDI                          
                                                                                
  要求データまたはコマンド  . . . RQSDTA         *NONE                          
  CL 構文検査   . . . . . . . . . SYNTAX         *NOCHK                         
  初期ライブラリー・リスト  . . . INLLIBL        *SYSVAL                        
                            値の続きは+                                        
  終了重大度  . . . . . . . . . . ENDSEV         30                             
                                                                              
  メッセージのロギング :          LOG                                           
    レベル  . . . . . . . . . . .                4                              
    重大度  . . . . . . . . . . .                0                              
    テキスト  . . . . . . . . . .                *NOLIST                        
  CL プログラム・コマンド の ログ . . . . LOGCLPGM       *NO                            
  QUERY メッセージ応答  . . . . . INQMSGRPY      *RQD                           
  ジョブ待ち行列上での保留  . . . HOLD           *NO                            
  ジョブ日付  . . . . . . . . . . DATE           *SYSVAL                        
  ジョブ・スイッチ  . . . . . . . SWS            00000000                       
  装置回復処置  . . . . . . . . . DEVRCYACN      *SYSVAL                        
  タイム・スライス終了プール  . . TSEPOOL        *SYSVAL                        
  権限  . . . . . . . . . . . . . AUT            *LIBCRTAUT                     
 ジョブ・メッセージ 待ち行列最大 サイズ   JOBMSGQMX      *SYSVAL                        
 ジョブ・メッセージ 待ち行列満杯処置    JOBMSGQFL      *SYSVAL                        
  マルチ・スレッド使用可能  . . . ALWMLTTHD      *NO                           

これは、CRTJOBDの例です。省略値の多さが、このOS400の優れた点ですね。ただし、AがBを参照して、BがAを参照してしまうと、「循環定義」といって、一意に内容が決まらなくなります。したがって、どこかに、他参照を持つことが出来ない記述が有るのですね。大抵は、システム値が多いと思います。システム値そのものは、他を参照することはありません。また、ネットワーク属性もそうです。他のコマンドの省略値として、頻繁に参照されるジョブ記述やユーザープロファイル自身は、特に、*SYSVALが省略値として頻繁に出現していますね。

また、SBMJOBでは、

                              ジョブ投入  (SBMJOB)                             

  実行するコマンド  . . . . . . . CMD                                           
                                                                                
                                                                           
  ジョブ名  . . . . . . . . . . . JOB            *JOBD                          
  ジョブ記述  . . . . . . . . . . JOBD           *USRPRF                        
    ライブラリー  . . . . . . . .                                               
  ジョブ待ち行列  . . . . . . . . JOBQ           *JOBD                          
    ライブラリー  . . . . . . . .                                               
  ジョブ優先順位 (JOBQ での ) . . JOBPTY         *JOBD                          
  出力優先順位 (OUTQ での ) . . . OUTPTY         *JOBD                          
  印刷装置  . . . . . . . . . . . PRTDEV         *CURRENT                       
  出力待ち行列  . . . . . . . . . OUTQ           *CURRENT                       
    ライブラリー  . . . . . . . .                                               
  ユーザー  . . . . . . . . . . . USER           *CURRENT                       
  印刷テキスト  . . . . . . . . . PRTTXT         *CURRENT                       
                                                                                
  経路指定データ  . . . . . . . . RTGDTA         QCMDB                          
  要求データまたはコマンド  . . . RQSDTA         *CMD                           
                                                                                
                                                                                
  現行ライブラリー  . . . . . . . CURLIB         *CURRENT                       
  初期ライブラリー・リスト  . . . INLLIBL        *CURRENT                       
                            値の続きは+                                        
  メッセージのロギング :          LOG                                           
    レベル  . . . . . . . . . . .                *JOBD                          
    重大度  . . . . . . . . . . .                *JOBD                          
    テキスト  . . . . . . . . . .                *JOBD                          
  CL プログラム・コマンド の ログ . . . . LOGCLPGM       *JOBD                          
  QUERY メッセージ応答  . . . . . INQMSGRPY      *JOBD                          
  ジョブ待ち行列上での保留  . . . HOLD           *JOBD                          
  スケジュール日  . . . . . . . . SCDDATE        *CURRENT                       
  スケジュール時刻  . . . . . . . SCDTIME        *CURRENT                       
  ジョブ日付  . . . . . . . . . . DATE           *JOBD                          
  ジョブ・スイッチ  . . . . . . . SWS            *JOBD                          
  WRKSBMJOB による表示可能  . . . DSPSBMJOB      *YES                           
  メッセージ待ち行列  . . . . . . MSGQ           *USRPRF                        
    ライブラリー  . . . . . . . .                                               
  分類順序  . . . . . . . . . . . SRTSEQ         *CURRENT                       
    ライブラリー  . . . . . . . .                                               
  言語識別コード  . . . . . . . . LANGID         *CURRENT                       
  国別 ID . . . . . . . . . . . . CNTRYID        *CURRENT                       
  コード化文字セット ID . . . . . CCSID          *CURRENT                       
                                                                                
  投入  . . . . . . . . . . . . . SBMFOR         *CURRENT                       
    ユーザー  . . . . . . . . . .                                               
    番号  . . . . . . . . . . . .                                               
 ジョブ・メッセージ 待ち行列最大 サイズ   JOBMSGQMX      *JOBD                          
 ジョブ・メッセージ 待ち行列満杯処置    JOBMSGQFL      *JOBD                          
  環境変数コピー  . . . . . . . . CPYENVVAR      *NO                            
  マルチ・スレッド使用可能  . . . ALWMLTTHD      *JOBD                          

このように、やはり、*USRPRFの中に指定された*JOBDを使うことになっていますね。この*USRPRFは、このSBMJOBを実行するときのユーザーの*USRPRFです。

このジョブ記述の働きは何でしょう。先ほども言いましたが、これら、*USRPRF,*CLS,*JOBDはすべて、ジョブの生成の為に存在する記述です。まあ、*USRPRFは、ジョブの生成以外にも参照されることが多いのですが、基本的には、ジョブの生成が主たる目的です。特にユーザープロファイルは、AS/400があなたが誰なのかを判断する唯一の手段ですね。それが分からなければ、ジョブもくそもありません。ユーザープロファイルによって、「そうですか、あなたが、xxさんですね。それならば、この環境が「準備」されています。お使い下さい」と、ジョブ記述を参照して、ジョブを作り出すのだ、と思って下さい。

今回は、省略値を説明しませんが、よく見ておいてください。ところで、SBMJOBとCRTJOBDは多くの共通したキーワードが有ると思いませんか?そもそもジョブの生成だけなら、SBMJOBはJOBDを指定すれば、それだけでいいのですが、きっと柔軟性を持たせたいために、SBMJOBでは、多くのJOBDの内容を、変更して実行出来るようにしたのでしょう。SBMJOBの省略値*JOBDは、JOBD(xxxx)で指定したジョブ記述の、同じキーワードの値が使われることを指示していますが、ここに、特別な値を指定することも出来るわけです。

キーワード

さて、CRTJOBDの中で重要なキーワードは、(注 ()内は作成時の省略値)

JOBQ (QBATCH)

OUTQ (*USRPRF)

INLLIBL (*SYSVAL)

JOBPTY (5)

OUTPTY (5) 

LOG (4 0 *NOLIST)

LOGCLPGM (*NO)

です。この他、

RTGDTA (QCMDI)

DATE (*SAYSVAL)

SWS (00000000)

INQMSGRPY(*RQD)

も2番目に重要です。

この他の残りは、さして気にしなくてもいいです。もし、AS/400のチューンアップで必要ならば、調べる必要があるかもしれません。

さて、最も大事な第1グループだけ見ていきましょう。この他は、ご自分でお調べください。

JOBQは、大抵、SBMJOBで使われる待ち行列ですね。別のジョブを開始するのに使われます。詳しくはこちらを見て下さい。省略値ではQBATCHという固有名詞になっていますね。つまり、QBATCHというJOBQがオブジェクトとして存在しているのですね。

OUTQは、出力待ち行列ですね。スプールになった印刷データが、プリンターからの印刷の順番待ちをする場所です。詳しくはこちらを見て下さい。ここでは、*USEPRFになっていますね。この場合は、USRPRFキーワードに指定された*USRPRFの中の、OUTQキーワード(*WRKSTNが省略値)になります。

INLLIBLは、サインオンしてジョブが開始した場合のライブラリーリストを指定しています。*SYSVALの場合、システム値のQUSRLIBLの中身が使われます。ライブラリーリストは、柔軟なジョブ環境を作る要素として、とても大事です。多くの人が、このJOBDの中のLIBL以外に、ツールを作成して、ライブラリーリストを制御しているのはそのためですね。

JOBPTYは、実行優先順位ではなくて、JOBQの中での優先順位を意味しています。OUTPTYはOUTQの中の優先順位を意味します。(質問:ジョブの実行優先順位はどこで定義されていますか?...答え:*CLSです。)また、値は、1が最高の優先順位で、9が最低の優先順位です。JOBQの中では、最高の優先順位0が使えます。

バッチジョブ終了時のQPJOBLOGを制御する、LOGにも注意して下さい。LOGは、3つの要素から成り立っています。これをよく見てください。色が違うのが、省略値です。QPJOBLOGに何でも載っていて欲しいならば、LOG(4 0 *SECLVL)です。

レベル 0 データは記録されません。
1 記録される情報は、ジョブの外部メッセージ待ち行列に送られたメッセー ジで、指定したメッセージ重大度と同じかまたはそれより大きい重大度を 持つすべてのメッセージだけです。このタイプのメッセージは、ジョブの 開始や終了の日時、および完了時のジョブの状況を示すものです。
2 ロギング・レベル 1 の情報。
コマンド行に入力した任意の要求、または CL プログラムからログさ れている任意のコマンド。その CL プログラムに対しては、指定した 重大度と同じかそれより大きい重大度をもつ高レベル・メッセージが 出されます。要求またはコマンドがログされる場合、それに関するメ ッセージもすべてログされます。
3 ロギング・レベル 1 の情報。
CL プログラムからのログされるすべての要求またはコマンド。
要求またはコマンドに関連する高レベル・メッセージは 1 つでも、 指定した重大度と同じかまたはそれより大きい重大度を持っていれ ば、その要求またはコマンドに関連するすべてのメッセージがログさ れます。
4 CL プログラムからのログされるすべての要求またはコマンド。
指定した重大度コードと同じかまたはそれより大きい重大度を持つメッセージだけ。
重大度 00 〜 99 ジョブ・ログに記録するエラー・メッセージの最低の重大度を指定します。指定できる値は 0 〜 99 までです。指定した値に等しいかそれより大きい重大度のメッセージがジョブ・ログに記録されます。
テキスト *MSG  メッセージ・テキストだけがジョブ・ログに記録されます。(メッセ ージ・ヘルプは記録されません)。
*SECLVL  第 1 レベルと第 2 レベルの両方のメッセージ・テキストがジョブ・ ログに記録されます。
*NOLIST  ジョブが正常に終了した場合にはジョブ・ログは作成されません。ジ ョブ終了コードが 20 かまたはそれより大きい場合にはジョブ・ログ が作成され、第 1 レベルと第 2 レベルの両方のメッセージ・テキス トが記録されます。

LOGCLPGMは、CRTCLPGMのLOGが*JOBになっている場合に、その*JOBが参照するキーワードが、このLOGCLPGMです。これは、CLPのジョブステップをログに出せる指定です。開発中とかで、バッチジョブを見たり、まあ、マシンにゆとりが有るなら、LOGCLPGM(*YES)が役立ちますね。但し、CRTCLPGMで、LOG(*YES)はLOGCLPGMに関係なく、いつでもログに落とします。LOG(*NO)だと、どんな場合でもログに落としません。たとえば、頻繁にCLPをCALLするときに、LOGCLPGMが*YESだと、実行効率が落ちる場合があります。そんなときに、便利なオプションがCRTCLPGMのLOGです。全てのCLPがLOG(*JOB)になっていて、「これは便利だ」と悦に入っているときに、このLOGを書き出すために実行効率が悪いCLPプログラムが一本あるだけで、LOGCLPGMを*NOにしてしまうと、全部のCLPプログラムのログが一斉に見れなくなります。そこで、その一本だけCRTCLPGMのLOGを*NOにしてコンパイルしておけば、その一本だけ、ログを落とすことはなくなります。うまく、組み合わせて、利用しましょう。 

以上

2000-2-18


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送