(57)【要約】      （修正有）【課題】ジョブ制御言語（ＪＣＬ）を生成する作業負担を軽減しつつ、生成するＪＣＬを柔軟に調整する。【解決手段】ＪＣＬ自動生成プログラム１２０は、ジョブフローファイル１３１内のジョブフロー図とルールファイル１３２内のＪＣＬのテンプレートを入力として読み込み、ＪＣＬを含むジョブ制御ファイル１３３を出力として生成する。この時、ジョブフロー上のプロセスを表すジョブフロー部品毎に記述したテンプレートをジョブフロー図に適用する。【選択図】図１
2016081126.tif 000002
【特許請求の範囲】
【請求項１】
汎用機が使用するジョブ制御言語によって記述されたジョブ制御ファイルを生成する処理をコンピュータに実行させるプログラムであって、前記コンピュータに、
前記汎用機に実行させるジョブフローを定義するジョブフロー図を記述したジョブフローファイルを読み込むジョブフロー取得ステップ、
前記ジョブフロー図にしたがって前記ジョブ制御ファイルを生成するための規則を記述したルールファイルを読み込むルール取得ステップ、
前記ジョブフロー図が定義しているジョブフローに対して前記ルールファイルを適用することにより前記ジョブ制御ファイルを生成する生成ステップ、
を実行させ、
前記ルールファイルは、前記ジョブフロー図が定義するジョブフローを記述する前記ジョブ制御言語のテンプレートを、前記ジョブフロー上におけるプロセスを表すジョブフロー部品の種別毎に記述しており、
前記生成ステップにおいては、前記コンピュータに、前記ジョブフロー部品を前記テンプレートに置き換えることによって前記ジョブ制御言語を生成させる
ことを特徴とするジョブ制御言語自動生成プログラム。
【請求項２】
前記ジョブフロー図は、前記ジョブフロー上におけるプロセスに対して１以上のデータが入力され、または前記プロセスが１以上のデータを出力する前記ジョブフローを定義しており、
前記ルールファイルは、前記プロセスに対する入力または前記プロセスからの出力を定義する前記ジョブ制御言語のテンプレートとして、入力定義テンプレートまたは出力定義テンプレートを記述しており、
前記生成ステップにおいては、前記コンピュータに、
前記ジョブフロー上において前記プロセスに対して入力されるデータの個数と同じ回数だけ前記入力定義テンプレートを繰り返し使用し、または前記プロセスから出力されるデータの個数と同じ回数だけ前記出力定義テンプレートを繰り返し使用することにより、単一の前記入力定義テンプレートまたは単一の前記出力定義テンプレートを用いて前記プロセスに対する入力または前記プロセスからの出力を定義する前記ジョブ制御言語を生成させる
ことを特徴とする請求項１記載のジョブ制御言語自動生成プログラム。
【請求項３】
前記ジョブフロー図は、前記ジョブフローの出力として１以上の出力データファイルを出力する旨を定義しており、
前記ルールファイルは、前記ジョブフローを開始する前の時点において前記出力データファイルが存在する場合は前記ジョブフローを開始する前に前記出力データファイルを削除する旨を指定する前記ジョブ制御言語のテンプレートを記述しており、
前記生成ステップにおいては、前記コンピュータに、
前記ジョブフロー図上における前記出力データファイルを特定した上で、前記ルールファイルの記述にしたがって、特定した前記出力データファイルを削除する前記ジョブ制御言語を、前記ジョブフローを記述する前記ジョブ制御言語の前に生成させる
ことを特徴とする請求項１または２記載のジョブ制御言語自動生成プログラム。
【請求項４】
前記生成ステップにおいては、前記コンピュータに、
前記出力データファイルのうち前記汎用機上で世代管理するものを除いた前記出力データファイルを特定し、特定した前記出力データファイルを削除する前記ジョブ制御言語を生成させる
を実行させることを特徴とする請求項３記載のジョブ制御言語自動生成プログラム。
【請求項５】
前記ジョブフロー図は、前記ジョブフロー上におけるプロセスとデータファイルとの間の接続関係とともに、前記データファイルのデータセット名を記述しており、
前記生成ステップにおいては、前記コンピュータに、
前記ジョブフロー上において前記プロセスに対して入力され、または前記プロセスから出力される前記データファイルのデータセット名を、前記ジョブフローファイルから取得するステップ、
前記プロセスに対する入力または前記プロセスからの出力として前記ジョブフローファイルから取得したデータセット名を指定する前記ジョブ制御言語を生成するステップ、
を実行させることを特徴とする請求項１から４のいずれか１項記載のジョブ制御言語自動生成プログラム。
【請求項６】
前記生成ステップにおいては、前記コンピュータに、
前記プロセスに対する入力が他プロセスから引き渡されるデータファイルである場合は、前記プロセスに対する入力の種別として既存データファイルを指定するとともに、前記プロセスに対して入力し終えた前記既存データファイルを削除するよう指定する、前記ジョブ制御言語を生成するステップ、
前記プロセスに対する入力が他プロセスによって同時にアクセスされ得る共有データファイルである場合は、前記プロセスに対する入力の種別として共有データファイルを指定する、前記ジョブ制御言語を生成するステップ、
を実行させることを特徴とする請求項５記載のジョブ制御言語自動生成プログラム。
【請求項７】
前記生成ステップにおいては、前記コンピュータに、
前記プロセスからの出力が他プロセスに対して引き渡されるデータファイルである場合は、前記プロセスからの出力の種別として新規データファイルを指定するとともに、他プロセスに対して引き渡すデータファイルである旨を指定する、前記ジョブ制御言語を生成するステップ、
前記プロセスからの出力が前記ジョブフローの最終出力として出力されるデータファイルである場合は、前記プロセスからの出力の種別として新規データファイルを指定するとともに、前記ジョブフローの最終出力として出力するデータファイルである旨を指定する、前記ジョブ制御言語を生成するステップ、
を実行させることを特徴とする請求項５または６記載のジョブ制御言語自動生成プログラム。
【請求項８】
前記ルールファイルは、
前記プロセスがデータファイルを書き込む記憶装置の１書込単位あたりの記憶容量、
前記記憶装置に対してデータファイルを書き込む際に前記記憶装置上の記憶領域を確保するよう指定する前記ジョブ制御言語のテンプレート、
を記述しており、
前記ジョブフロー図は、前記記憶装置に対して書き込まれるデータファイルのレコード長と最大レコード件数を記述しており、
前記生成ステップにおいては、前記コンピュータに、
前記ジョブフロー図が記述している前記レコード長と前記最大レコード件数、および前記ルールファイルが記述している前記１書込単位あたりの記憶容量を用いて、前記記憶装置上に確保すべき記憶領域のサイズを計算するステップ、
前記計算したサイズの記憶領域を前記記憶装置上に確保する前記ジョブ制御言語を生成するステップ、
を実行させることを特徴とする請求項１から７のいずれか１項記載のジョブ制御言語自動生成プログラム。
【請求項９】
前記ジョブフローファイルは、前記コンピュータ上で実行される図面作成アプリケーションによって作成されるデータ形式のファイルである
ことを特徴とする請求項１から８のいずれか１項記載のジョブ制御言語自動生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、汎用機が使用するジョブ制御言語を自動生成する技術に関する。
【背景技術】
【０００２】
ジョブ制御言語（ＪＣＬ）は、汎用機（メインフレーム）において、ジョブの内容や使用する装置の名称などをコンピュータに対して指定する、ジョブ制御用のスクリプト言語である。ジョブ制御言語は、マニュアル作業によって記述することもできるし、専用の編集ソフトウェアなどを用いて作成することもできる。
【０００３】
下記特許文献１は、ジョブフローおよびＪＣＬを作成する技術について記載している。同文献においては、画面上でジョブフロー部品を接続し、ジョブ属性などを入力することにより、その入力に準じたＪＣＬを生成している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０９−０４４３４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記特許文献１記載の技術においては、画面上で作成したジョブフロー図にしたがってＪＣＬを作成している（例えば同文献の図１２）。しかしこのとき生成されるＪＣＬは、ジョブフロー図の内容については反映されていると考えられるものの、個々の具体的な制御文については何らかの規則にしたがって固定的に作成されるものであると思われる。
【０００６】
したがって同文献においては、生成されたＪＣＬの個々の制御文が例えば実環境におけるパラメータなどに合致していない場合は、生成されたＪＣＬを開発者がマニュアル作業により修正しなければならないと考えられる。具体的には、汎用機の機種が変更されるとＪＣＬ上の様々なパラメータをこれに併せて変更する必要があるが、引用文献１記載の技術はそのような変更に対して柔軟に対処することは困難である。
【０００７】
本発明は、上記のような課題に鑑みてなされたものであり、ＪＣＬを生成する作業負担を軽減しつつ、生成するＪＣＬを柔軟に調整することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るジョブ制御言語自動生成プログラムは、ＪＣＬのテンプレートをジョブフロー部品毎に記述したルールファイルを読み込み、ジョブフロー図に対してそのテンプレートを適用することにより、ＪＣＬを自動生成する。
【発明の効果】
【０００９】
本発明に係るジョブ制御言語自動生成プログラムによれば、自動生成するＪＣＬを柔軟にカスタマイズすることができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態１に係るジョブ制御言語自動生成プログラム１２０を実行するコンピュータ１００の構成図である。
【図２Ａ】ジョブフローファイル１３１が記述しているジョブフロー図（前半部分）の例である。
【図２Ｂ】ジョブフローファイル１３１が記述しているジョブフロー図（後半部分）の例である。
【図３Ａ】図２Ａ〜図２Ｂで説明したジョブフローを記述したジョブ制御言語の開始部分を示す図である。
【図３Ｂ】図２Ａで説明したジョブフローを記述したジョブ制御言語を示す図である。
【図３Ｃ】図２Ｂで説明したジョブフローを記述したジョブ制御言語を示す図である。
【図４Ａ】ルールファイル１３２の開始部分を示す図である。
【図４Ｂ】ルールファイル１３２のうち図３ＢのＳＴＥＰ００１０で説明したＪＣＬに相当するテンプレートを記載した箇所を示す図である。
【図４Ｃ】ルールファイル１３２のうち図３ＢのＳＴＥＰ００２０〜図３ＣのＳＴＥＰ００４０で説明したＪＣＬに相当するテンプレートを記載した箇所を示す図である。
【図４Ｄ】ルールファイル１３２のうち図３Ｃの終了宣言部分に相当するテンプレートを記載した箇所を示す図である。
【発明を実施するための形態】
【００１１】
＜実施の形態１＞
図１は、本発明の実施形態１に係るジョブ制御言語（ＪＣＬ）自動生成プログラム１２０を実行するコンピュータ１００の構成図である。コンピュータ１００は、ＪＣＬを自動生成する処理を実行するコンピュータであり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０、ＪＣＬ自動生成プログラム１２０、記憶部１３０を備える。
【００１２】
ＣＰＵ１１０は、プログラムを実行するプロセッサである。以下では記載の便宜上、プログラムを動作主体として説明する場合があるが、実際にプログラムを実行するのはＣＰＵ１１０である。
【００１３】
ＪＣＬ自動生成プログラム１２０は、ジョブフローファイル１３１とルールファイル１３２を入力として読み込み、ジョブ制御ファイル１３３を出力として生成する。ＪＣＬ自動生成プログラム１２０の具体的な動作については後述する。
【００１４】
記憶部１３０は、ハードディスク装置などの記憶装置である。ＪＣＬ自動生成プログラム１２０は、記憶部１３０に格納することもできるしその他適当な記憶装置に格納することもできる。
【００１５】
記憶部１３０は、ジョブフローファイル１３１、ルールファイル１３２、ジョブ制御ファイル１３３を格納する。これらファイルの具体例については後述する。
【００１６】
図２Ａは、ジョブフローファイル１３１が記述しているジョブフロー図（前半部分）の例である。ジョブフローファイル１３１は、適当な図面作成ソフトウェアによって作成した図面データファイルであり、図２Ａに例示するようなジョブフロー図を記述している。ジョブフロー図は、ジョブフロー部品を矢印で接続することによって記述することができる。各ジョブフロー部品の中には、後述する属性値が記述されている。
【００１７】
ジョブフローは、プロセス、プロセスに対する入力、およびプロセスからの出力によって構成されるステップを組み合わせることにより形成することができる。説明の便宜上、図２Ａに示すジョブフローを、２つのステップＳＴＥＰ００１０とＳＴＥＰ００２０に分けて示した。各ステップは、それぞれ上記構成を有する。
【００１８】
ＳＴＥＰ００１０において、プロセスＳＯＲＴ５３は入力されたデータをソートするプロセスであり、２つのデータセットＡＡ００１（０）とＳＯＲＴ．ＡＡ００１を入力として受け取り、処理結果として１つのデータセット＆＆ＡＡ００１を出力する。
【００１９】
各データセットを表すジョブフロー部品内には、そのデータセットの属性を記述することができる。
【００２０】
データセットＡＡ００１（０）は、レコード長５００ＢＹＴＥであり、最大レコード件数は２０００００件であり、ＤＤ名はＳＯＲＴＩＮである。なお括弧（）内の数字は世代番号であり、当該データセットが世代管理される（すなわちデータを更新するときは新たな世代番号が割り振られる）ことを示している。データセットＳＯＲＴ．ＡＡ００１は、ＳＹＳＩＮデータセットである。
【００２１】
データセット＆＆ＡＡ００１は、ＤＤ名がＳＯＲＴＯＵＴであり、レコード長と最大レコード件数はデータセットＡＡ００１（０）と同じである。アスタリスク＊は、当該データセットが別のプロセスの入力として引き渡されることを示している。＊の次のＨＥＢ５４０１Ｉは、次のプロセスがデータセット＆＆ＡＡ００１を入力として受け取るとき用いるＤＤ名である。
【００２２】
ＳＴＥＰ００２０において、プロセスＭＥＢＰＣ３０はバッチプロセス（ＳＯＲＴ以外の一般的なプログラム）であり、プロセスＳＯＲＴ５３の出力とともに、データセットＢＢ００１を入力として受け取る。データセットＢＢ００１は、プロセスから出力されたものではなく、記憶装置上に格納されている既存データファイルである。データセットＢＢ００１のＤＤ名は、＊ＨＥＢ５４０２Ｉである。プロセスＭＥＢＰＣ３０は出力として、２つのデータセット＆＆ＢＢ００１１と＆＆ＢＢ００１２を出力する。各データセットの属性は図２Ａ記載の通りである。
【００２３】
図２Ａ末尾に配置されている結合子１と２は、その先のジョブフローが同じ番号の結合子に続いていることを示す。
【００２４】
図２Ｂは、ジョブフローファイル１３１が記述しているジョブフロー図（後半部分）の例である。図２Ｂは、図２Ａに示すジョブフローの続きを示す。図２Ａと同様に、プロセスとその入出力をセットにして、２つのステップＳＴＥＰ００３０とＳＴＥＰ００４０に分けて示した。
【００２５】
ＳＴＥＰ００３０内のプロセスＭＥＢＰＣ３５は、結合子１から続くデータセット＆＆ＢＢ００１１を入力として受け取る。ＳＴＥＰ００４０内のプロセスＭＥＢＰＣ４０は、プロセスＭＥＢＰＣ３５が出力するデータセット＆＆ＢＢ００１３と、結合子２から続くデータセット＆＆ＢＢ００１２とを入力として受け取り、２つのデータセットＡＡ００１（＋１）とＢＢ００３を出力する。
【００２６】
データセットＡＡ００１（＋１）の括弧（）内に記述している＋１は、データセットＡＡ００１の世代番号を１つ増やすことを示している。なおＯＲ記号類似のジョブフロー部品はハードディスクを表し、円の右下に引き出しが付与されたジョブフロー部品はテープデバイスを表している。
【００２７】
図３Ａは、図２Ａ〜図２Ｂで説明したジョブフローを記述したジョブ制御言語の開始部分を示す図である。以下図３Ａの各部について説明する。
【００２８】
ＪＣＬは、冒頭に開始宣言を記述する必要がある。開始宣言において、ジョブ名（ＪＥＢＭＰ９９）、クラス名（Ｃ）、ユーザ名（ＵＳＥＲ００）を記述する必要がある。これらについては後述のルールファイル１３２の説明において改めて述べる。
【００２９】
汎用機においては、プロセスから出力されるデータファイルが既に記憶装置上に存在している場合、プロセスがエラー終了する（ただし汎用機の仕様に依拠する）。そこでジョブフローが最終的に出力するデータセットは、当該ジョブフローを開始する前に削除しておく必要がある。この処理を事前削除などと呼ぶ。図２Ｂで説明したジョブフローにおいては、データセットＡＡ００１（）は世代管理ファイルであるため事前削除する必要はないが、データセットＢＢ００３は事前削除する必要がある。したがってＤＥＬＥＴＥ文によりデータセットＢＢ００３を削除している。
【００３０】
図３Ｂは、図２Ａで説明したジョブフローを記述したジョブ制御言語を示す図である。ＳＴＥＰ００１０は、プロセスＳＯＲＴ５３を実行し、データセットＡＡ００１（０）を入力するとともにデータセット＆＆ＡＡ００１を出力している。ＳＹＳＩＮデータセット（ＳＯＲＴ．ＡＡ００１）はソート時のパラメータ（例：ソート対象フィールド）を指定するデータセットであるため、別途定義している。
【００３１】
入力データセットを定義する箇所（ＤＤ名：ＳＯＲＴＩＮおよびＤＤ名：ＳＹＳＩＮ）において、パラメータＤＩＳＰ（ＤＩＳＰｏｓｉｔｉｏｎ）＝ＳＨＲを指定している。これは、共有データファイル（すなわち他のプロセスによって同時にアクセスされる可能性があるデータファイル）に対して共有アクセスする旨を指定している。
【００３２】
出力データセットを定義する箇所（ＤＤ名：ＳＯＲＴＯＵＴ）において、パラメータＤＩＳＰ＝（ＮＥＷ，ＰＡＳＳ）を指定している。これは、新たなデータファイルを作成するとともに、そのデータファイルを別のプロセスへ引き渡す旨を指定している。ＵＮＩＴパラメータは、記憶装置の種別（ハードディスク：ＳＹＳＤＡまたはテープデバイス：ＶＴＳ）を指定する。ＳＰＡＣＥパラメータは記憶装置上に確保する記憶容量を指定するものであり、１トラックサイズとデータセットの最大サイズから計算することができる。ＲＬＳＥ指定は、レコード件数が最大件数に満たなかった場合、余分な記憶領域を解放する旨を指定している。
【００３３】
ＳＴＥＰ００２０は、プロセスＦＨＤＢＡＴ１を実行するとともに、そのなかでプロセスＭＥＢＰＣ３０を実行することを指定している。バッチ処理においてはデータベースにアクセスする場合があるため、データベースアクセス処理については共通のプロセス内にあらかじめ定義しておき、そのなかでジョブフロー上のプロセスを呼び出す。ＳＴＥＰ００２０の冒頭部分はその旨を記述している。後述するＳＴＥＰ００３０とＳＴＥＰ００４０についても同様である。
【００３４】
プロセスＭＥＢＰＣ３０の１つ目の入力はデータセット＆＆ＡＡ００１であり、そのＤＤ名はＨＥＢ５４０１Ｉである。データセット＆＆ＡＡ００１はプロセス間でデータを授受するために一時的に作成されるデータファイルであるため、ＤＩＳＰパラメータは既存ファイルを示すＯＬＤを指定するとともに、引き渡しが完了したら当該データセットを削除する旨を指示するＤＥＬＥＴＥを指定している。
【００３５】
プロセスＭＥＢＰＣ３０の２つ目の入力はデータセットＢＢ００１であり、これは既存のデータファイルであって他プロセスが同時にアクセスする可能性があるので、ＤＩＳＰパラメータとして共有アクセスを示すＳＨＲを指定している。
【００３６】
プロセスＭＥＢＰＣ３０の２つの出力は、ＳＴＥＰ００１０の出力と同様の記述ルールにしたがって、図２Ａで説明した通り指定されている。また各データセットのレコード長も併せて図２Ａ記載の通り指定されている。
【００３７】
図３Ｃは、図２Ｂで説明したジョブフローを記述したジョブ制御言語を示す図である。以下各ステップについて説明する。
【００３８】
ＳＴＥＰ００３０において、プロセスＦＨＤＢＡＴ１のなかでプロセスＭＥＢＰＣ３５を実行する。入力は、結合子１から続く＆＆ＢＢ００１１である。プロセス間でデータを授受するために一時的に作成されるデータファイルであるので、ＭＥＢＰＣ３０の入力と同様にＤＩＳＰパラメータとしてＯＬＤとＤＥＬＥＴＥが指定されている。出力は＆＆ＢＢ００１３であり、ＤＩＳＰパラメータ、ＳＰＡＣＥパラメータ、ＵＮＩＴパラメータはプロセスＭＥＢＰＣ３０と同様に指定されている。レコード長も併せて図２Ｂ記載の通り指定されている。
【００３９】
ＳＴＥＰ００４０において、プロセスＦＨＤＢＡＴ１のなかでプロセスＭＥＢＰＣ４０を実行する。入力は、結合子２から続く＆＆ＢＢ００１２とプロセスＭＥＢＰＣ００３５が出力する＆＆ＢＢ００１３である。プロセス間でデータを授受するために一時的に作成されるデータファイルであるので、ＭＥＢＰＣ３０の入力と同様にＤＩＳＰパラメータとしてＯＬＤとＤＥＬＥＴＥが指定されている。
【００４０】
プロセスＭＥＢＰＣ４０の１つ目の出力は、ＡＡ００１（＋１）である。このデータセットは最終アウトプットとして記憶装置に格納されるため、ＤＩＳＰパラメータとしてＣＡＴＬＧが指定されている。ＵＮＩＴパラメータ、ＳＰＡＣＥパラメータ、レコード長については先行する各プロセスと同様である。
【００４１】
プロセスＭＥＢＰＣ４０の２つ目の出力は、ＢＢ００３である。同様にＤＩＳＰパラメータとしてＣＡＴＬＧが指定されている。ＢＢ００３はテープデバイスに対して書き込まれるので、ＵＮＩＴパラメータとしてＶＴＳが指定されている。レコード長については先行する各プロセスと同様である。テープデバイスについてはＳＰＡＣＥパラメータは、不要である為省略されている。
【００４２】
各ＳＴＥＰが終了すると、ＪＣＬの最後に終了宣言が記述される。この終了宣言は固定的なものである。
【００４３】
＜実施の形態１：ルールファイル１３２について＞
ＪＣＬ自動生成プログラム１２０は、図２Ａ〜図２Ｂで説明したジョブフロー図にしたがって、図３Ａ〜図３Ｃで説明したＪＣＬを自動生成する。このときＪＣＬ自動生成プログラム１２０は、ルールファイル１３２が記述しているＪＣＬテンプレートを用いる。このＪＣＬテンプレートは、開発者がジョブフローファイル１３１内に記述すべきパラメータをできる限り少なくするとともに、テンプレートの汎用性を高める観点から、以下の点に配慮して定義されている。
【００４４】
（ルールファイル１３２の特徴その１）
同じタイプの入出力データセットを複数用いる場合は、その部分を定義するテンプレートは繰り返し再利用できるように定義されている。例えばあるプロセスに対して複数のデータセットが入力される場合、入力を定義する部分のテンプレートは１つのみであり、ＪＣＬ自動生成プログラム１２０はその単一のテンプレートを繰り返し使用する。出力データセットについても同様である。これにより、テンプレートの汎用性を高めるとともに、ルールファイル１３２の記述を簡易化することができる。詳細は後述の図４Ａにおけるサブブロックに関する説明箇所で改めて述べる。
【００４５】
（ルールファイル１３２の特徴その２）
ルールファイル１３２は、図３Ａにおいて説明した事前削除を指示するテンプレートを記述している。事前削除は固定的な処理であるため、テンプレートによって定義するのに適している。詳細は後述の図４Ａで改めて述べる。
【００４６】
（ルールファイル１３２の特徴その３）
ジョブフロー内におけるデータセット名、プロセス名、ＤＤ名などの名称は可変であるため、ジョブフロー図内に記載することが望ましいと思われる。したがってこれら名称については、テンプレート上において可変パラメータとして定義することとした。
【００４７】
（ルールファイル１３２の特徴その４）
プロセス間で授受するデータセットは、一時的に作成されるものであり、授受が完了した後は削除すべきものである。これに対し、当該ジョブフローとは別に記憶装置上に作成されたデータセットは、他のジョブフローやプロセスがアクセスする可能性があるため、共有アクセスすべきものである。一方、プロセスが出力するデータセットは常に新規作成するものであり、次のプロセスに引き渡すのかそれとも最終出力であるのかはジョブフローに依拠する。これらデータ特性は、ジョブフローが定義するデータセットとプロセスとの間の入出力関係に応じて定まるので、ジョブフロー図から導き出すことができる。したがって、これらデータアクセス特性を指定するＤＩＳＰパラメータは、ジョブフロー図から取得するパラメータとして定義することとした。
【００４８】
（ルールファイル１３２の特徴その５）
プロセスがハードディスク上にデータセットを書き出す場合、確保する記憶容量を指定する必要がある。確保すべき記憶容量は、レコード長、最大レコード件数、記憶装置の１トラック当たりのサイズ、によって計算することができる。前者２つはアプリケーションの仕様と密接に関わるため、ジョブフロー図に記載すべきパラメータとして定義することとした。１トラックサイズは比較的固定されているパラメータであるため、テンプレート内に定義することとした。
【００４９】
図４Ａは、ルールファイル１３２の開始部分を示す図である。［］はテンプレートのセクション名を示す。両端を％で囲んだ文字列は可変パラメータである。ＣＮＴパラメータは、当該セクションが記述しているテンプレートの行数を示す。
【００５０】
ルールファイル１３２の開始セクション（［ＳＴＡＲＴ］から始まる部分）は、図３Ａで説明したＪＣＬの開始宣言に相当するテンプレートが記載されている。ジョブ名（％ＪＯＢ％）、ジョブクラス名（％ＣＬＡＳＳ％）、ユーザ名（％ＵＳＥＲ％）はジョブフロー固有のパラメータであるため、可変パラメータとして定義することとした。これらパラメータは、ジョブフローファイル１３１内の適当な箇所に記載してもよいし、ＪＣＬ自動生成プログラム１２０またはジョブフローファイル１３１の内部スクリプトによって入力ダイアログを画面表示して入力させてもよい。
【００５１】
開始宣言の次セクション（［ＥＲＡＣＥ］から始まる部分）は、事前削除を指示するＪＣＬのテンプレートが記載されている。事前削除すべきデータセットの個数はジョブフローに依拠するため、当該部分のテンプレートは繰り返し可能であるように定義することが望ましい。そこで図４Ａにおいては、当該部分はサブブロック［ＥＲＡＣＥ＿ＤＤ］として切り出している。
【００５２】
ＪＣＬ自動生成プログラム１２０は、ジョブフローファイル１３１が記述しているジョブフロー図から、最終出力すべきデータセットのうち世代管理データセットを除いたものを特定し、そのデータセット名を図４Ａ末行の可変パラメータ％ＤＳＮ％と置き換える。事前削除すべきデータセットが複数存在する場合は、その個数分だけ［ＥＲＡＣＥ＿ＤＤ］サブブロックを繰り返し適用する。
【００５３】
ＪＣＬ自動生成プログラム１２０は、以上の処理により、図４Ａに示すテンプレートを図３Ａで説明したＪＣＬに置き換えることができる。
【００５４】
図４Ｂは、ルールファイル１３２のうち図３ＢのＳＴＥＰ００１０で説明したＪＣＬに相当するテンプレートを記載した箇所を示す図である。ＳＯＲＴプロセスとバッチプロセスはＪＣＬの記述の仕方が異なるため、それぞれのテンプレートは個別に定義することとした。バッチプロセスのテンプレートについては後述の図４Ｃで説明する。
【００５５】
％ＳＴＥＰ％パラメータは、ステップ番号によって置き換えられる可変パラメータである。ＪＣＬ自動生成プログラム１２０は、図２Ａ〜図２Ｂで説明した、プロセス／入力データセット／出力データセットの組み合わせからなるステップの個数をカウントすることにより、ステップ番号を自動採番する。
【００５６】
％ＰＲＯＣ％パラメータは、当該ＳＯＲＴプロセスのプロセス名によって置き換えられる可変パラメータである。ＪＣＬ自動生成プログラム１２０は、ジョブフロー図からＳＯＲＴプロセスのプロセス名を取得し、％ＰＲＯＣ％パラメータをこれに置き換える。
【００５７】
［ＳＯＲＴ＿ＩＤＤ］サブブロックは、当該ＳＯＲＴプロセスに対する入力を定義する部分のテンプレートである。ただしＳＹＳＩＮデータセットを除く。入力データセットの個数はジョブフローに依拠するため、繰り返し可能となるようにサブブロックとして定義されている。ＪＣＬ自動生成プログラム１２０は、ジョブフロー図から入力データセット名を取得し、［ＳＯＲＴ＿ＩＤＤ］サブブロック内の％ＤＳＮ％パラメータをこれに置き換える。ＤＩＳＰパラメータは、共有アクセスを指定するＳＨＲを固定的に指定しているが、他プロセスから引き渡されるデータをソートする場合は、後述する［ＢＡＴＣＨ＿ＩＤＤ］サブブロックと同様に可変パラメータとすることもできる。
【００５８】
［ＳＯＲＴ＿ＯＤＤ］サブブロックは、当該ＳＯＲＴプロセスからの出力を定義する部分のテンプレートである。出力データセットの個数はジョブフローに依拠するため、繰り返し可能となるようにサブブロックとして定義されている。ＪＣＬ自動生成プログラム１２０は、ジョブフロー図から出力データセット名を取得し、［ＳＯＲＴ＿ＯＤＤ］サブブロック内の％ＤＳＮ％パラメータをこれに置き換える。
【００５９】
出力データセットがジョブフローの最終出力である場合、ＪＣＬ自動生成プログラム１２０はＤＩＳＰパラメータとして図３Ｃで説明したＣＡＴＬＧを指定する。出力データセットが次のプロセスに引き渡される場合、ＪＣＬ自動生成プログラム１２０はＤＩＳＰパラメータとして図３Ｂで説明したＮＥＷ／ＰＡＳＳを指定する。出力データセットの出力先についてはジョブフロー図から取得することができる。
【００６０】
ＪＣＬ自動生成プログラム１２０は、出力データセットを書き込むデバイスタイプ（すなわちデバイスを表すジョブフロー部品のタイプ）をジョブフロー図から取得し、％ＵＮＩＴ％パラメータをそのデバイスタイプに置き換える。
【００６１】
ＪＣＬ自動生成プログラム１２０は、後述する１トラック当たりのデータサイズをルールファイル１３２から取得し、さらにジョブフロー図から当該出力データセットのレコード長と最大レコード件数を取得する。当該出力データセットを書き出すために確保すべきトラック数は、（総レコード件数）／（１トラックサイズ／レコード長）によって求めることができる。ＪＣＬ自動生成プログラム１２０は、％ＤＩＳＫＳＰＡＣＥ％パラメータを求めた値に置き換える。
【００６２】
ＪＣＬ自動生成プログラム１２０は、ジョブフロー図上で当該ＳＯＲＴプロセスに対して入力されているＳＹＳＩＮデータセット名を取得し、これをＤＤ名ＳＹＳＩＮ部分の％ＤＳＮ％パラメータと置き換える。
【００６３】
ＪＣＬ自動生成プログラム１２０は、以上の処理により、図４Ｂに示すテンプレートを図３ＢのＳＴＥＰ００１０で説明したＪＣＬに置き換えることができる。
【００６４】
図４Ｃは、ルールファイル１３２のうち図３ＢのＳＴＥＰ００２０〜図３ＣのＳＴＥＰ００４０で説明したＪＣＬに相当するテンプレートを記載した箇所を示す図である。これらステップは全てバッチプロセスであるため、同じテンプレートによってＪＣＬを自動生成することができる。
【００６５】
％ＳＴＥＰ％パラメータについては図４Ｂと同様である。％ＳＹＳＴＥＭ％パラメータと％ＰＬＡＮ％パラメータは、ジョブフローファイル１３１内の適当な箇所に記載してもよいし、ＪＣＬ自動生成プログラム１２０またはジョブフローファイル１３１の内部スクリプトによって入力ダイアログを画面表示して入力させてもよい。
【００６６】
［ＢＡＴＣＨ＿ＩＤＤ］サブブロックは、当該プロセスに対する入力を定義する部分のテンプレートである。［ＳＯＲＴ＿ＩＤＤ］と同様に、繰り返し可能なサブブロックとして定義している。ＪＣＬ自動生成プログラム１２０は、ジョブフロー図から入力データセット名とそのＤＤ名を取得し、［ＢＡＴＣＨ＿ＩＤＤ］サブブロック内の％ＤＳＮ％パラメータおよび％ＤＤＮ％パラメータをこれらに置き換える。入力データセットが他プロセスからの出力である場合、ＪＣＬ自動生成プログラム１２０はＤＩＳＰパラメータとして図３Ｂで説明したＯＬＤ／ＤＥＬＥＴＥを指定する。入力データセットが記憶装置上の既存データである場合、ＪＣＬ自動生成プログラム１２０はＤＩＳＰパラメータとしてＳＨＲを指定する。
【００６７】
［ＢＡＴＣＨ＿ＯＤＤ］サブブロックは、当該プロセスからの出力を定義する部分のテンプレートである。［ＳＯＲＴ＿ＯＤＤ］と同様に、繰り返し可能なサブブロックとして定義している。ＪＣＬ自動生成プログラム１２０は、ジョブフロー図から出力データセット名とそのＤＤ名を取得し、［ＢＡＴＣＨ＿ＯＤＤ］サブブロック内の％ＤＳＮ％パラメータおよび％ＤＤＮ％パラメータをこれらに置き換える。％ＤＩＳＰ％、％ＵＮＩＴ％、％ＤＩＳＫＳＰＡＣＥ％については［ＳＯＲＴ＿ＯＤＤ］サブブロックと同様である。％ＲＥＣＬＥＮＧＴＨ％パラメータは、ジョブフロー図上で指定されているレコード長に置き換えられる。
【００６８】
ＪＣＬ自動生成プログラム１２０は、以上の処理により、図４Ｃに示すテンプレートを図３ＢのＳＴＥＰ００２０〜図３ＣのＳＴＥＰ００４０で説明したＪＣＬに置き換えることができる。
【００６９】
図４Ｄは、ルールファイル１３２のうち図３Ｃの終了宣言部分に相当するテンプレートを記載した箇所を示す図である。［ＥＮＤ］セクションは終了宣言のテンプレートを記載している。終了宣言は固定的であるため、可変パラメータはない。
【００７０】
［ＤＩＳＫＳＰＡＣＥ］セクションは、確保すべきハードディスクの記憶容量を計算する際の基礎データを記載している。ＢＡＳＥ＿ＳＩＺＥパラメータは、１トラック当たりのデータサイズを指定する。ＪＣＬ自動生成プログラム１２０はこの数値を用いて、先に説明した％ＤＩＳＫＳＰＡＣＥ％パラメータを計算する。本セクションはテンプレートそのものではないため、ＪＣＬ内には記載されない。
【００７１】
ＪＣＬ自動生成プログラム１２０は、ジョブフローファイル１３１が記述しているジョブフロー図を入力として受け取り、同図が記述しているジョブフローおよび各名称などのパラメータを、ルールファイル１３２が記述しているテンプレートに対して適用する。これにより、図３Ａ〜図３Ｃで説明したようなジョブ制御ファイル１３３を自動生成することができる。
【００７２】
＜実施の形態１：まとめ＞
本実施形態１に係るＪＣＬ自動生成プログラム１２０は、ジョブフロー図に基づき生成すべきＪＣＬのテンプレートをルールファイル１３２から読み取り、これに対してジョブフローやデータセット名などを反映する。これにより、汎用機、そのＯＳなどの個別具体的な仕様に応じて、自動生成するＪＣＬを柔軟にカスタマイズすることができる。
【００７３】
本実施形態１に係るＪＣＬ自動生成プログラム１２０は、ジョブフローの最後において出力されるデータセットのうち世代管理されないものを特定し、そのデータセットを事前削除するＪＣＬ文を自動生成する。これにより、事前削除に係るＪＣＬ文をマニュアル作成する手間を削減することができる。また、事前削除すべきデータセットが複数ある場合であっても、単一の［ＥＲＡＣＥ＿ＤＤ］サブブロックによってそれら全てについて自動対処することができる。
【００７４】
本実施形態１に係るＪＣＬ自動生成プログラム１２０は、プロセスに対して入力されるデータセットが他プロセスの出力であるのか、それとも当該ジョブフローとは別に作成されたものであるのかに応じて、入力定義部分のＤＩＳＰパラメータを自動セットする。これにより、プロセスに対する入力を定義するＪＣＬ文を作成する手間を削減することができる。
【００７５】
本実施形態１に係るＪＣＬ自動生成プログラム１２０は、プロセスが出力するデータセットが他プロセスに対して引き渡されるのか、それとも当該ジョブフローの最終出力となるのかに応じて、出力定義部分のＤＩＳＰパラメータを自動セットする。これにより、プロセスからの出力を定義するＪＣＬ文を作成する手間を削減することができる。
【００７６】
本実施形態１に係るＪＣＬ自動生成プログラム１２０は、プロセスが出力するデータセットを書き出すために確保すべきハードディスクの記憶容量を、ルールファイル１３２が定義している１トラックサイズおよびジョブフロー図上の各パラメータに基づき自動計算する。これにより、プロセスからの出力を定義するＪＣＬ文を作成する手間をさらに削減することができる。
【００７７】
＜実施の形態２＞
実施形態１で説明したジョブフローファイル１３１は、ＪＣＬ自動生成プログラム１２０がジョブフローと各ジョブフロー部品および各名称などのパラメータを読み取ることができるのであれば、任意の形式で作成することができる。例えば市場で一般的に入手できる表計算ソフト、文書作成ソフト、プレゼンテーションソフトなどの図形編集機能によって作成することができる。ジョブフローファイル１３１のデータ形式が変更された場合、ＪＣＬ自動生成プログラム１２０がジョブフローファイル１３１を読み取る処理のみ改修すれば、変更前と同様の機能を利用することができる。
【符号の説明】
【００７８】
１００：コンピュータ、１１０：ＣＰＵ、１２０：ＪＣＬ自動生成プログラム、１３０：記憶部、１３１：ジョブフローファイル、１３２：ルールファイル、１３３：ジョブ制御ファイル。
【図１】
2016081126.tif 000003
【図２Ａ】
2016081126.tif 000004
【図２Ｂ】
2016081126.tif 000005
【図３Ａ】
2016081126.tif 000006
【図３Ｂ】
2016081126.tif 000007
【図３Ｃ】
2016081126.tif 000008
【図４Ａ】
2016081126.tif 000009
【図４Ｂ】
2016081126.tif 000010
【図４Ｃ】
2016081126.tif 000011
【図４Ｄ】
2016081126.tif 000012