2

最近、HOST レポート プログラムのアップデートを発行しました。当店はEnterprise PLIを使用しています。

BASED として宣言された 2 つの新しい構造を追加しました。したがって、私は基本的に ALLOC ステートメントを使用して構造体に必要なストレージを割り当て、ポインタを Fetchable に渡して必要な詳細を取得します。

本番環境でのパイロット実行中にストレージ エラーで失敗しました (以下の LEMSG)。そこでは 100 万件を超えるレコードを処理しようとしていましたが、そのジョブは基本的にストレージを使い果たしたようです。

IBM0451S  ONCODE=451  The STORAGE condition was raised.                         
From entry point MXXX at compile unit offset +000001EA at entry offset 

詳細: IBM0451S

修正として、Fetchable 呼び出しの後にストレージに FREE を明示的に追加する更新を発行しています。また、JCL の REGION PARM を 0M に更新しました。

この種のエラーを以前に見たことがあるかどうかを確認し、追加の考えがあるかどうかを確認したいと思います. ありがとう。

これが私の最新の更新されたコードがどのように見えるかです

DECLARES
  =======================================
  DCL                                     
   01 IN_DATA  BASED(IN_PTR),       
     % INCLUDE SYSLIB(XXXXXPAA);          
  DCL                                     
   01 OUT_DATA BASED(OUT_PTR),      
     % INCLUDE SYSLIB(YYYYYPAA);          

  DCL                                     
   01 IN_PTR        PTR;                  
  DCL                                     
   01 OUT_PTR       PTR;  

 ======================================

 The below block of code runs for every record that get processed. The    
 FREE statement is what i now added. I was thinking that because i did 
 not have a FREE before , the ALLOC was basically getting new STOARGE
 everytime it executed that block of code and ran out of storage.



 ALLOC IN_DATA;                              
 ALLOC OUT_DATA;                             

 IN_DATA  = '';                              
 OUT_DATA = '';                              

 IN_DATA.CODE =  'XXX';

 CALL FABCD(IN_PTR,                                 
            OUT_PTR);                               

 IF OUT_DATA.RTRN_CD <= 04 THEN               
   DETAIL_REC.XYZ = OUT_DATA.YYY_CODE;   
 ELSE                                               
  ;                                                 


 FREE IN_DATA;    -------->> What i added now                         
 FREE OUT_DATA;   -------->> What i added now                             

=============================================   
4

2 に答える 2