2

VSAM ファイルが存在するかどうかを確認する必要があるという要件があります。存在しない場合は、TEST.FILE2 のように作成する必要があります。私のJCLは次のとおりです:

//STEP01   EXEC PGM=IDCAMS                           
//SYSPRINT DD  SYSOUT=*                              
//SYSIN    DD  *                                     
  LISTCAT ENTRIES('BRTEST.FILE1') 
/*                                                   
//STEP02 EXEC PGM=IEFBR14,COND=(4,GT)                
//DD01     DD DSN=BRTEST.FILE1,   
//            DISP=(,CATLG,DELETE),                  
//            LIKE=BRTEST.FILE2
//SYSPRINT DD  SYSOUT=*                              
//SYSOUT   DD  SYSOUT=*                    

しかし、奇妙なことが起こっています。この JCL を実行すると、STEP001 は、ファイルが既に存在する場合でもリターン コード 004 を返し、STEP02 で新しいファイルが作成されます。したがって、この JCL を 2 回サブミットすると、2 回とも新しいファイルが作成されます。ファイルがどのように削除されるのか理解できません。そして奇妙なことは、STEP02 なしで JCL を実行すると、ファイルがカタログで見つかったことを示す 0 として MAXCC が返されることです。

コードに従って要件を達成できましたが、VSAM ファイルが LISTCAT で削除される理由と方法を知りたいです。

//STEP02 EXEC PGM=IEFBR14,COND=(4,GT)                
//DD01     DD DSN=BRTEST.FILE1,   
//            DISP=(MOD,CATLG,CATLG),                  
//            LIKE=BRTEST.FILE2
//SYSPRINT DD  SYSOUT=*                              
//SYSOUT   DD  SYSOUT=*  

STEP01 のみを実行した場合の SYSPRINT は次のとおりです。

IDCAMS  SYSTEM SERVICES                                           TIME: 03:47:44

  LISTCAT ENTRIES('BRTEST.FILE1')                                               
CLUSTER ------- BRTEST.FILE1                                                    
     IN-CAT --- CATALOG.TEST03                                                  
   DATA ------- BRTEST.FILE1.DATA                                               
     IN-CAT --- CATALOG.TEST03                                                  
   INDEX ------ BRTEST.FILE1.INDEX                                              
     IN-CAT --- CATALOG.TEST03                                                  
IDCAMS  SYSTEM SERVICES                                           TIME: 03:47:44
         THE NUMBER OF ENTRIES PROCESSED WAS:                                   
                   AIX -------------------0                                     
                   ALIAS -----------------0                                     
                   CLUSTER ---------------1                                     
                   DATA ------------------1                                     
                   GDG -------------------0                                     
                   INDEX -----------------1                                     
                   NONVSAM ---------------0                                     
                   PAGESPACE -------------0                                     
                   PATH ------------------0                                     
                   SPACE -----------------0                                     
                   USERCATALOG -----------0                                     
                   TAPELIBRARY -----------0                                     
                   TAPEVOLUME ------------0                                     
                   TOTAL -----------------3                                     
         THE NUMBER OF PROTECTED ENTRIES SUPPRESSED WAS 0                       
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0                       

IDC0002I IDCAMS PROCESSING COMPLETE. MAXIMUM CONDITION CODE WAS 0 

両方のステップが実行されると、次のようになります。

IDCAMS  SYSTEM SERVICES                                           TIME: 03:48:35

  LISTCAT ENTRIES('BRTEST.FILE1')                                               
IDC3012I ENTRY BRTEST.FILE1 NOT FOUND                                           
IDC3009I ** VSAM CATALOG RETURN CODE IS 8 - REASON CODE IS IGG0CLEG-42          
IDC1566I ** BRTEST.FILE1 NOT LISTED                                             
IDCAMS  SYSTEM SERVICES                                           TIME: 03:48:35
         THE NUMBER OF ENTRIES PROCESSED WAS:                                   
                   AIX -------------------0                                     
                   ALIAS -----------------0                                     
                   CLUSTER ---------------0                                     
                   DATA ------------------0                                     
                   GDG -------------------0                                     
                   INDEX -----------------0                                     
                   NONVSAM ---------------0                                     
                   PAGESPACE -------------0                                     
                   PATH ------------------0                                     
                   SPACE -----------------0                                     
                   USERCATALOG -----------0                                     
                   TAPELIBRARY -----------0                                     
                   TAPEVOLUME ------------0                                     
                   TOTAL -----------------0                                     
         THE NUMBER OF PROTECTED ENTRIES SUPPRESSED WAS 0                       
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 4                       

IDC0002I IDCAMS PROCESSING COMPLETE. MAXIMUM CONDITION CODE WAS 4               

ZOS390RL 変数の値は z/OS 02.01.00 で、ZENVIR は ISPF 7.1MVS TSO です。

4

2 に答える 2

1

答えがあるかもしれません。それは VSAM データセットであり、あなたがやろうとしている方法は (私にとっては) 珍しいので、考えもしませんでした。

UCC11という製品があります/ありました。現在は Computer Associates によって販売されており、CA-11 (またはそのようなもの) と呼ばれています。あなたのサイトでこの製品または類似のものを使用していると思います。

JOB の開始時に実行すると、NEW および CATLG として指定されたファイルが検索され、カタログに同じ名前の既存のファイルが存在するかどうかが確認されます。存在する場合、既存のファイルは削除されます。

これにより、そのようなファイルを削除するための最初の IEFBR14 ステップが不要になります。

この商品かそれに近いものを使っていると思います。ファイルが存在する場合、ファイルは自動的に削除されるため、ファイルからデータを読み取る IDCAMS ステップ (SYSIN および DD * であっても) は製品に認識されないため、IDCAMS ステップが実行される前に VSAM ファイルが削除されます。走る。

初期処理としてファイルを MOD に変更しても (MOD は既存のファイルに追加され、存在しない場合は新しいファイルが作成されます)、そのような製品でファイルが削除されることはありません。

VSAM ファイルに LIKE を使用しても、モデル データセットから CA サイズと CI-SIZE を取得できません。それらのデフォルト値を取得しますが、これはプログラムのパフォーマンスに影響を与える可能性があります. JCL で VSAM ファイルを定義するときに、これらの値を指定することはできません。また、モデル データセットからバッファ値を取得することはできませんが、JCL で個別に指定できます (指定していません)。

LIKE が何をするかについての説明は次のとおりです

次の属性がモデル データ セットから新しいデータ セットにコピーされます。

Data set organization
    Record organization (RECORG) or
    Record format (RECFM) 
Record length (LRECL)
Key length (KEYLEN)
Key offset (KEYOFF)
Type, PDS, PDSE, basic format, extended format, large format, or HFS (DSNTYPE)
Space allocation (AVGREC and SPACE)

Unless you explicitly code the SPACE parameter for the new data set, 
the system determines the space to be allocated for the new data
set by adding up the space allocated in the first three extents of the
model data set. Therefore, the space allocated for the new data set
will generally not match the space that was specified for the model
data set. Note that regardless of the units in which the model data
set was allocated, the new data set will be allocated in tracks. This
assumes that space was not specified on the JCL and is being picked up
from the model data set.

最後の段落のように、他にもいくつかの小さな「落とし穴」があり、リンクにも詳しく説明されています。

特別な理由がない限り、すべてを 1 つの IDCAMS ステップで実行することを強くお勧めします (以下を参照)。


1.12、1.13、または 2.1 (2.01) になるのではないかと思いました。現在、IEFBR14 は微妙に OS の一部になっています。

なぜこの効果が得られるのか、正確にはわかりません。私は 2.1 にアクセスできないので、自分で調査することはできません。

IEFBR14 が変更されました。LIKE は実際には VSAM データセットを対象としたものではありません (必要かどうかに関係なく多くのデフォルト値が得られます)。実際には、これを行う「通常の」方法ではありません。以下の提案を参照してください。

VSAM データセットのみを参照する IDCAMS ステップに DDname を追加してみてください。それが何かを変えるかどうか見てください。その DD 名を IDCAMS ステートメントで使用します。それが何かを変えるかどうか見てください。

すべての結果を Sysprogs に持って行き、彼らが何かを見つけられるかどうかを確認してください。

そうでない場合は、PMR 時間になります: http://www-01.ibm.com/support/docview.wss?uid=swg21507639

PMR を提出する場合は、回答を受け取ったら解決策を回答に追加して更新してください。


提案。

あなたのサイトで他の人がこのタスクをどのように行っているかを調べてください。

そのように定義した VSAM ファイルを使用してみましたか? LISTCAT TEST.FILE1 と TEST.FILE2 を比較してください。JCL リファレンスで LIKE を調べると、LIKE を使用して JCL で定義された VSAM ファイルに対して実行できないことで、VSAM DEFINE で実行できることがわかります。

特に理由がない限り、IDCAMS を使用してすべてを 1 ステップで実行することをお勧めします。ファイルが存在するかどうかを確認し、IDCAM の IF を使用してそこから CC をテストし、ファイルが存在しない場合は DEFINE のみをテストします。MODEL (たとえば、TEST.FILE2) を使用して、別のファイルに類似するすべてのものを取得し、必要な異なるものをオーバーライドすることができます。

http://pic.dhe.ibm.com/infocenter/zos/v1r13/index.jsp?topic=%2Fcom.ibm.zos.r13.idai200%2Fdefclu.htmを見ると、Modal Commandsそこにない場合は定義する必要があるすべてを提供し、ある場合は別のことを行います (たとえば、条件コードを設定します) 。

引き続き、要求された情報を提供してください。一見すると興味深い質問ですが、簡単な解決策があるかもしれません。しかし、解決策があっても、それはあなたが望むものではないと思います。

于 2014-10-31T01:15:35.663 に答える
1

やりたいことはすべて IDCAMS ステップで実行できます。前の操作 (つまり、LISTCAT) からの戻りコードを調べて、コードが 0 より大きい場合は、何か (新しいクラスターを定義するなど) を行うことができます。このステップが正常に完了したことを JCL に伝えます (また、Ops の担当者にもこのことを知らせます)。

IDCAMS 'IF' を探します。

于 2014-12-24T20:58:51.363 に答える