CULについて・・

1:CULについて・・
IGA 04/21 17:29
以前大変お世話になりました。


主プログラムを一部修正してコンパイルしたら、
修正箇所とまったく無関係である部分の、画面制御が変わってしまいました。
原因がわからず、ここ数週間ずっと調査してやっとわかりました。


#ABCで、CUL(コンパイルユニットライブラリ)のファイルディレクトリを確認したところ、
主プログラム「P」が呼び出している、サブプログラム「S」の、
CULのCOMPILED日付が、いつの間にかかなり古い日付に戻っていました。
見ればすぐわかる明らかに、異常に古い日付でした。
おそらく前任プログラマーがミスって、古いソースを上かぶせしてしまって、
そのまま放置してしまったかと思われます。


しかたがないので、COBOLソースを最新状態に修正しましたが、
どうすればCULに落ちるのかがわかりません。
大変基礎的なことですみません。
LMLへは、ベンダーが残したJSがあるので、実行すると、
自動的に#CBL85、#LINK、#LBMが走ってくれます。
CULへ落とすにはどうすればいいのでしょうか?


言い訳ですが、
メインフレームが専門だったので、A−VXが詳しくわかりません。
事情があってベンダーとの保守契約を打ち切りました。
コンピュータがわかる社員がわたししかおりません。
素人なので、質問の内容じたい、おかしいかもしれません。
CULとLMLの違いもよくわかっていません。
ユーザーCULには#SFGENによって生成された画面フォーマットと、れいのサブプログラム、
ユーザーLMLには普通の主プログラムが入っています。


2:Re:CULについて・・
 04/21 19:42
ご苦労されていますね。



COBOLソース-->(CBL85)-->CUL(*1)



画面ソース-->(#SFGEN)-->CUL(*2)



(*1)n個+(*2)n個-->LINK-->LML



#LBMにて、SUL間、CUL間、LML間の移動ができます。



CULへ落とすには:CBL85の出力先をCUL(コンパイルユニットライブラリ)にすれば出きます



>LMLへは、ベンダーが残したJSがあるので、実行すると、

>自動的に#CBL85、#LINK、#LBMが走ってくれます。

>CULへ落とすにはどうすればいいのでしょうか?

一般的(?)には「自動的にCBL85、#LINK」のJSと「CBL85のみ」のJS、「#SFGENのみ」のJS、の3種類あり\r

メインソースは「CBL85+#LINK」タイプを\r

画面は「#SFGENのみ」タイプを\r

サブルーチンは「CBL85のみ」タイプを使用するものと思われます。

「自動的にCBL85、#LINK、#LBM」が入っているJSライブラリに「CBL85のみ」のJSもあるものと思われますが・・・



JS内容を紹介していただければ、もう少し詳しい説明ができますが・・・



以上

3:Re:CULについて・・
IGA 04/22 11:58

LML









//  ;
//  ;
//                                                            ;
//                                                  ;
//                                                            ;
//                                                            ;
//                                      SUF = XXSUL           ;
//                                      LBF = XXLIB           ;
//                                      CUF = XXCUL           ;
//                                      PRD =                 ;
//                                      NXT = LINK            ;
//                 T                               ;
//                                                ;
//  ;
//  ;
/SET SKIP;                                                               
/ASSIGN OEFN=USERCUL,EFN=XXCUL;                                          
/ASSIGN OEFN=USERLML,EFN=XXLML;                                            
/RUN CBL85,SIZ=63,SSW1=ON,PRI=7;                                           
SUD=MSD_SUF=XXSUL_LBD=MSD_LBF=MALIB_CUD=MSD   _CUF=XXCUL_                  
WKD=TEM001_WSZ=8000_PRD=STN_PRG=&0_MOD=REP_DBG=NO_OPT=YES_                 
DLM=ALL_BUF=MINIMUM_CMO=COBOL74_RNG=YES_RRM=MOVE-MODE_                     
SLM=SOU_SSN=S00_RSN=S00_STN=N25_USG=MULTI-SEPARATE_                        
DIO=NO_NXT=LINK_                                                           
/> ;                                                                      

/> ;                                                                       
/RUN #LBM,FIL=SYS@LML,DEV=MSD,SIZ=63;                                      
PRD=PRN999_MDE=MSD_MFI=USERCUL_ACT=DEL_SCS=NO_NAM=&0_NAM=_ACT=999_DIR=NO_  
MDE=MSD_MFI=XXLML_ACT=CHA_NAM=&0_GFC=&1_                                   
MDE=END_                                                                   
/> ;                                                        




4:Re:CULについて・・
温泉好きのうさぎ 04/22 16:15
サブプログラム「S」は、COBOL で記述されているプログラムですよね?
そして、この「S」が XXSUL に入っているのであれば、このコンパイルの JS を使って CU を作成することが可能です。


ただし、JS を最後まで実行させてしまうと、後半の #LBM が走ることにより、XXCUL から、この「S」が削除されてしまいますので、CBL85 が実行され


K C1232: 表示を終了しました (0:NEXT/1:RESTART/2:PRINT)   _ A CBL85 01


と表示されたら、画面確認待ちのときに、Enterキーを叩かず、業務放棄してください。


この後、通常どおりこの JS を使って主プログラム「P」をコンパイルしてください。


5:Re:CULについて・・
IGA 04/24 10:10
ありがとうございます!

おっしゃるとおり、「S」は

COBOLで記述されており、

XXSULに入っているプログラムです。



その後、多忙の中、マニュアルを熟読し、

机上でだいたいの理屈は理解しましたが、

いただいご回答が、わたしの想像していたことと

一致したので大変よろこんでおります。

お恥ずかしいことですが、

ようするに単純なことで、

CBL85でコンパイルしたものを、SULか、

CULいずれかに落とせばいいわけですね。

その後、複数ユーザーCUL、システムCUL、コピーLIB

などをリンク(#LINK)した結果、

LMが生成され、CPに読み込まれ実行されるわけですね・・。

(ほんとうに低レベルですみません)

1-

BluesBB ©Sting_Band