JCLってどうやって覚えるんでしょうかね
■ このスレッドは過去ログ倉庫に格納されています
0001PG初心者
NGNGWEBで調べてもJCLの意味を載せてるHPはありましたが、JCLの
コーディングについて書いてあるHPが今のところ見つかりません。
誰か教えてください。
00022
NGNG0003デフォルトの名無しさん
NGNGEXEC文はオーロラエクスキューション!
DD文はダイヤモンドダスト!の略だ。
0004PG初心者
NGNGすみません本当に初心者なんで何も分からないんですよ。
00052
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG0008PG初心者
NGNGメインフレームならIBMかCOMPAQのどちらかを使ってます。
0009デフォルトの名無しさん
NGNGそれじゃあ駄目なの?
0010PG初心者
NGNGそれがないんです。
上司に聞こうにもいきなし『俺JCL分からないから聞いても無駄
だぞ!!』ってしょっぱなに跳ね除けられてしまったので、
こういう風に聞いてるのです。
0011デフォルトの名無しさん
NGNG/** ** 00020000
/** GEM モジユ-ル BACKUPヨウ JCL( ADTO ) ** 00030000
/** ** 00040000
/*************************************************** 00050000
//A22300H JOB ,CLASS=H,MSGCLASS=G,MSGLEVEL=(1,1),NOTIFY=A22300 00060000
//* 00070000
//************************************** 00080000
//* INITIALYZE * 00090000
//************************************** 00100000
//* 00110000
//MTINIT EXEC PGM=JSGINITT 00120000
//SYSPRINT DD SYSOUT=*,FLASH=LA4S 00130000
//TAPE1 DD UNIT=(CMT,,DEFER),DCB=DEN=4 00140000
//SYSIN DD * 00150000
TAPE1 INITT SER=ADTOHG,OWNER=FACOM,LABTYPE=SL,DISP=REWIND 00160000
//* 00170000
//* 00499800
//BKUP1 EXEC PGM=JSECOPY 00499900
//SYSPRINT DD SYSOUT=*,FLASH=LA4S 00500000
//* 00500100
//IN01 DD DSN=A22300.ADTOHG.OBJ,DISP=SHR 00500200
//IN02 DD DSN=A22300.ADTOHG.LOAD,DISP=SHR 00500300
//IN03 DD DSN=A22300.ADTOHG.DATA,DISP=SHR 00500400
//IN04 DD DSN=A22300.SYSGEN.DATA,DISP=SHR 00500600
//IN05 DD DSN=A22300.ADTO.CNTL,DISP=SHR 00500700
//* 00501202
//OUT01 DD UNIT=CMT,VOL=SER=ADTOHG,LABEL=(1,SL), 00501300
// DISP=(NEW,PASS),DSN=ADTOHG.OBJ 00501400
//OUT02 DD UNIT=CMT,VOL=SER=ADTOHG,LABEL=(2,SL), 00501500
// DISP=(NEW,PASS),DSN=ADTOHG.LOAD 00501600
//OUT03 DD UNIT=CMT,VOL=SER=ADTOHG,LABEL=(3,SL), 00501700
// DISP=(NEW,PASS),DSN=ADTOHG.DATA 00501800
//OUT04 DD UNIT=CMT,VOL=SER=ADTOHG,LABEL=(4,SL), 00501900
// DISP=(NEW,PASS),DSN=SYSGEN.DATA 00502000
//OUT05 DD UNIT=CMT,VOL=SER=ADTOHG,LABEL=(5,SL), 00502300
// DISP=(NEW,PASS),DSN=ADTO.CNTL 00502400
//* 00503102
//SYSUT3 DD UNIT=SYSDA,SPACE=(TRK,(1)) 00503202
//SYSIN DD * 00503302
COPY OUTDD=OUT01,INDD=IN01 00503402
COPY OUTDD=OUT02,INDD=IN02 00503502
COPY OUTDD=OUT03,INDD=IN03 00503602
COPY OUTDD=OUT04,INDD=IN04 00503702
COPY OUTDD=OUT05,INDD=IN05 00503802
//* 00513507
0012デフォルトの名無しさん
NGNGこれはFの汎用機でデータセットをCMTにバックアップ
するJCL。
聞きたい事あったら聞いて。
0013PG初心者
NGNGわざわざありがとうございます。
まずDDって何ですか?
それにSHR 00500200
ってなにを意味してるんでしょうか?
すみません。バカじゃないの?って思われてますよね。
0014デフォルトの名無しさん
NGNG「このパラメータっていらなそうだけど何に使うんだろ」と削るのに
不安を感じたら迷わず残します。わざわざマニュアルで調べるなんて
むだな作業をしてはなりません。
新しくイチからJCLを書き下ろすというのは最も行儀の悪い行為として
Sヨ仲間から軽蔑されます。
0015デフォルトの名無しさん
NGNGデータセットって分かる?
COBOL書いた事ある?
001612
NGNG無視して下さい。
DISP=SHRはこのデータセットは共用する
(排他はかけない)つー事です。
DDつーのはやってればわかりますよ。
0017デフォルトの名無しさん
NGNGJCL知らない人間にとっては、全部コメントに見える(藁
0018デフォルトの名無しさん
NGNG確かに!(藁
0019PG初心者
NGNGありがとうございます。
でもその書いてある意味が分からないとどうしようもないですよね。
ま−今までVB等をやってきたのですが、そのときは使えるものは
全部パクッテました。
多分JCLで仕事をするときもそうするでしょうね。
COBOLは学生の時に授業でやったくらいでそれからやってません。
でもデータセットは分かります。
0020デフォルトの名無しさん
NGNGえ?コメントじゃないの?(ショック・・・)
0021別の初心者
NGNGら来てるのですか? あれだけなんか他のコマンドから書式が浮いて
るので気になっていたのですが、、
0022新卒のCOBOLの人
NGNG初心者ながらアレですが、これは言語というより、単なる設定のような気がします。
0023デフォルトの名無しさん
NGNGするどい!そうらしいです!
0024デフォルトの名無しさん
NGNG> 便乗で質問したいのですが、ひょっとして UNIX の dd もこの DD か
> ら来てるのですか? あれだけなんか他のコマンドから書式が浮いて
> るので気になっていたのですが、、
書式自体はそうだったと思うけど、ddって名前自体は違う。
convert & copyだかその逆でccってしたかったんだけどもう使われ
てたから。
0025デフォルトの名無しさん
NGNGそれは違うよ。DDってネーミングに関してははっきりした説はないよ。
002621
NGNG書式を合わせたのは一種のユーモアだったのでしょうね。
002724
NGNG> >>23
ん、>>23じゃなくて>>24?
> それは違うよ。DDってネーミングに関してははっきりした説はないよ。
たしかに出所もいまいちはっきりしないしなぁ…。
とりあえず撤回しとこう。まぁそんな説も聞いたことあるってことで。
0028PG初心者
NGNG本当にわからないので神頼み的な感じで載せてしまいます。詳しく教えていただければすごく助かります。
//MAMHREPO JOB MXMAN,MSGLEVEL=(2,0),CLASS=G,MSGCLASS=D
//*********************************************************************
//* ヘンピン カンリヨウ サクセイ (タンジユン リラン OK)
//** === D4T ゼンゼンゲツド & ゼンゲツド VOL=SER シテイ (ゲツジ タイオウ) ===
//** オンライン(IMS) シユウリヨウゴ タイオウ ノトキ ハ STEP S05P & S08P ヲ シユウセイ
//** シユウセイ DLIBATCH ニ シテ サラニ マスターDB ヲ ツナグ 1989.1 H.N
//*********************************************************************
//OUT2 OUTPUT FORMDEF=X001,PAGEDEF=X001,CHARS=KN12
//*
//S01P EXEC SELECT,OUT='*'
//SYSUT1 DD DSN=MA.A000D4T,DISP=SHR,UNIT=CART
//* VOL=SER=(XXXXXX,XXXXXX)
//SYSUT2 DD DUMMY
//SYSUT3 DD DSN=&&D4T,UNIT=DISK,DISP=(,PASS),
// SPACE=(CYL,(400,10),RLSE),
// DCB=(RECFM=FB,LRECL=400,BLKSIZE=23200)
//SYSIN DD *
OPEN=SYSUT3
KEY=(2,1,C,(4))
/*
//************************************************
//** S01P デ サクセイ シタ D4T ヲ セダイ フアイル ニ COPY ***
//************************************************
//S02P EXEC JSCOPY,OUT='*'
//PSPSIN DD DSN=&&D4T,DISP=(OLD,DELETE),UNIT=DISK
//PSPSOUT DD DSN=GDGMV.H000D4T(+1),UNIT=CART,DISP=(,CATLG,UNCATLG),
// LABEL=EXPDT=99006,
// DCB=(RECFM=FB,LRECL=400,BLKSIZE=23200)
0029PG初心者
NGNG続きです。
//** ----------- アカクロ ブンリ フアイル サクセイ ---------------------------
//S03P EXEC PGM=MAMN100
//STEPLIB DD DSN=YAM1.MMLODLIB,DISP=SHR
/*
//PIN1 DD DSN=GDGMV.H000D4T(+1),DISP=SHR,UNIT=CART /*トウゲツド*/
// DD DSN=GDGMV.H000D4T(0),DISP=SHR,UNIT=AFF=PIN1 /*ゼンゲツ */
// DD DSN=GDGMV.H000D4T(-1),DISP=SHR,UNIT=AFF=PIN1 /*ゼンゼン */
//POUT1 DD DSN=&&AKA,DISP=(,PASS),UNIT=DISK,
// DCB=(RECFM=FB,LRECL=100,BLKSIZE=23400),
// SPACE=(CYL,(20,10),RLSE)
//POUT2 DD DSN=&&KURO,DISP=(,PASS),UNIT=DISK,
// DCB=(RECFM=FB,LRECL=100,BLKSIZE=23400),
// SPACE=(CYL,(350,10),RLSE)
//SYSPRINT DD SYSOUT=*
//PLIDUMP DD DUMMY
//* ======== BYS コントロ-ル カド 1 カラム ヨリ MAMNT100YYMMDDYYMMDD
//* ======== CARD ナシ ハ ゲツポ- キカン
//SYSIN DD *
/*
//SOS EXEC CONDCHK,COND=(0,EQ,S03P)
//SYSIN DD *
**** S03P **** PL/I-PGM イジヨウ
/*
//* --------------- オリジナル ユ-コ,キコ,ノウニユウヒズケ,スウリヨウ --------------
//S04S EXEC YSORT
//SORTIN DD DSN=&&AKA,DISP=(OLD,PASS)
//SORTOUT DD DSN=&&AKA,DISP=(OLD,PASS),VOL=REF=*.SORTIN
//SYSIN DD *
SORT FIELDS=(24,12,CH,A, C
48,12,CH,A, C
12,12,CH,A, C
6,6,CH,A, C
80,4,PD,A)
/*
//* --------------- オリジナル ユ-コ,キコ,ノウニユウヒズケ,スウリヨウ --------------
//S05S EXEC YSORT
//SORTIN DD DSN=&&KURO,DISP=(OLD,PASS)
//SORTOUT DD DSN=&&KURO,DISP=(OLD,PASS),VOL=REF=*.SORTIN
//SYSIN DD *
SORT FIELDS=(24,12,CH,A, C
48,12,CH,A, C
12,12,CH,A, C
6,6,CH,A, C
80,4,PD,A)
/*
0030デフォルトの名無しさん
NGNG0031PG初心者
NGNG//* --------------- アカクロ ツイイ フアイル サクセイ -----------------------
//S06P EXEC PGM=MAMN200
//STEPLIB DD DSN=YAM1.MMLODLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//PIN1 DD DSN=&&AKA,DISP=(OLD,DELETE),UNIT=DISK
//PIN2 DD DSN=&&KURO,DISP=(OLD,DELETE),UNIT=DISK
//POUT1 DD DSN=&&TSUFL,UNIT=DISK,DISP=(NEW,PASS),
// SPACE=(CYL,(50,10),RLSE),
// DCB=(RECFM=FB,LRECL=500,BLKSIZE=23000)
//SOS EXEC CONDCHK,COND=(0,EQ,S06P)
//SYSIN DD *
**** S06P **** PL/I-PGM イジヨウ
/*
//* -------------- マスタ- ヒキナオシ --------------------------------
//*S07P EXEC DLIBATCH,MBR=MAMN300,PSB=SGMP010
//S07P EXEC YIMSBMP,MBR=MAMN300,PSB=SGMP010
//STEPLIB DD DSN=YAM1.MMLODLIB,DISP=SHR
//DFSVSAMP DD DSN=GR.GRPARM(NOLONG),DISP=SHR
//SYSPRINT DD SYSOUT=*
//PLIDUMP DD DUMMY
//PIN1 DD DSN=&&TSUFL,UNIT=DISK,DISP=(OLD,DELETE)
//POUT1 DD DSN=&&TSUFL1,UNIT=DISK,DISP=(NEW,PASS),
// SPACE=(CYL,(50,10),RLSE),
// DCB=(RECFM=FB,LRECL=500,BLKSIZE=23000)
//*MDDB0020 DD DSN=MD.MDDB0020,DISP=SHR
//*MYDB003X DD DSN=MD.MYDB003X,DISP=SHR
//*MYDB0030 DD DSN=MD.MYDB0030,DISP=SHR
//*MDDB0010 DD DSN=MD.MDDB0010,DISP=SHR
//* チヨウザイ ユ-ザ シヨクイ タンコ チヤネル カナ シンカンリ キカクカナ ノウニユウヒズケ
//S08P EXEC YSORT
//SORTIN DD DSN=&&TSUFL1,DISP=(OLD,PASS)
//SORTOUT DD DSN=&&TSUFL1,DISP=(OLD,PASS),VOL=REF=*.SORTIN
//SYSIN DD *
SORT FIELDS=(158,12,CH,A, C
182,2,CH,A, C
184,12,CH,A, C
170,12,CH,A, C
211,15,CH,A, C
260,15,CH,A, C
118,28,CH,A, C
230,6,CH,A)
/*
0032PG初心者
NGNG//*********************************************************************
//S09P EXEC JSCOPY
//PSPSIN DD DSN=&&TSUFL1,DISP=(OLD,PASS)
//PSPSOUT DD DSN=MA.TSUFL,UNIT=CART,DISP=(,KEEP),
// LABEL=RETPD=0010,
// DCB=(RECFM=FB,LRECL=500,BLKSIZE=23000)
//* --------------- ヘンピン カンリヨウ レポ-ト サクセイ -------------------
//*S10P EXEC DLIBATCH,MBR=MAMN500,PSB=SGMP020
//S10P EXEC YIMSBMP,MBR=MAMN500,PSB=SGMP020
//STEPLIB DD DSN=YAM1.MMLODLIB,DISP=SHR
//DFSVSAMP DD DSN=GR.GRPARM(NOSHORT),DISP=SHR
//SYSPRINT DD SYSOUT=*
//PLIDUMP DD DUMMY
//PIN1 DD DSN=&&TSUFL1,DISP=(OLD,DELETE)
//PRINT2 DD DSN=&&TSUFL2,DISP=(NEW,PASS),UNIT=DISK,
// SPACE=(CYL,(10,10),RLSE),
// DCB=(RECFM=FB,LRECL=153,BLKSIZE=1530)
//*MYDB001X DD DSN=MD.MYDB001X,DISP=SHR
//*MYDB0010 DD DSN=MD.MYDB0010,DISP=SHR
//*MYDB002X DD DSN=MD.MYDB002X,DISP=SHR
//*MYDB0020 DD DSN=MD.MYDB0020,DISP=SHR
//*
//S11P EXEC MACCP,CTL=MACCPA4,OUT=3,CHARS=,FCB=,FLASH=
//PIN1 DD DSN=&&TSUFL2,DISP=(OLD,DELETE),UNIT=DISK
//POUT1 DD SYSOUT=3,OUTPUT=*.OUT2,
// DCB=(RECFM=FBA,LRECL=133,BLKSIZE=1330)
//*
//
//***------- '92/10 ヨリ ハイシ ----------------------****
//S12P EXEC JSCOPY,OUT='*'
//PSPSIN DD DSN=&&TSUFL2,DISP=(OLD,DELETE),UNIT=DISK
//OUT1 OUTPUT FORMDEF=X001,
// PAGEDEF=X001,
// CHARS=KN12
//PSPSOUT DD SYSOUT=3,OUTPUT=*.OUT1,
// COPIES=01,
// DCB=(RECFM=FBA,LRECL=0133,BLKSIZE=01330)
// MAMHREPO
0033デフォルトの名無しさん
NGNG頭にJOB文があって、複数のEXEC文(+DD文)が繋がっていることが判ると思います。
このEXEC文(+DD文)のかたまりをSTEPといいます。
このSTEPが一つのプログラムを動かす単位と、まずは考えてください。
003433
NGNGかかれている順番にSTEP(つまりプログラム)が実行されていきます。
(最近一部で複数STEPをパラレルに動かせるものもありますが、
あまり一般的ではないのでここでは説明しません)
このときに各プログラムを実行するための、
環境資源を定義したものがDD文です。
003533
NGNG「EXEC」のすぐ後ろに何らかの名称らしきものが記述されているものと、
PGM=のあとに名称があるものの2つのパターンに分けられると思います。
このPGM=のあとにかかれているものが、
(そのまんまですが)プログラム名です。
で、「EXEC」のすぐ後ろにかかれているもの、
これをプロシージャ名と呼ぶことを覚えておいてください。
003633
NGNGそのSTEP内にそのプログラムを動かす、
全ての環境資源を定義しなければいけません。
(JOBLIB、JOBCATという例外についてはあとで説明します)
一方、プロシージャ名を指定してあるものは、
どこかにその雛型があり、それを修飾して使うものと考えてください。
そのJCLの内部にあるものをインストリームプロシージャ、
システムが参照するライブラリに登録されているものを、
カタログドプロシージャと呼びます。
003733
NGNG>>32の例ですが、
//S11P EXEC MACCP,CTL=MACCPA4,OUT=3,CHARS=,FCB=,FLASH=
//PIN1 DD DSN=&&TSUFL2,DISP=(OLD,DELETE),UNIT=DISK
//POUT1 DD SYSOUT=3,OUTPUT=*.OUT2,
// DCB=(RECFM=FBA,LRECL=133,BLKSIZE=1330)
//*
となっていますが、
これはMACCPというカタログドプロシージャに書かれている、
(若しくは必要なのに元々書かれていない)
「PIN1」と「POUT1」というDDについて、
実行時に指定しています。
0040PG初心者
NGNG最初のほうの
DD DUMMYってどういうことなんですか?
ダミーなら記述しなければ良いんじゃないんですか?
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNGソースが存在してるなら中見て比較した方が早いと思う。
俺はホスト系はCOBOLしか知らないが、FILE-CONTROLとDD文を比較してみそ。
SYSIN DD *で渡されるパラメータによってはSYSUT2を使用するパターンもあるんだと想像してみる。
君の環境を知ってる人じゃないと100%の答えは無理だと思うよ。
まぁ、聖闘士聖矢系のJCLで良かったな!
0043デフォルトの名無しさん
NGNG俺に言ってるのか?
ACOS以外のJCLは皆IBMのマネッコじゃないのか?
俺はIBMとFACOMとACOSしか見た事が無いが、日立系の人もIBMと一緒だと言っていた
ACOS以外はみんな似てるんじゃないか?
004433
NGNGでは、次にプログラムとDDの関係について説明しましょう。
プログラムが入力や出力として使用するデータセットを、
DD文で指定します。(ここでもxxxLIB/xxxCATの例外はありますが)
プログラムがそのSTEP内に記述されているどのデータセットを、
どのように使用するかの関連付けには、2つのパターンがあります。
プログラム内にDD名を記述してあるものと、実行時に指定(SYSINなどから)するものです。
一般的なプログラムは前者で、メーカーのユーティリティなどに後者のようなものがある、
と思ってもらって良いです。
で、プログラム内にDD名を記述してある、とはどういうことかというと、
//STEP1 EXEC PGM=A
//IN01 DD DSN=NNN,DISP=SHR
//OUT01 DD DSN=ZZZ,DISPSHR
Aというプログラムを起動すると、IN01という固定のDD名のデータセットを入力に、
OUT01という固定のDD名のデータセットを出力に使うといった動きになるケースでは、
プログラムA内の記述として「IN01」という固定の名前そのものと、
INPUTととして使用(オープン)するという情報と、
「OUT01」という固定の名前そのものと、
OUTPUTととして使用(オープン)するという情報が書かれていると言うことです。
004533
NGNGつまりプログラムAを動かすと、「IN01」「OUT01」の2つのデータセットを
オープンにいくという結果になります。
このようなケースでOUTPUTの結果をデータセットに残さなくても結構、
と言うときにDD DUMMYを使います。
結果がいらないからといって、OUT01を無くしたりすると、オープンエラーに
なってしまうことが多いので、単純に消してしまってはいけません。
プログラムによっては、そのDD名を持ったDD文があるかどうかチェックして
からオープンするつくりになっているものもありますが、
動かしてみなければ判らなかったりする上に、
とんでもなくリカバリの手間がかかったりするので、お勧めしません。
0046PG初心者
NGNG聖闘士聖矢系のJCLって何のことですか?
0047PG初心者
NGNGご丁寧にありがとうございます。
上記の説明でDUMMYについても理解できました。あとですねわからないのが、
//S01P EXEC SELECT,OUT='*'
//SYSUT1 DD DSN=MA.A000D4T,DISP=SHR,UNIT=CART
//* VOL=SER=(XXXXXX,XXXXXX)
//SYSUT2 DD DUMMY
//SYSUT3 DD DSN=&&D4T,UNIT=DISK,DISP=(,PASS),
// SPACE=(CYL,(400,10),RLSE),
// DCB=(RECFM=FB,LRECL=400,BLKSIZE=23200)
最初のSYSUT1の部分のDSNはファイルを指定してるってのは
解るのですが、その後のSYSUT3の部分の&&D4Tこれが解りません。
これというのはどういうことを言ってるのですかね?教えてください。
その後のSPACEとかも解りません。
お願いします。
004833
NGNGこれは、データセットの使用形態に関係します。
DISPパラメータに注目してください。
「DISP=SHR」「DISP=(,PASS)」はそれぞれ
「DISP=(SHR,KEEP)」「DISP=(NEW,PASS)」の省略形です。
SHR/NEWにあたる部分が、現状どうで、どう使用するか?を、
KEEP/PASSの部分が、使用後にどうするかを書くところです。
(実際には第3パラメータとして異常終了時の扱いを書くこともあります。
例:DISP=(NEW,KEEP,DELELTE))
で、SHRというのは前にも出ましたが、現在あるものを共有して使用する
と言う意味です。NEW/KEEPは言葉通りですので想像がつくと思います。
SYSUT3のPASSが判りにくいと思うのですが、
「後のSTEPでも引き続き使用する」と思ってください。
つまり、(,PASS)というのは新たにデータセットを作成し、
後のSTEPでも引き続き使用すると言うことを表しています。
では、なぜ&&D4Tというデータセットとして成立しない名前なのか、
というと、このデータセットが最終的には(このJOB終了後には)保存の
必要が無いものだからです。
各STEPでの途中経過として引き渡されるデータはこのように、
形態で(これを一時データセット)定義することが出来ます。
もちろんちゃんとした名前を付けたデータセットとして、
毎回作成し、最後には削除するようにJCL上で記述しても問題は
ありませんが、その場合はどこにとか、常に作成できるようにとか、
気にしなければならない問題が出てきて厄介です。
004933
NGNG次にSPACEですが、これはデータセットを作成するサイズを指定するパラメータです。
ですから、前述のDISPパラメータともちょっと関連します。
つまり、DISP=(NEW,〜)若しくは省略形のDISP=(,〜)の時にしか、
意味を持たないパラメータです。
DISP=SHRと宣言しているデータセットにSPACEパラメータを指定しても、
データセットのサイズが変わると言うことはありません。
よって、データセットの拡張をしたいからといって、DISP=SHRで、
SPACEを増やして実行しても出来ないので注意が必要です。
その下のDCBパラメータはそのデータセットのレコード長や、フォーマット
などの情報なので、通常は変更することはあまりありません。
005033
NGNG>各STEPでの途中経過として引き渡されるデータはこのように、
>形態で(これを一時データセット)定義することが出来ます。
↓
>各STEPでの途中経過として引き渡されるデータはこのような形態で定義
>(これを一時データセットと呼ぶ)することが出来ます。
の方が判りやすいですね。
一時データセットはWindows等でいうTEMPファイルと思ってください。
0051PG初心者
NGNGすごい。
やっぱりここに書き込んでよかったです。
こうなると>>28,>>29,>>31,>>32はほとんど理解したのも
同然ですかね?
あと今さらですが、SQLを仕事で今までやっていて>>17 で書いてありましたが、
本当にすべてがコメントに見えてしまいます。
とくに/*の部分!!
JCLのコメントは//*で良いのですか?
あとDSNのファイ名の横に”(+1)”とか書いてありますがこれは
どういうことですか?
//PIN1 DD DSN=GDGMV.H000D4T(+1),DISP=SHR,UNIT=CART
↑これです。
本当に申し訳ございません。
005233
NGNGちなみに/*は
//SYSIN DD *
のあとに書くデータ行の終わりを示します。
>>28のS01Pステップの例でいうと、/*の前2行がプログラムにデータとして渡されます。
//SYSIN DD *
OPEN=SYSUT3
KEY=(2,1,C,(4))
/*
ただし、/*がなくて普通のDD文が後に続いても、それ以降はデータとして
渡っていかないので、省略されていても問題はありません。
また、//*でなく/*が突然現れてもコメントと同様に扱われるはず(この辺はちょっと曖昧)
なので、そんなに神経質になる必要は無いでしょう。
良くある失敗としては、途中に「// 」の行を挟んでしまうことでしょう。
>>32が良い例ですが、「// 」以降は無効なJCLとして扱われるので、
注意してください。(一時的に途中まで実行したいときなどに有効)
ただし、その後に再度JOB文が現れると別JOBとして認識されるので、
これも注意が必要でしょう
一つのメンバのSUBMITで複数のJOBを起動してしまうので、管理上はあまりお勧めしません。
005333
NGNGで、
//PIN1 DD DSN=GDGMV.H000D4T(+1),DISP=SHR,UNIT=CART
の件ですね。
これは、OSが管理しているGDGカタログによって、
データセットに世代を持たせて利用している例です。
簡単に言うと、営業日が5日間で月曜から金曜までのデータを
上書きせずに保存したい!
でも毎日違うJCLをSUBMITするのはいやだ!
SUBMITするときにいちいちJCLを変えるのはもっといや!
と言ったときに使用すると有効です。
OSのGDGカタログというものにGDGMV.H000D4Tと言う名前のデータセット
で5つの世代があるもの、という登録をします。
でこのデータセットに書き込みを行うと、第何世代目に書かれたかが、
GDGカタログ上記憶されます。
このとき(+1)という記述をすると、「最後に書き込んだ世代+1」の
世代のデータセットを使用する事になります。
同様に(0)と書くと、最後に書き込んだもの、
(-1)と書くと、最後から2番目に書き込んだものと言う指定になります。
つまり「DSN=GDGMV.H000D4T(+1)」という記述のままで、
世代管理された複数のデータセットの最新世代への書き込みを行えるように
なります。
ただし、これも間違えて2度実行すると、次の世代に書いてしまったり、
大変なことになるので要注意。
(単純リラン可とか不可って聞いたことがあるかもしれません)
005433
NGNGってやっぱり会社から書いてたんかいっ!
なんか今日は今までで一番2chにマジレスした日になってしまった。
なんか質問や間違いがあったら、書いておいてくり。
家に帰ってから、もう一回観にくると思うからさ。
う〜、だんだん週末モードになってきた。んじゃ。
0055デフォルトの名無しさん
NGNG>こんな本番にのってるものをここに載せて良いのか非常に悩むところですが、
守秘義務を思い出せ!ばれたら九尾だぞ!
0056デフォルトの名無しさん
NGNGこれを間違えると大変だよね。
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG僕もIBM系のJCLは大体分かってるつもりでは
いたけど、こんなに上手に説明できないわ。
守秘義務sage。
005933
NGNGそうですよね。
いたづらにDISP=OLDって指定しちゃうと、
デットロックとか起こりかねないし.....。
まぁ、DISPの指定を理解してIEFBR14(FやHでは〜DUMMYでしたっけ)
をちゃんと使えるようになるのが第一歩ですかねぇ。
0060PG初心者
NGNGっと言うことでまたJCLのお勉強!!
>>33
本当にご親切にありがとうございます。
また質問すると思うのでそのときはよろしくお願いいたします。
0061PG初心者
NGNGKEY=(1,1,C,(0)),FIELD=(419,1,C,(,A))
のKEY及びFIELD部分のカッコ内の意味を教えてください。
006233
NGNGSYSINで与えるパラメータ(データ)に関する質問ですね。
基本的には各プログラム(PGM=xxxxxxxで書かれているもの)が独自に受け取っているので、
その使用手引きなり、仕様書を見ないと判らないんですが、
この形態がSORTのパラメータとほぼ同じなので、
想像で答えてみます。
最初の数字が対象のオフセット、次が長さ、次が種類、次が処理方法?だと思います。
つまりあるファイルの処理をするときに、
FIELD=(419,1,C,(,A)) を例とすると、
419 バイトめの
1 バイトのエリアに入っている
C つまりキャラクタを、
A 昇順(アセンディング)に処理する
と言う意味だと思われます。
多分この形態だと、行っている処理はソートかオミットあたりかと思いますが、
使用手引き等があるのなら見せてもらっても良いでしょう。
このタイプのパラメータならば、プログラムかデータの変更という、
ちょっと注意が必要な場合しか、変える必要は無いと思うので、
あまり気にしないで、放って置くとかでも良いかと思います。
結構、だらだらと書いてますが、特に親切って訳じゃないですから...。
この内容には、この文体のほうが書きやすいだけで、
他のスレでは、オマエモナーとか書いてたりするほうなんで、
あまり丁寧にレスしてくれなくてもいいっすよ。
006333
NGNG自己レスごめん
>419 バイトめの
>1 バイトのエリアに入っている
>C つまりキャラクタを、
>A 昇順(アセンディング)に処理する
判りにくかったですね。
簡単に言うと同じフォーマットの大量データで、419バイト目に年齢が入っている
ようなケースで、年齢順にレコードを並べ替えたりするときに、ってこと。
まぁ、1バイトだから年齢ってのは無理があるかも知れないけど....。
0064PG初心者
NGNG誰か教えてください。
00662
NGNG00672
NGNG0068デフォルトの名無しさん
NGNG12の前で//入ってるから別に09〜11で良かったんじゃない
0069PG初心者
NGNGという説明に出力クラス”*”はMSGCLASSと同じ事を意味すると
書かれてたのですが、MSGCLASSって何のことでしょうか?
教えてください。
0070PG初心者
NGNG007133
NGNGMSGCLASSはJOB文に指定するパラメータで、
JOB実行結果出力の扱いを指定します。
英数字の指定が可能で、それぞれの意味は(JESの)システムパラメータ
に設定してあります。
例えば、Oクラスは実行後すぐにプリントされるとか、
Hクラスはホールド状態(リリースするとプリント)、
Aクラスはりリースされてもプリントされないとか、
の指定が可能です。
これを上手く使って、プリント仕分けとかを行ったりします。
例えば、JOBA、JOBB、JOBCの三つのJOBでの計算結果出力だけを、
いっしょにプリントしたいときなどに、その出力DDのSYSOUTのクラスを、
Kとしておきます。
保管用の出力は全てPクラスにし、緊急時のみプリントする(普段は不要)出力をD、
とします。
三つのJOBがきちんと終わったところで、(その三つのJOBの)Kクラスのものを、
出力用クラス(上の例だとOクラス)に変えてあげると、必要な計算結果だけが、
出力されます。
あとは、PクラスのものをHクラスに変更しておいて、プリンターが空いた時に、
リリースしてあげれば良い、というオペレーションが出来ます。
本当はもっと大規模なジョブをさばくために、色々と凝った設定をしていたり、
すると思いますが、出力結果をまとめて扱うためのものと思えばいいでしょう。
ここら辺は、あまり得意分野ではなかったので、
もしかしたら間違えがあるかもしれませんが、発見された方はご指摘ください。
0072デフォルトの名無しさん
NGNGMSPとXSPは富士通なのに全然違うのに・・
さらに三菱のJCLも全然違う・・
扱いが大変なんだよね!
0073デフォルトの名無しさん
NGNGそれともオペレーションに入るのかな?
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG俺はユーザ側のシステム部にいたくせに
JCLなんてさっぱりわからないまま
転職してしまったけど、よくわかりました。
説明してくれた人ありがとう。
0078デフォルトの名無しさん
NGNG愚問で申し訳ない<(_ _)>
0079デフォルトの名無しさん
NGNGジョブを制御するための『言語』だよ。
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG主にどんなことに使用できるの?
0082デフォルトの名無しさん
NGNGたしかにJCLは言語だけれど、個別のプログラムの特性を熟知していないとダメ
なので、言語以外の部分の理解も不可欠ですね。単純に記述されたJCLと、シス
テム(OSも含む)を熟知し書かれたJCLとでは、パフォーマンスが10倍違うという
ことも少なくありません。
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG>生きた化石だ
JCLってCOBOLみたいに古い言語なの?
0085デフォルトの名無しさん
01/08/26 21:41ID:vmFgMi8s必要に迫られていなければ、他の言語を勉強すべきだね。
0086デフォルトの名無しさん
01/08/26 21:46ID:UgfBg/w6NTまでダウンする必要はないけど、
Solarisとそれの開発をやるほうがいいかもね>>84
0087デフォルトの名無しさん
01/08/27 23:47ID:iDbpn/rgCOBOLとJCLとではJCLのが汎用性が高いと思われ。
ただ、言語の質が全く違うのでどうかな。
JCLはJOBを制御する言語なので、
どういうプログラムをどういう設定でどういう順番に流すかというのを指定する言語。
コレ単体で何かファイルを作るとかリストを作るとかはしない。
まあ、古いというかなんというか。
目の前にJCLやらCOBOLやらの仕事がないなら
勉強する必要はないと思われ。
ちなみに私の目の前にはJCLチェックリストが山盛りになっております。
勘弁してくれ。
0088デフォルトの名無しさん
01/08/29 07:46ID:suZHL6m2本読んだだけの言語理解は理解したと言えないのかな?
0089デフォルトの名無しさん
01/08/29 10:03ID:7lq79nhk>IBMと富士通のMSPのJCLって似てるよね!
当然です。真似をしたのですから。
(互換機を作って、互換OSを作ったともいう)
当時のOS/VS,MVSのコピーをしたはずです。
OSIV/F4 → OSIV/F4 MSP → MSP だったかな?
>MSPとXSPは富士通なのに全然違うのに・・
富士通がIBM互換機を始めた当初、それまでの富士通機の資産を
どう移行するかが問題でした。
それまでの「FACOM 230-XX」で使われていた「OSII/VS」のJCLは
あまりにも「MVS or OSIV/F4」のJCLと違った物でした。
そこで「OSII/VS」と互換の取れる「OSIV/X8」が作られました。
OSIV/X8 → OSIV/X8 FSP → XSP と変化してきました。
汎用機では、資産の継承が非常に大事にされます。
M$のように「あれは無かったことにしてくれ」とは言えないのです。
・・・F2(ESP)は消滅したけど・・・
(20数年の記憶をたどっているので、間違っていたらごめん)
0090デフォルトの名無しさん
01/09/01 14:18ID:w4tLKRkw0091デフォルトの名無しさん
01/09/01 14:22ID:CxsJK8mAVIS関連のJCLが良く分からん。
0092デフォルトの名無しさん
01/09/02 18:41ID:UHOWXA.Y>ACOSのJCLって、IBM・FACOMと似てますか?
全然違います。
たしか、ハネウェルとACOS4が同じだったような気がします。
0093デフォルトの名無しさん
01/09/04 22:33ID:9IA.y9GYもしくは、雛型があると思うからそれをパクリまくる!
0094デフォルトの名無しさん
01/09/05 08:39ID:rayf.FWoそうやって、無駄な動きをするJOBが増える。
数MBのSORTに数GBのSORTWORKを指定するとか・・・
0095デフォルトの名無しさん
NGNG不安だ・・
オペレーターの方がいいのかな?
0096デフォルトの名無しさん
NGNGhttp://dir.yahoo.com/Computers_and_Internet/Programming_Languages/JCL/
http://www.tuxedo.org/~esr/jargon/html/entry/JCL.html
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG>>97
JCLだけ(又は専門)というのは、極めてまれだと思いますが。
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNGhttp://www-6.ibm.com/jp/manuals/library.html
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG例外処理?
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNGSEっていうの?
0109デフォルトの名無しさん
NGNG(10進)データ例外、IBM系マシンのCOBOLerにはおなじみのエラー
>>108
冗談でしょ!
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNGほれ
http://www.jbooksrv.japan.ibm.co.jp/cgi-bin/master!request=menu!parms=!xu=SK888002/BOOKS/IEACB613/20.12
0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNGこれは「***このスレ終了***」という、意味ですか?
0114デフォルトの名無しさん
NGNG@XQT SYS$LIB$*1100UTL.SBCOMP
@EOF
@SYM PRINT$,,PR
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNGなんか気がのらないんだよね!
なんかその新人君が不敏でね。。
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNGこれからはSPにでもなるしかないね!
0120デフォルトの名無しさん
NGNGシェルスクリプトしか思いつかないんですけど、あれじゃ完全な代用にはなりませんよね?
0121デフォルトの名無しさん
NGNG十分代用になるよ
うちのところでは、UNIXに以降したときシステムそのまま乗せ変えたところがある
そこでは、シェルスクリプトの中にJCLの注釈が入っていて、それに相当するスク
リプトが書いてあるし.......
JCLとシェルってまったく違うものだけど、JCL以上の事はできるでしょうねぇ
0122デフォルトの名無しさん
NGNGJCL互換のシェルを開発してしまったDQNな会社の話が載ってたYO!
0123デフォルトの名無しさん
NGNG面白すぎ、どの号に乗ってたか教えてちょ
0124デフォルト名無しさん
NGNG0125デフォルトの名無しさん
NGNG恥ずかしくて社外の人には言えないのだが。
0126デフォルトの名無しさん
NGNGピリオドコムって言ってたよ。
複数の放送局の複数の穴が。
もちろんCNNとかは、
その頃からドットコムって言ってた。
アメリカ的でないとカッコ悪いというのは、
日本人の共通認識だよね。
0127デフォルトの名無しさん
NGNGよって大きいフォントのピリオドはドットではない。
0128デフォルトの名無しさん
NGNGでもアメリカがドットなのに
ピリオドって言ったらカコワルイヨ
となったわけ
0129デフォルトの名無しさん
NGNGおお、涙が出るほどなつかしい。
UNIVAC OS1100
JCL とは言わずに、ストリームとかいうような名前だった気がする。
0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNGほれ。
ttp://www.monjunet.ne.jp/PT/sampo/030.htm
0134デフォルトの名無しさん
NGNG困っています。プログラムのほうは追えるのですが、JCLがさっぱりです。
job制御言語のマニュアルはあって、それで勉強してるのですが、
載っていないものとかありまして、周りにそれを理解してる方がいなくて
書き込みました。
過去のLOGを見て勉強になることがいっぱいでわらをもすがる思いです。
質問ですが、以下の意味なのですが。
1.SYSIN DD ,SYSOUT DD で指定してあるファイル名と、PGで指定したFILE-CONTORL
のIN01,OUT01で指定してあるファイル名の違い。SYSIN,SYSOUTの意味がつかめ
ません。
2.SYSPRINT,STPRINの意味。
3.SYSOUT=*
以上のことなのですが、DD文の前に、SYSOUT,SYSPRINTがついて
SYSOUT DD SYSOUT=* などの文の意味がわかりません。
めちゃくちゃな質問文になってしまいましたが、どうかよろしくおねがいします
0135デフォルトの名無しさん
NGNGJCLはACOSとIBMに近いやつを使っていたことがあります。
最初はとっつきにくかったのですが、特別に勉強した覚え
がありません。他のJCLを参考すれば誰でも書けるように
なります。
あなたの使うシステムに山ほど使用例があるはずですから
それを見てパターンを身に付けるのがいいと思います。
0136デフォルトの名無しさん
NGNGどうも、上の質問のところが気になりまして・・・・。
教えていただきたいのですが。すいません
0137猫好き ◆NuNaN3vQ
NGNGCOBOLの「FD aaaa ASSIGN bbbb」の「bbbb」が
JCLの「bbbb DD DSN=〜」になるんでない?
会社行かないとハッキリしないのでsage(笑
0138猫好き ◆NuNaN3vQ
NGNG>>137の続き
2.は、指定されていればシステムが使うところ。(だと思う)
3.「SYSOUT DD SYSOUT=*」
右側の「SYSOUT=*」は、出力するプリンタを指定するところ。
SYSOUT=*の「*」は、JOBステートメントの「MSGCLASS=x」の「x」が代入
されるよ。
左側の「SYSOUT」は、COBOLの「DISPLAY xxx UPON SYSOUT」と指定
した時にセットしておくDD文だよ。
0139猫好き ◆NuNaN3vQ
NGNGCOBOLで
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT xxx ASSIGN yyy.
の yyy が、JCLの
yyy DD DSN=〜
に繋がるんだったスマソ
0140デフォルトの名無しさん
NGNG理解できました。感謝です。
014133
NGNGなんかあったらまた質問に答えます。
でもCOBOLは判らないので、「猫好き」さんよろしく。
■ このスレッドは過去ログ倉庫に格納されています