(57)【特許請求の範囲】
【請求項１】
入力ファイルまたは出力ファイルの少なくともいずれか一方を使用した処理を行うプログラムと、
複数の前記プログラムを順次実行するジョブと、
前記プログラムと前記ジョブとを登録するサーバ装置と、
前記サーバ装置に前記プログラムやジョブが変更されて登録されたことを検出した場合に、変更履歴を記憶する変更履歴記憶手段と、
前記ジョブに障害が発生した際に、障害内容を記憶する障害履歴記憶手段と、
前記変更履歴記憶手段に基づいて、前記プログラムが変更されたと判定した場合は、変更されて登録された前記プログラムのソースコードに基づいて、前記プログラムが使用する入力ファイルまたは出力ファイルの少なくともいずれか一方が前記プログラムごとに図示され、変更したプログラムを含むジョブが時系列で図示された工程表を作成する工程表作成手段と、
前記工程表作成手段によって作成された工程表において選択されたプログラムが実行される直前の状態に、入力ファイルと出力ファイルとを戻して、当該プログラムを再実行可能な状態にして、選択されたプログラムの再実行指示の入力を待つジョブ再実行手段と、
を備えることを特徴とするジョブ再実行支援システム。
【請求項２】
前記工程表作成手段は、前記プログラムが異常終了した場合に、前記工程表に異常終了したプログラムを図示する、
ことを特徴とする請求項１に記載のジョブ再実行支援システム。
【請求項３】
前記変更履歴記憶手段に基づいて、前記プログラムが登録、変更されたと判定した場合は、前記プログラムのソースコードに基づいて、当該プログラムと、入力ファイルまたは出力ファイルの少なくともいずれか一方との関連を図示する関連図を作成する関連図作成手段と、
を備えることを特徴とする請求項１または２に記載のジョブ再実行支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力ファイルまたは出力ファイルの少なくともいずれか一方を使用した処理を行うプログラムを順次実行するジョブの再実行を支援するジョブ再実行支援システムに関する。
【背景技術】
【０００２】
ホストを含むメインフレームで起動するバッチ処理や常駐プロセスは、ジョブ制御言語（ＪＣＬ）で記述されており、複数のプログラムを順次実行するジョブで構成されている。ＪＣＬは、構文が難解であるため、機能や処理を把握することに手間や時間を費やしている。また、プログラムが入力ファイルまたは出力ファイルの少なくともいずれか一方を使用した処理するものであり、使用する入力ファイルまたは出力ファイルの数が多くなると把握することにさらに手間や時間を費やしてしまう。
【０００３】
そこで、入力ファイルまたは出力ファイルの少なくともいずれか一方を使用した処理を行うプログラムにおいて、入力ファイルや出力ファイルを容易に把握するために、入力ファイル、出力ファイルとプログラムとの関連を図示する関連図を作成する。また、ジョブの入力ファイルと、出力ファイルとをプログラムごとに図示する電算機処理工程明細表（工程表）を作成しておくことで、ジョブにおける入力ファイルや出力ファイルの把握が容易になる。
【０００４】
ところで、プログラムの不具合や入力ファイルの不具合によって、ジョブが異常終了した場合は、異常終了した箇所より前は、入力ファイルおよび出力ファイルが更新された状態であり、異常終了した箇所以降は入力ファイルおよび出力ファイルが未更新の状態となっている。
【０００５】
そのため、ジョブの異常終了の原因を確認して、プログラムを改修したり入力ファイルを整備したりして不具合を解消後、ジョブを再実行する際には、入力ファイルおよび出力ファイルを当該ジョブの実行前の状態に戻す必要がある。
【０００６】
ところが、プログラムの改修によって入力ファイルまたは出力ファイルが増減した場合に、関連図や工程表を更新し忘れてしまうおそれがある。また、関連図や工程表が正しく更新されている場合であっても、入力ファイルまたは出力ファイルの数が多い場合や、ジョブにおいて複数のプログラムによって入力ファイルまたは出力ファイルが更新されるような場合には、入力ファイルおよび出力ファイルを当該ジョブの実行前の状態に戻すことに手間や時間を費やしてしまう。
【０００７】
ところで、バッチ系のシステム設計図を自動生成する技術として、ジョブフロー図等のシステム設計図を自動的に作成すると共に、一部の設計レベルのシステム設計図を再作成したとき、他の設計レベルのシステム設計図も自動的に修正する技術が知られている（例えば、特許文献１参照。）。
【０００８】
また、再処理の作業効率を向上するための技術としては、再処理の対象となるトランザクションを記憶装置上に連続して管理し、再処理を行う場合でも処理効率を向上させる技術が知られている（例えば、特許文献２参照。）。この技術は、トランザクションレコードが不成功であると再処理トランザクションレコードを作成し未処理のトランザクションレコードとして記憶装置部へ追加するものである。また、１ジョブに複数のジョブステップを有し、各ジョブステップに業務プログラムが実行されるジョブ処理を効率的に再起動（リラン）する技術が知られている（例えば、特許文献３参照。）。さらに、異常終了したジョブの再実行に必要なリカバリ処理と、リランポイントからの再実行ジョブとを、リランＴＢＬに組み込む。ロールバック処理が有る場合は、この処理をリランＴＢＬの先頭に組み込む技術が知られている（例えば、特許文献４参照。）。さらにまた、処理異常終了時には、データベースのロールバック処理による回復処理と共に、シーケンシャルファイルに対しても、バッチ処理の処理制御ツールのリカバリ処理機能により、バックアップファイルからのデータ自動回復を行う技術が知られている（例えば、特許文献５参照。）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−２５７３８４号公報
【特許文献２】特開平１１−２６５３０７号公報
【特許文献３】特開２００６−２９３５８２号公報
【特許文献４】特開２００８−２１７３６７号公報
【特許文献５】特開２００８−２３４１４２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところで、ジョブの異常終了の原因となったプログラムに関連して、他のプログラムを修正した場合には、異常終了したプログラムよりも前の状態から再実行する必要がある場合がある。この場合は、工程表によってプログラムと入力ファイルおよび出力ファイルを確認することができるが、入力ファイルおよび出力ファイルを所望のプログラムを再実行可能な状態に戻すことに手間や時間を費やしていた。
【００１１】
また、上記の特許文献２〜５ではジョブを効率的に再実行できるものの、異常終了したプログラムよりも前のプログラムからの再実行や、任意のプログラムから再実行することに手間や時間を費やしていた。
【００１２】
したがって、本願の発明者は、工程表で再実行したいプログラム（再実行プログラム）を選択することによって、再実行プログラムの実行前の状態、すなわち、再実行プログラムの直前のプログラムが終了した状態に入力ファイルおよび出力ファイルを戻すことが出来れば、ジョブの再実行に要する手間と時間とを削減できると考えた。
【００１３】
そこで、この発明は、前記の課題を解決し、入力ファイルまたは出力ファイルの少なくともいずれか一方を使用した処理を行うプログラムを順次実行するジョブの異常終了時に、工程表で選択したプログラムの実行前の状態に入力ファイルおよび出力ファイルを戻すことが可能ジョブ再実行支援システムを提供することを目的としている。
【課題を解決するための手段】
【００１４】
前記の課題を解決するために、請求項１の発明は、入力ファイルまたは出力ファイルの少なくともいずれか一方を使用した処理を行うプログラムと、複数の前記プログラムを順次実行するジョブと、前記プログラムと前記ジョブとを登録するサーバ装置と、前記サーバ装置に前記プログラムやジョブが変更されて登録されたことを検出した場合に、変更履歴を記憶する変更履歴記憶手段と、前記ジョブに障害が発生した際に、障害内容を記憶する障害履歴記憶手段と、前記変更履歴記憶手段に基づいて、前記プログラムが変更されたと判定した場合は、変更されて登録された前記プログラムのソースコードに基づいて、前記プログラムが使用する入力ファイルまたは出力ファイルの少なくともいずれか一方が前記プログラムごとに図示され、変更したプログラムを含むジョブが時系列で図示された工程表を作成する工程表作成手段と、前記工程表作成手段によって作成された工程表において選択されたプログラムが実行される直前の状態に、入力ファイルと出力ファイルとを戻して、当該プログラムを再実行可能な状態にして、選択されたプログラムの再実行指示の入力を待つジョブ再実行手段と、を備えることを特徴とするジョブ再実行支援システムである。
【００１５】
この発明によれば、ジョブ再実行手段によって、工程表において選択されたプログラムが実行される直前の状態に入力ファイルと出力ファイルとが戻されて、当該プログラムが再実行可能な状態にして、選択されたプログラムの再実行指示の入力を待つ。
【００１６】
請求項２に記載の発明は、請求項１に記載のジョブ再実行支援システムにおいて、前記工程表作成手段は、前記プログラムが異常終了した場合に、前記工程表に異常終了したプログラムを図示する、ことを特徴とする。
【００１７】
請求項３に記載の発明は、請求項１または２に記載のジョブ再実行支援システムにおいて、前記変更履歴記憶手段に基づいて、前記プログラムが登録、変更されたと判定した場合は、前記プログラムのソースコードに基づいて、当該プログラムと、入力ファイルまたは出力ファイルの少なくともいずれか一方との関連を図示する関連図を作成する関連図作成手段と、を備えることを特徴とする。
【発明の効果】
【００１８】
請求項１に記載の発明によれば、変更履歴記憶手段に基づいて、前記プログラムが変更されたと判定した場合は、工程表作成手段によって、変更したプログラムを含むジョブが時系列で図示された工程表が作成されるので、ジョブに含まれるプログラムの入力ファイルまたは出力ファイルを正確に把握することが出来る。このため、開発担当者は、プログラムの不具合を発見したり、ジョブが異常終了したりした場合には、工程表を参照することによってプログラムの修正箇所やジョブの再実行箇所を判断することができる。また、工程表において再実行したいプログラムを選択するだけで、ジョブ再実行手段によって当該プログラムが再実行可能な状態とされるので、効率的な再実行が可能となる。
【００１９】
また、ジョブの再実行が容易になるので、プログラムの修正とそれに伴うジョブの再実行を繰り返すプログラム開発やテストに要する工数を削減可能である。このように、ジョブの再実行が容易になるので、プログラムの修正とそれに伴うジョブの再実行を繰り返すプログラム開発やテストに要する工数を削減可能である。
【００２０】
請求項２に記載の発明によれば、工程表作成手段は、プログラムが異常終了した場合に、工程表に異常終了したプログラムを表示するので、異常終了したプログラムを一目で確認することができる。すなわち、工程表において視覚的に異常終了箇所が示されるので、ジョブに含まれるプログラムと入力ファイルまたは出力ファイルの関連を把握し易くなり、容易に修正箇所を判断可能となる。これにより、プログラムの修正箇所の間違いや漏れを防止することが可能になる。
【００２１】
請求項３に記載の発明によれば、プログラムが登録、変更されたと判定した場合は、関連図作成手段によって、プログラムと、入力ファイルまたは出力ファイルの少なくともいずれか一方との関連を図示する関連図が作成されるので、プログラムごとに入力ファイルまたは出力ファイルを確認することが容易になる。これにより、プログラムの修正箇所の間違いや漏れを防止することが可能になる。
【図面の簡単な説明】
【００２２】
【図１】この発明の実施の形態に係るジョブ再実行支援システムの概略構成図である。
【図２】図１のジョブ再実行支援システムの雛型データベースのデータ構成図である。
【図３】図２のジョブ再実行支援システムの雛型データベースのテンプレートの一例であり、（ａ）はプログラムのテンプレートであり、（ｂ）は入力ファイルおよび出力ファイルのテンプレートである。
【図４】図１のジョブ再実行支援システムの変更履歴データベースのデータ構成図である。
【図５】図１のジョブ再実行支援システムの障害履歴データベースのデータ構成図である。
【図６】図１のジョブ再実行支援システムによる関連図作成処理を示すフローチャートである。
【図７】図１のジョブ再実行支援システムによる工程表作成処理を示すフローチャートである。
【図８】図１のジョブ再実行支援システムによるジョブ再実行処理を示すフローチャートである。
【図９】図１のジョブ再実行支援システムによるジョブ再実行検証処理を示すフローチャートである。
【図１０】図１のジョブ再実行支援システムを利用したプログラム修正における開発担当者の動作と開発サーバにおける処理を示すフローチャートである。
【図１１】図１のジョブ再実行支援システムのジョブのコードの一部である。
【図１２】図１のジョブ再実行支援システムの関連図作成処理によって作成されたプログラム関連図の一部である。
【図１３】図１のジョブ再実行支援システムの工程表作成処理によって作成された電算機処理工程明細表の一部である。
【発明を実施するための形態】
【００２３】
以下、この発明を図示の実施の形態に基づいて説明する。
【００２４】
図１ないし図１３は、この発明の実施の形態を示している。ジョブ再実行支援システム１は、入力ファイルまたは出力ファイルの少なくともいずれか一方を使用した処理を行うプログラムを順次実行するジョブの異常終了時の再実行を支援するシステムである。この実施の形態においては、このジョブ再実行支援システム１は、開発サーバ（図示略）で起動するようになっている。また、ジョブおよびプログラムは、例えば、ＪＣＬ（Ｊｏｂ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ、ジョブ制御言語）でコーディングされているものとする。ここで、ＪＣＬは、１行が１ステートメントとなっており、１ステートメントが複数行にわたる場合は、直前の行末を「，」（カンマ）として次の行に続けて記載するように定義されている。
【００２５】
この実施の形態においては、具体的には、図１１に示すようなジョブＪＯＢ０１について説明する。ジョブＪＯＢ０１は、複数のプログラムＰＲＧによって構成されており、例えば、プログラムＰＲＧ０１は、先行プログラムがプログラムＰＲＧ９９であり、後続プログラムがプログラムＰＲＧ０２である。また、プログラムＰＲＧ０１は、複数のファイルＤＡＴＡＳＥＴ１〜ＤＡＴＡＳＥＴＮを入力ファイルとし、取得したデータをソートして、出力ファイル（ワークファイル）ＤＡＴＡＳＥＴＷｉとして出力するものである。このようなジョブまたはプログラムと、入力ファイルまたは出力ファイルとの関連を把握するものとして、関連図２０や工程表３０がある。
【００２６】
関連図２０は、図１２に示すように、プログラムのコードに基づいて、当該プログラムの入力ファイルと、出力ファイルと、当該プログラムとの関連が図示されたものであり、主として、ジョブＩＤ２１と、入力ファイル２２と、プログラム２３と、出力ファイル２４と、記事２５と、後続プログラム２６とを図示するものである。具体的には例えば、図１１に示すようなジョブＪＯＢ０１に含まれるプログラムＰＲＧ０１（ＪＯＢＳＴＥＰ０１）について説明する。関連図２０には、図１２に示すように、ジョブＩＤ２１としてジョブを識別するＩＤが「ＪＯＢ０１」と表示され、入力ファイル２２としてデータセットＤＡＴＡＳＥＴ１〜ＤＡＴＡＳＥＴＮが図示され、プログラム２３としてソート処理を行うプログラムＰＲＧ０１（ジョブステップＪＯＢＳＴＥＰ０１）が図示され、出力ファイル２４としてデータセットＤＡＴＡＳＥＴＷｉが図示されている。また、記事２５としてソートキーが表示され、後続プログラム２６としてＪＯＢＳＴＥＰ０２が図示されている。
【００２７】
工程表３０は、図１３に示すように、ジョブのコードに基づいて、各プログラムにおけるプログラムで参照、更新するデバイスを、カード・テープと保存ファイル、ワークファイルに分けて図示したものであり、主として、ジョブＮｏ３１と、プログラム３２、ジョブステップ３３と、カード・テープ３４と、保存ファイル３５と、ワークファイル３６とを図示するものである。具体的には例えば、図１１に示すようなジョブＪＯＢ０１について説明する。ジョブＮｏ３１としてジョブを識別するＩＤが「ＪＯＢ０１」と表示され、プログラム３２、ジョブステップ３３としては、例えば、プログラムとジョブステップを識別するＩＤが「ＰＲＧ９９（ジョブステップＪＯＢＳＴＥＰ９９）」と表示されている。保存ファイル３５としてデータセットＤＡＴＡＳＥＴ９９が図示されている。
【００２８】
ジョブ再実行支援システム１は、主として、雛型記憶手段１１と、変更履歴記憶手段１２と、障害履歴記憶手段１３と、変更履歴管理タスク１４と、障害履歴管理タスク１５と、関連図作成手段としての関連図作成タスク１６と、工程表作成手段としての工程表作成タスク１７と、ジョブ再実行手段としてのジョブ再実行タスク１８と、ジョブ再実行検証タスク１９と、記憶部１０ｂと、これらを制御などする制御部１０ａとを備えている。
【００２９】
雛型記憶手段１１は、プログラムやジョブのコードから後述する関連図２０と工程表３０を図示するためのものであり、ステートメント種別ごとに関連図２０と工程表３０を図示するための雛型データベース１１ａを格納するものである。ここで、ステートメント種別とは、「ＥＸＥＣ」、「ＤＤ」、「ＲＴＮ」などを含むステートメント文の種類のことである。雛型情報データベース１１ａは、図２に示すように、ステートメント種別１１１ごとに、名称１１２と、取得情報１１３と、テンプレート１１４と、その他１１５とを記憶している。ステートメント種別１１１には、ステートメント種別、すなわち、「ＥＸＥＣ」、「ＤＤ」、「ＲＴＮ」などを含むステートメント文の種別が記憶されている。名称１１２には、ステートメント種別１１１の名称が記憶されており、例えば、ステートメント種別１１１ごとに「プログラム実行」、「データ定義」、「戻り値」などと記憶されている。取得情報１１３には、ステートメントから取得して、関連図２０や工程表３０に図示する情報が記憶されている。例えば、ステートメント種別１１１が「ＥＸＥＣ」の場合は、ジョブステップ名、プログラム名を取得するように記憶している。また、ステートメント種別１１１が「ＤＤ」の場合は、データ情報としてデータセット名、装置情報などのＤＤステートメントに記述された情報を取得するように記憶している。さらに、ステートメント種別１１１が「ＲＴＮ」の場合は、戻り値情報としてＲＴＮステートメントに記述された情報、例えば、ＫＥＹ情報を取得するように記憶している。テンプレート１１４には、各ステートメント種別１１１を関連図２０や工程表３０に図示する際のテンプレート（雛型）が記憶されている。これらの図形には、文字列として表示する情報が合わせて記憶されている。例えば、ステートメント種別１１１が「ＥＸＥＣ」の場合は、図３（ａ）に示すようなプログラムを表す図形と、プログラムＩＤ（ジョブステップＩＤ）、処理内容を図示することが記憶されている。また、ステートメント種別１１１が「ＤＤ」の場合は、図３（ｂ）に示すようなファイルを表す図形と、ディスク区分などを図示することが記憶されている。
【００３０】
変更履歴記憶手段１２は、プログラムの変更履歴データベース１２ａを格納するものである。変更履歴データベース１２ａは、図４に示すように、ジョブＩＤ１２１と、プログラムＩＤ１２２と、バージョン１２３ごとに、変更日時１２４と、変更内容１２５と、その他１２６とを記憶している。ジョブＩＤ１２１は、ジョブＩＤが記憶され、プログラムＩＤ１２２には、プログラムＩＤが記憶され、バージョン１２３には、当該プログラムのバージョンが記憶されている。変更日時１２４には、プログラムを変更した日時が記憶され、変更内容１２５には、プログラムの変更内容、つまり、修正箇所、修正内容、修正者などを含む変更情報が記憶されている。変更履歴データベース１２ａは、後述する変更履歴管理タスク１４によって更新されるようになっている。
【００３１】
障害履歴記憶手段１３は、ジョブに発生した障害の障害履歴データベース１３ａを格納するものである。障害履歴データベース１３ａは、図５に示すように、障害発生日時１３１と、ジョブＩＤ１３２と、プログラムＩＤ１３３と、障害内容１３４と、障害対応内容１３５と、その他１３６とを記憶している。障害発生日時１３１には、当該ジョブに障害が発生した日時が記憶され、ジョブＩＤ１３２は、ジョブＩＤが記憶され、プログラムＩＤ１３３には、プログラムＩＤが記憶されている。障害内容１３４には、発生した障害の内容、障害の発生事象や、障害原因、当該ジョブの起動日時が記憶され、障害対応内容１３５には、当該障害を解消するために修正したジョブ、プログラム、修正箇所、変更履歴データベース１２ａへのポインタなどが記憶されている。障害履歴データベース１３ａは、後述する障害履歴管理タスク１５によって更新されるようになっている。
【００３２】
変更履歴管理タスク１４は、プログラムの変更時に、変更履歴データベース１２ａのジョブＩＤ１２１と、プログラムＩＤ１２２と、バージョン１２３と、変更日時１２４と、変更内容１２５とを更新する機能を有するプログラムである。変更履歴管理タスク１４は、常時、ジョブのソースコードであるＪＣＬが所定の保存場所、例えば、開発サーバに登録されることを監視しており、ＪＣＬの登録を検出すると変更履歴データベース１２ａへの更新処理を起動するようになっている。このとき、コード内に記述された修正箇所を示すコメントや、ひとつ前のバージョンのプログラムとの差分から変更内容を生成して変更履歴データベース１２ａに記憶する。
【００３３】
障害履歴管理タスク１５は、障害が発生した際に、障害履歴データベース１３ａの障害発生日時１３１と、ジョブＩＤ１３２と、プログラムＩＤ１３３と、障害内容１３４と、障害対応内容１３５とを更新する機能を有するプログラムである。障害履歴管理タスク１５は、常時、プログラムやジョブの戻り値や、ログファイル、ファイルの更新状況などを監視しており、プログラムやジョブが異常終了したことを検出すると、戻り値や、ログファイル、ファイルの更新状況などから障害内容を生成して障害履歴データベース１３ａに登録する処理を起動するようになっている。
【００３４】
関連図作成タスク１６は、プログラムのコードに基づいて、当該プログラムと、入力ファイルと、出力ファイルとの関連を図示し、図１２に示すような関連図２０を作成する機能を有するプログラムである。関連図作成タスク１６は、常時、ＪＣＬが所定の保存場所、例えば、開発サーバに登録されることを監視しており、ＪＣＬの登録を検出すると、当該ＪＣＬに含まれるプログラムの中で、変更されたプログラムの関連図を作成する処理を起動するように制御部１０ａによって制御されている。ここで、変更されたプログラムであるか否かは、変更履歴データベース１２ａに該当する更新データが存在するか否かによって判定する。該当する更新データの有無は、例えば、更新日時が現在時刻から所定時間以内である場合に、該当する更新データが存在すると判定する。
【００３５】
関連図作成タスク１６は、変更されたプログラムのコードを取得して、ステートメントごとに、雛型データベース１１ａに基づいて該当する雛型を図示する機能を有し、図６に示すフローチャートに基づいた処理を行う。まず、プログラムのコードを取得し（ステップＳ１１）、１ステートメントを取得し（ステップＳ１２）、当該ステートメントが入力ファイルであるか否か、すなわち、当該ステートメントがＤＤ文であるか否かを判定する（ステップＳ１３）。入力ファイルの場合（「ＹＥＳ」の場合）は、入力ファイルまたは出力ファイルを図示する（ステップＳ１４）。すなわち、雛型データベース１１ａから、ステートメント種別１１１が「ＤＤ」のデータを取得して、取得情報１１３がデータセット名、ユニット区分などであることや、テンプレート１１４などを取得する。そして、取得したテンプレート１１４に基づいて、図３（ｂ）に示すようなファイルを表す図形に、当該ステートメントに基づいてディスク区分などを図示する。入力ファイルではない場合（「ＮＯ」の場合）は、ステートメントの情報を図示する。すなわち、雛型データベース１１ａから、ステートメント種別１１１が「ＤＤ」以外のデータ、例えば「ＥＸＥＣ」のデータを取得して、取得情報１１３がジョブステップ名、プログラム名であることや、テンプレート１１４などを取得する。そして、取得したテンプレート１１４に基づいて、図３（ａ）に示すようなプログラムを表す図形に、プログラムＩＤ（ジョブステップＩＤ）、処理内容を図示する。
【００３６】
そして、次のステートメントの有無を判定する（ステップＳ１６）。次のステートメントが存在する場合（「ＹＥＳ」の場合）は、ステップＳ１２に戻って、すべてのステートメントについてステップＳ１２〜ステップＳ１６の処理を繰り返す。
【００３７】
次のステートメントが存在しない場合（「ＮＯ」の場合）は、このタスクの処理を終了する。
【００３８】
ここでは、例えば、図１１に示すようなプログラム「ＰＲＧ０１」について説明する。まず、プログラム「ＰＲＧ０１」は、先頭に「//＊＊ＵＰＤ  ＹＹＹＹＭＭＤＤ」とのコメントが記載されており、変更されたプログラムであることが示されている。また、この変更に該当する変更履歴が変更履歴データベース１２ａに記憶されている。１行目のステートメントから、図１２のジョブＩＤ２１に「ＪＯＢ０１」と図示する。そして、ＥＸＥＣ文のステートメントから、プログラム２３に、図３（ａ）に示すようなプログラムを表す図形に「ＰＲＧ０１（ＪＯＢＳＴＥＰ０１）」と表示したものを図示する。そして、複数のＤＤ文のステートメント、すなわち、ＤＤ＝ＳＯＲＴＩＮからＤＤ＝ＳＯＲＴＯＵＴの行から、入力ファイル２２に、図３（ｂ）に示すようなファイルを表す図形にそれぞれ「ＤＡＴＡＳＥＴ１」〜「ＤＡＴＡＳＥＴＮ」と表示したものを図示する。そして、ＤＤ文のステートメント、すなわち、ＤＤ＝ＳＯＲＴＷｉの行から、出力ファイル２４に、図３（ｂ）に示すようなファイルを表す図形に「ＤＡＴＡＳＥＴＷｉ」と表示したものを図示する。そして、ＲＴＮ文のステートメントから、ＫＥＹ情報２５に「’ｃ１，ｃ２，・・・，’，’ｄ２，ｄ２，・・・，’」と表示する。そして、次のＥＸＥＣ文のステートメントから、次のジョブステップ２６に「ＪＯＢＳＴＥＰ０２」と表示する。そして、入力ファイル２２からプログラム２３へ、プログラム２３から出力ファイル２４へ、出力ファイル２４から次のジョブステップ２６へ矢印を図示する。
【００３９】
このようにして、変更したプログラムのコードに基づいて、当該プログラムと、入力ファイルと、出力ファイルとの関連図２０を作成する。
【００４０】
工程表作成タスク１７は、プログラムのコードに基づいて、ジョブに含まれる複数のプログラムの入力ファイルと、出力ファイルとをプログラムごとに図示する、図１３に示すような工程表３０を作成する機能を有するプログラムである。
【００４１】
工程表作成タスク１７は、関連図作成タスク１６が終了すると続いて起動されるように制御部１０ａによって制御されている。すなわち、変更されて登録されたＪＣＬについて処理が行われるようになっている。
【００４２】
工程表作成タスク１７は、図７に示すフローチャートに基づいた処理を行う。まず、ジョブのコードを取得し（ステップＳ２１）、ジョブを工程表に図示する（ステップＳ２２）。すなわち、ジョブのコードから取得したジョブＩＤを、ジョブＮｏ３１に表示する。そして、プログラムを取得し（ステップＳ２３）、プログラムを工程表に図示する（ステップＳ２４）。すなわち、プログラムのコードから取得したプログラムＩＤ、ジョブステップＩＤを、プログラムＮｏ３２、ジョブステップＮｏ３３に表示する。そして、当該プログラムについてデバイスを図示する（ステップＳ２５）。具体的には、プログラムのコードを取得して１ステートメントずつ取得し、当該ステートメントがデータ定義文（ＤＤ文）であるか否かを判定する。データ定義文の場合（「ＹＥＳ」の場合）は、デバイスを図示する。このとき、デバイスがカード・テープの場合は、カード・テープ３４に所定のテンプレートで図示し、デバイスが保存ファイルの場合は、保存ファイル３５に所定のテンプレートで図示し、デバイスがワークファイルの場合は、ワークファイル３６に所定のテンプレートで図示する。データ定義文ではない場合（「ＮＯ」の場合）は、ステートメントの情報、例えば、ＫＥＹ情報などを記事３７に図示する。そして、次のステートメントの有無を判定する。次のステートメントが存在する場合（「ＹＥＳ」の場合）は、すべてのステートメントについて同様の処理を繰り返す。次のステートメントが存在しない場合（「ＮＯ」の場合）は、ステップＳ２６に進む。
【００４３】
そして、次のプログラムの有無を判定する（ステップＳ２６）。次のプログラムが存在する場合（「ＹＥＳ」の場合）は、ステップＳ２３に戻ってすべてのプログラムについてステップＳ２３〜ステップＳ２６の処理を繰り返し、次のプログラムが存在しない場合（「ＮＯ」の場合）は、このタスクの処理を終了する。
【００４４】
ここでは、例えば、図１１に示すようなジョブ「ＪＯＢ０１」について説明する。このジョブは、複数のＥＸＥＣ文が含まれており、複数のプログラムで構成されている。まず、１行目のステートメントから、図１３のジョブＮｏ３１に「ＪＯＢ０１」と記載する。そして、１つめのＥＸＥＣ文のステートメントから、プログラム３２に「ＰＲＧ９９」と記載し、ジョブステップ３３に「ＪＯＢＳＴＥＰ９９」と記載する。そして、ＤＤ文のステートメントから、保存ファイル３５に、保存ファイルを表す図形に「ＤＡＴＡＳＥＴ９９」と表示したものを図示する。
【００４５】
つぎに、２つめのＥＸＥＣ文のステートメントから、プログラム３２に「ＰＲＧ０１」と記載し、ジョブステップ３３に「ＪＯＢＳＴＥＰ０１」と記載する。そして、複数のＤＤ文のステートメント、すなわち、ＤＤ＝ＳＯＲＴＩＮからＤＤ＝ＳＯＲＴＯＵＴの行から、保存ファイルを表す図形に「ＤＡＴＡＳＥＴ１」〜「ＤＡＴＡＳＥＴＮ」と表示したものを図示する。そして、ＲＴＮ文のステートメントから、記事３７にＫＥＹ情報として「’ｃ１，ｃ２，・・・，’，’ｄ２，ｄ２，・・・，’」と図示する。
【００４６】
つぎに、次のＥＸＥＣ文のステートメントから、プログラム３２に「ＰＲＧ０２」と記載し、ジョブステップ３３に「ＪＯＢＳＴＥＰ０２」と記載する。
【００４７】
このような処理をプログラムの各ステートメントについて繰り返して、変更したプログラムを含むジョブの工程表３０が作成される。
【００４８】
また、工程表作成タスク１７は、プログラムが異常終了した場合に、作成した最新の工程表３０に異常終了した工程に色を付して表示する機能を有しており、プログラムが異常終了した場合に、当該機能が起動するように制御部１０ａによって制御されている。
【００４９】
ジョブ再実行タスク１８は、ジョブが異常終了した場合に、工程表３０において選択されたプログラム（再実行プログラム）の直前の入力ファイル、出力ファイルの状態に戻して、再実行プログラムを再実行可能な状態にする機能を有するプログラムである。ここで、すべての入力ファイル、出力ファイルは、記憶部１０ｂにバックアップが保存されており、ジョブの起動前の状態にリカバリ可能となっている。このジョブ再実行タスク１８は、工程表３０においてプログラムが選択されると起動されるように制御部１０ａによって制御されている。
【００５０】
このジョブ再実行タスク１８は、図８に示すフローチャートに基づいた処理を行う。まず、ジョブのコードを取得し（ステップＳ３１）、再実行プログラムの直前のプログラムが終了した状態の入力ファイルおよび出力ファイルの状態に戻す（ステップＳ３２）。
【００５１】
すなわち、ジョブのコードと工程表３０とから、ジョブの異常終了時に使用されたデバイス、すなわち、入力ファイルおよび出力ファイルと、再実行プログラムの直前のプログラムまでで使用されたデバイス、すなわち、入力ファイルおよび出力ファイルを抽出する。そして、ジョブの異常終了時の入力ファイルおよび出力ファイルを所定のフォルダから削除して、ジョブが異常終了する前（ジョブを起動する直前）の入力ファイルを、バックアップから取得して所定のフォルダに保存して、異常終了したジョブを再実行可能な状態にする。そして、再実行プログラムの直前のプログラムまでを再実行する。このようにして、再実行プログラムの直前のプログラムが終了した状態の入力ファイルおよび出力ファイルの状態に戻す。
【００５２】
そして、入力ファイルおよび出力ファイルが再実行プログラムの直前のプログラムが終了した状態に戻ったことを開発担当者に通知して、開発担当者からの「続行指令」の入力を待つ（ステップＳ３３）。
【００５３】
そして、開発担当者からの「再実行指示」の入力があった場合は（「ＹＥＳ」の場合）は、ジョブを再実行プログラムから再実行する（ステップＳ３４）。
【００５４】
ジョブ再実行検証タスク１９は、ジョブ再実行タスク１８によってジョブを再実行した後に起動されるように制御部１０ａによって制御されており、ジョブが正しいかどうかを検証する機能を有するプログラムである。
【００５５】
ジョブ再実行検証タスク１９は、図９に示すフローチャートに基づいた処理を行う。まず、ジョブの再実行前（異常終了時）と再実行後（修正後）のコード、入力ファイル、出力ファイルの差分を取得して（ステップＳ４１）、ジョブの再実行前と再実行後におけるコードの差分の有無を判定する（ステップＳ４２）。コードに差分があると判定した場合（「ＹＥＳ」の場合）は、変更箇所を検証する（ステップＳ４３）。具体的には、再実行の前後でコードと、入力ファイルまたは出力ファイルに差分がある場合は、コードの変更部分から変更される入力ファイルまたは出力ファイルを予測し、変更された入力ファイルまたは出力ファイルが予測との差異の有無を判定する。例えば、差異がない場合は、ジョブが正しい、すなわち、修正が正しい旨を出力し、差異がある場合は、ジョブが正しくない、すなわち、修正が不十分である旨を出力する。そして、ジョブの再実行前と再実行後におけるコード、入力ファイルまたは出力ファイルの差分と判定結果を出力する（ステップＳ４４）。
【００５６】
ステップＳ４２において、コードに差分がないと判定した場合（「ＮＯ」の場合）は、入力ファイルまたは出力ファイルの差分と、コードに変更がない旨を出力する（ステップＳ４５）。ここで、この場合は、入力ファイルを修正して再実行した場合であり、入力ファイルまたは出力ファイルのみに差分がある場合であるので、ジョブが正常終了して出力ファイルが正しく出力されているか否かを確認する。具体的には、ジョブの再実行前と再実行後における出力ファイルの差分があるか否かを確認する。
【００５７】
記憶部１０ｂは、変更履歴管理タスク１４や、障害履歴管理タスク１５、関連図作成タスク１６、工程表作成タスク１７、ジョブ再実行タスク１８、ジョブ再実行検証タスク１９のプログラムで取得した情報やワークファイルなどを記憶するものである。
【００５８】
次に、このような構成のジョブ再実行支援システム１における情報の処理手段および作用について説明する。ここでは、ジョブＪＯＢ０１の中の１つのプログラムＰＲＧ０１を改修する場合について説明する。
【００５９】
まず、図１０に示すように開発担当者Ｍによって、プログラムＰＲＧ０１が改修される（ステップＳ５１）。改修が終了すると、プログラムＰＲＧ０１が開発サーバに登録されて、ジョブＪＯＢ０１の実行指令が出される。また、プログラムＰＲＧ０１が登録されたことにより、変更履歴管理タスク１４によって変更履歴データベース１２ａが更新され（ステップＳ５２）、関連図作成タスク１６によって関連図２０が作成される（ステップＳ５３）。また、工程表作成タスク１７によって工程表３０が作成される（ステップＳ５４）。
【００６０】
そして、ジョブＪＯＢ０１が実行されて（ステップＳ５５）、実行結果（正常／異常）が通知される。ここでは、ジョブＪＯＢ０１が異常終了し、障害履歴管理タスク１５が起動されて、障害履歴データベース１３ａにデータが追加される（ステップＳ５６）。また、ジョブＪＯＢ０１が異常終了した旨が開発担当者Ｍに工程表３０とともに通知される。このとき、開発担当者Ｍが工程表３０を参照すると、工程表作成タスク１７によって工程表３０において異常終了したプログラムＰＲＧ０１が赤色で表示された状態となっている（ステップＳ５７）。
【００６１】
そして、開発担当者Ｍによって、プログラムＰＲＧ０１が確認されて修正される（ステップＳ５８）。修正が終了すると、障害履歴データベース１３ａの障害対応内容１３５が更新される。
【００６２】
そして、修正したプログラムＰＲＧ０１が開発サーバに登録される。プログラムＰＲＧ０１が登録されたことにより、変更履歴管理タスク１４によって変更履歴データベース１２ａが更新され（ステップＳ５９）、関連図作成タスク１６によって関連図２０が作成される（ステップＳ６０）。また、工程表作成タスク１７によって工程表３０が作成される（ステップＳ６１）。
【００６３】
そして、開発担当者Ｍによって、工程表３０においてプログラムＰＲＧ０１が選択された状態で、ジョブ再実行タスク１８の実行指令が出される。
【００６４】
ジョブ再実行タスク１８が実行されて（ステップＳ６２）、プログラムＰＲＧ０１の直前のプログラムＰＲＧ９９が終了した状態に、入力ファイルおよび出力ファイルが戻されて、開発担当者Ｍからの確認結果待ちとなり、タスクの処理を中断する。
【００６５】
そして、開発担当者Ｍによって、入力ファイルや出力ファイルが確認されて、正しく処理が行われていること、すなわち、プログラムＰＲＧ０１が再実行可能な状態であることが確認されて（ステップＳ６３）、確認ＯＫ（再実行指示）が出される。
【００６６】
そして、ジョブ再実行タスク１８が再開されて、プログラムＰＲＧ０１からジョブが再実行される（ステップＳ６２の再開）。
【００６７】
そして、ジョブ再実行検証タスク１９が起動されて（ステップＳ６４）、結果が出力される。
【００６８】
開発担当者Ｍは、ジョブ再実行検証タスク１９の結果を確認して、プログラムの障害がなくなるまでステップＳ５８からステップＳ６４の処理を繰り返す。
【００６９】
以上のように、このジョブ再実行支援システム１によれば、ＪＣＬが開発サーバに登録されると、工程表作成タスク１７によって工程表３０が作成され、関連図作成タスク１６によって関連図２０が作成される。このため、開発担当者は、プログラムの不具合を発見したり、ジョブが異常終了したりした場合には、工程表３０を参照することによってプログラムの修正箇所やジョブの再実行箇所を判断することができる。また、工程表３０において再実行したいプログラムを選択するだけで、ジョブ再実行タスク１８によって当該プログラムが再実行可能な状態とされるので、効率的な再実行が可能となる。
【００７０】
また、ジョブの再実行が容易になるので、プログラムの修正とそれに伴うジョブの再実行を繰り返すプログラム開発やテストに要する工数を削減可能である。このように、ジョブの再実行が容易になるので、プログラムの修正とそれに伴うジョブの再実行を繰り返すプログラム開発やテストに要する工数を削減可能である。
【００７１】
また、プログラムが異常終了した際に、工程表作成タスク１７によって、工程表３０に異常終了したプログラムを表示するので、異常終了したプログラムを一目で確認することができる。すなわち、工程表３０において視覚的に異常終了箇所が示されるので、ジョブに含まれるプログラムと入力ファイルまたは出力ファイルの関連を把握し易くなり、容易に修正箇所を判断可能となる。これにより、プログラムやファイルの修正箇所の間違いや漏れを防止することが可能になる。
【００７２】
さらに、関連図作成タスク１６によって、プログラムと、入力ファイルまたは出力ファイルの少なくともいずれか一方との関連を図示する関連図２０が作成されるので、プログラムごとに入力ファイルまたは出力ファイルを確認することが容易になる。これにより、プログラムの修正箇所の間違いや漏れを防止することが可能になる。
【００７３】
以上、この発明の実施の形態について説明したが、具体的な構成は、上記の実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があっても、この発明に含まれる。例えば、上記の実施の形態では、ジョブおよびプログラムは、ＪＣＬでコーディングされているものとして説明したが、他の言語であってもよいことはもちろんである。
【００７４】
また、ジョブ再実行タスク１８は、ジョブの異常終了時以外、例えば、入力ファイルに不整合があった場合であっても実行可能である。具体的には、当該入力ファイルを正しいものと置き換えた後に、工程表３０において当該入力ファイルを使用するプログラムを選択した状態で、ジョブ再実行タスク１８の実行指示を出すと、ジョブ再実行タスク１８によって当該プログラムが再実行可能な状態、すなわち、正しい入力ファイルによって当該プログラムを再実行可能な状態となる。
【符号の説明】
【００７５】
１              ジョブ再実行支援システム
１１            雛型記憶手段
１２            変更履歴記憶手段
１３            障害履歴記憶手段
１４            変更履歴管理タスク
１５            障害履歴管理タスク
１６            関連図作成手段（関連図作成タスク）
１７            工程表作成手段（工程表作成タスク）
１８            ジョブ再実行手段（ジョブ再実行タスク）
１９            ジョブ再実行検証タスク
２０            プログラム関連図（関連図）
３０            電算機処理工程明細表（工程表）
【要約】 
【課題】  入力ファイルまたは出力ファイルの少なくともいずれか一方を使用した処理を行うプログラムを順次実行するジョブの異常終了時に、工程表で選択したプログラムの実行前の状態に入力ファイルおよび出力ファイルを戻す。
【解決手段】  入力ファイルまたは出力ファイルの少なくともいずれか一方を使用した処理を行うプログラムと、複数のプログラムを順次実行するジョブと、プログラムのソースコードに基づいて、プログラムが使用する入力ファイルまたは出力ファイルの少なくともいずれか一方がプログラムごとに図示された工程表３０を作成する工程表作成タスク１７と、工程表３０において選択されたプログラムが実行される直前の状態に、入力ファイルと出力ファイルとを戻して、当該プログラムを再実行可能な状態にするジョブ再実行タスク１６と、を備える。
【選択図】  図１【図１】
0005497210.tif 000002
【図２】
0005497210.tif 000003
【図３】
0005497210.tif 000004
【図４】
0005497210.tif 000005
【図５】
0005497210.tif 000006
【図６】
0005497210.tif 000007
【図７】
0005497210.tif 000008
【図８】
0005497210.tif 000009
【図９】
0005497210.tif 000010
【図１０】
0005497210.tif 000011
【図１１】
0005497210.tif 000012
【図１２】
0005497210.tif 000013
【図１３】
0005497210.tif 000014