(57)【要約】  【課題】復旧可能にプログラムを退避する。  【解決手段】プログラム管理コンピュータシステムは，業務処理を実行する業務処理コンピュータシステムと協働して動作する。本番用ライブラリに業務処理に用いられる複数のプログラムが記憶されており，そのそれぞれについての最新の使用日付データがプログラム使用状況管理テーブルに記録されている。プログラム使用状況管理テーブルの最新使用日付データにしたがって，上記本番用ライブラリに記憶されている複数のプログラムのそれぞれについて，１年間使用されていない不使用プログラムかどうかが判断される（ステップ44）。不使用プログラムと判断されると，そのプログラムのコピーが退避ライブラリに記憶され，その後に本番用ライブラリから削除される。【選択図】図４
2015170079.tif 000002
【特許請求の範囲】
【請求項１】
業務処理装置による業務処理に用いられる複数のプログラムを記憶する本番用ライブラリに記憶されている複数のプログラムのそれぞれについて，少なくとも最新の使用された日付データを記録するプログラム使用状況管理テーブル，
上記プログラム使用状況管理テーブルの最新使用日付データにしたがって，上記本番用ライブラリに記憶されているプログラムについて所定期間使用されていない不使用プログラムかどうかを判断する第１の判断手段，
上記第１の判断手段によって不使用プログラムであることが判断された場合に，そのプログラムを複製して上記本番用ライブラリと異なる退避ライブラリに記憶する退避手段，および
上記退避手段によって退避ライブラリに上記不使用プログラムの複製物が記憶された後に，上記不使用プログラムを上記本番用ライブラリから削除する削除手段，
を備えるプログラム管理装置。
【請求項２】
上記プログラム使用状況管理テーブルに記録される複数のプログラムのそれぞれについての最新使用日付データを定期的に更新する更新手段を備え，
上記更新手段による最新使用日付データの更新を終えた後に，上記第１の判断手段による不使用プログラムであるかどうかの判断が行われる，
請求項１に記載のプログラム管理装置。
【請求項３】
上記プログラム使用状況管理テーブルに，上記本番用ライブラリに記憶されているプログラムのそれぞれについて上記本番用ライブラリに登録されたときの日付データが記録されており，
上記本番用ライブラリに記憶されているプログラムについて上記本番用ライブラリに登録されてから所定期間を経過しているかどうかを，上記登録日付データに基づいて判断する第２の判断手段をさらに備え，
上記退避手段は，
上記第１の判断手段によって不使用プログラムであると判断され，かつ上記第２の判断手段によって本番用ライブラリに登録されてから所定期間を経過していると判断された場合に，そのプログラムを複製して上記本番用ライブラリと異なる退避ライブラリに記憶する，
請求項１または２に記載のプログラム管理装置。
【請求項４】
上記プログラム使用状況管理テーブルが，上記本番用ライブラリに記憶されているプログラムのそれぞれについて退避不可フラグを設定可能に構成されており，
上記退避手段は，
上記退避不可フラグが立てられているプログラムについての処理をスキップする，
請求項１から３のいずれか一項に記載のプログラム管理装置。
【請求項５】
上記本番用ライブラリは，改修元プログラムおよび上記改修元プログラムを改修した改修先プログラムが記憶されるものであり，
上記プログラム使用状況管理テーブルに，上記改修元プログラムについて，その改修元プログラムを改修した改修先プログラムを識別するデータがさらに記録されており，
上記プログラム使用状況管理テーブルに上記改修先プログラム識別データが記録されている改修元プログラムについて，上記改修先プログラム識別データによって特定される改修先プログラムの最新使用日付データにしたがって，上記改修先プログラムが所定期間使用されていない不使用プログラムかどうかをさらに判断する第３の判断手段を備え，
上記退避手段は，
上記第１の判断手段によって改修元プログラムが不使用プログラムであると判断され，かつ上記第３の判断手段によって改修先プログラムも不使用プログラムであると判断された場合に，その改修元プログラムを複製して上記本番用ライブラリと異なる退避ライブラリに記憶し，上記第３の判断手段によって上記改修先プログラムが不使用プログラムでないと判断された場合には上記改修元プログラムについての処理をスキップする，
請求項１から４のいずれか一項に記載のプログラム管理装置。
【請求項６】
上記業務処理装置において実行すべきプログラムが上記本番用ライブラリに記憶されていない場合に上記業務処理装置から出力されるエラーメッセージにしたがって，上記実行すべきプログラムを上記退避ライブラリにおいて検索する検索手段，および
上記検索手段によって見つかった上記実行すべきプログラムを複製して上記本番用ライブラリおよび上記退避ライブラリと異なる，上記業務処理装置がアクセス可能な緊急ライブラリに記憶する復旧手段をさらに備えている，
請求項１から５のいずれか一項に記載のプログラム管理装置。
【請求項７】
上記業務処理装置において実行すべきプログラムを規定するステートメントに，上記実行すべきプログラムが格納されているライブラリとして上記本番用ライブラリと上記緊急ライブラリとが，上記緊急ライブラリを高い優先順位にして併記されている，
請求項６に記載のプログラム管理装置。
【請求項８】
業務処理装置による業務処理に用いられる複数のプログラムを記憶する本番用ライブラリに記憶されている複数のプログラムのそれぞれについて，少なくとも最新の使用された日付データを記録するプログラム使用状況管理テーブルを備えるプログラム管理装置を制御する方法であり，
上記プログラム使用状況管理テーブルの最新使用日付データにしたがって，上記本番用ライブラリに記憶されているプログラムについて所定期間使用されていない不使用プログラムかどうかを判断し，
不使用プログラムであることが判断された場合に，そのプログラムを複製して上記本番用ライブラリと異なる退避ライブラリに記憶し，
退避ライブラリに上記不使用プログラムの複製物が記憶された後に，上記不使用プログラムを上記本番用ライブラリから削除する，
方法。
【請求項９】
業務処理装置による業務処理に用いられる複数のプログラムを記憶する本番用ライブラリに記憶されている複数のプログラムのそれぞれについて，少なくとも最新の使用された日付データを記録するプログラム使用状況管理テーブルを備えるプログラム管理装置を制御するためのプログラムであって，
上記プログラム使用状況管理テーブルの最新使用日付データにしたがって，上記本番用ライブラリに記憶されているプログラムについて所定期間使用されていない不使用プログラムかどうかを判断させ，
不使用プログラムであることが判断された場合に，そのプログラムを複製して上記本番用ライブラリと異なる退避ライブラリに記憶させ，
退避ライブラリに上記不使用プログラムの複製物が記憶された後に，上記不使用プログラムを上記本番用ライブラリから削除させるように上記プログラム管理装置を制御する，
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は，プログラム管理装置および方法，ならびにプログラム管理装置を制御するためのプログラムに関する。
【背景技術】
【０００２】
ソフトウェアライフサイクルプロセスに関する規格であるＩＳＯ／ＩＥＣ１５２８８にはソフトウェア廃棄プロセスに関する記述がある。しかしながら，この規格にはソフトウェア廃棄プロセスの目的および成果が概念的に規定されているにすぎず，具体的にどのようなときにどのようにしてソフトウェアを廃棄するかについては全く記載されていない。
【０００３】
既存のコンピュータシステム，特にメインフレームと呼ばれる企業等の基幹業務に利用される大規模なコンピュータシステムでは多数のプログラムが使用されている。たとえば，クレジットカードに関する業務処理を実行するコンピュータシステムでは１０万本を超える数のプログラムが記憶装置に記憶されており，ＪＣＬ（ジョブ制御言語）ステートメントの記述にしたがって多数のプログラムが実行される。
【０００４】
プログラム（ソフトウェア）の開発では既存プログラムの一部改修が行われることがある。この場合，何らかのシステム障害が生じた場合にすぐ対処できるようにするために，一般には改修後のプログラムを保存するのみならず，改修前のプログラムも依然として残され，これが繰返されることでシステム規模が肥大化する現状がある。システム規模の肥大化は改訂コストおよび保守コストの増大を招く。
【０００５】
特許文献１は，クライアント毎にライセンス情報を保持しておき，所定の期間利用されていない不使用ソフトウェアを抽出して，不使用ソフトウェアの登録をライセンス情報から抹消することで，長期間使用されていないソフトウェアのライセンスを回収して資産の有効利用を図るソフトウェア管理システムを記載する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−６２５６１号公報
【０００７】
しかしながら，ライセンス情報を抹消するだけでは，プログラムの改修が繰り返されることで生じる上述したコンピュータシステムの肥大化を避けることはできない。
【発明の開示】
【０００８】
この発明は，不使用のプログラムを復旧可能に自動的に退避することで，人手によらずにコンピュータシステムのスリム化を図ることを目的とする。
【０００９】
この発明によるプログラム管理装置は，業務処理装置による業務処理に用いられる複数のプログラムを記憶する本番用ライブラリに記憶されている複数のプログラムのそれぞれについて，少なくとも最新の使用された日付データを記録するプログラム使用状況管理テーブル，上記プログラム使用状況管理テーブルの最新使用日付データにしたがって，上記本番用ライブラリに記憶されているプログラムについて所定期間使用されていない不使用プログラムかどうかを判断する第１の判断手段，上記第１の判断手段によって不使用プログラムであることが判断された場合に，そのプログラムを複製して上記本番用ライブラリと異なる退避ライブラリに記憶する退避手段，および上記退避手段によって退避ライブラリに不使用プログラムの複製物が記憶された後に，上記不使用プログラムを上記本番用ライブラリから削除する削除手段を備えている。
【００１０】
この発明によると，所定期間使用されていない不使用プログラムが本番用ライブラリから自動的に削除されるので，本番用ライブラリには所定期間内に使用されたプログラムのみが残る。業務処理装置による業務処理に用いられる複数のプログラムを記憶する本番用ライブラリの改訂作業が簡略化され，システム規模の肥大化および保守コストの増大を低減することができる。プログラム改修時の影響範囲の特定も行いやすくなる。
【００１１】
不使用プログラムかどうかを判断するための所定期間は任意に設定することができる。
【００１２】
またこの発明によると，本番用ライブラリから削除される不使用プログラムの複製物が退避ライブラリに残される。このため，本番用ライブラリから削除された不使用プログラムを必要に応じて本番用ライブラリに戻すことも可能である。退避ライブラリは業務処理装置による業務処理に用いられるライブラリではないから，退避ライブラリに対する改訂作業は必要とされず，したがって退避ライブラリに不使用プログラムの複製物を残しても保守コスト等が大幅に増大することはない。
【００１３】
一実施態様では，上記プログラム使用状況管理テーブルに記録される複数のプログラムのそれぞれについての最新使用日付データを定期的に更新する更新手段を備え，上記更新手段による最新使用日付データの更新を終えた後に，上記第１の判断手段による不使用プログラムであるかどうかの判断が行われる。不使用プログラムであるかどうかの判断に，常に最新の使用実績を用いることができる。
【００１４】
最新使用日付データの更新は，好ましくはこの発明によるプログラム管理装置の処理タイミングに連動するスパンで行われる。たとえば，プログラム管理装置を日次処理（毎日）で起動する場合には，最新使用日付データの更新も日次処理とされる。プログラム管理装置を月次処理（毎月）で起動する場合には，最新使用日付データの更新も月次処理とされる。
【００１５】
好ましくは，上記プログラム使用状況管理テーブルに，上記本番用ライブラリに記憶されているプログラムのそれぞれについて上記本番用ライブラリに登録（記憶）されたときの日付データが記録されている。プログラム管理装置は，上記本番用ライブラリに記憶されているプログラムについて上記本番用ライブラリに登録されてから所定期間を経過しているかどうかを，上記登録日付データに基づいて判断する第２の判断手段をさらに備え，上記退避手段は，上記第１の判断手段によって不使用プログラムであると判断され，かつ上記第２の判断手段によって本番用ライブラリに登録されてから所定期間を経過していると判断された場合に，そのプログラムを複製して上記本番用ライブラリと異なる退避ライブラリに記憶する。逆に言えば，不使用プログラムであっても，そのプログラムが本番用ライブラリに登録されて間もないプログラムである場合には，そのプログラムの複製物の退避ライブラリへの記憶およびそのプログラムの本番用ライブラリからの削除は行われない。新規に本番用ライブラリに登録されて未だ使用されていないプログラムが本番用ライブラリから削除されてしまうことが防止される。第２の判断手段において用いられる所定期間も任意に設定することができる。
【００１６】
一実施態様では，上記プログラム使用状況管理テーブルが，上記本番用ライブラリに記憶されているプログラムのそれぞれについて退避不可フラグを設定可能に構成されており，上記退避手段は，上記退避不可フラグが立てられるプログラムについての処理をスキップする。不使用プログラム，または不使用プログラムでありかつ本番用ライブラリへの登録から所定期間が経過しているものであっても，退避不可フラグが立てられている場合には，そのプログラムの複製物の退避ライブラリへの記憶およびそのプログラムの本番用ライブラリからの削除は行われない。たとえば，数年に一度しか使用されないが，数年に一度は使用されるプログラム（うるう年だけに使用されるプログラムなど）について退避不可フラグを立てておくことで，そのプログラムを本番用ライブラリに常に残しておくことができる。
【００１７】
他の実施態様では，上記本番用ライブラリは，改修元プログラムおよび上記改修元プログラムを改修した改修先プログラムが記憶されるものであり，上記プログラム使用状況管理テーブルに，上記改修元プログラムについて，その改修元プログラムを改修した改修先プログラムを識別するデータ（プログラム名，識別番号など）がさらに記録されており，上記プログラム使用状況管理テーブルに上記改修先プログラム識別データが記録されている改修元プログラムについて，上記改修先プログラム識別データによって特定される改修先プログラムの最新使用日付データにしたがって，上記改修先プログラムが所定期間使用されていない不使用プログラムかどうかをさらに判断する第３の判断手段を備え，上記退避手段は，上記第１の判断手段によって改修元プログラムが不使用プログラムであると判断され，かつ上記第３の判断手段によって改修先プログラムも不使用プログラムであると判断された場合に，その改修元プログラムを複製して上記本番用ライブラリと異なる退避ライブラリに記憶し，上記第３の判断手段によって上記改修先プログラムが不使用プログラムでないと判断された場合には上記改修元プログラムについての処理をスキップする。
【００１８】
本番用ライブラリに改修元プログラムおよびその改修元プログラムを改修した改修先プログラムが記憶されているとき，上記改修元プログラムが不使用プログラムであり，かつ改修先プログラムも不使用プログラムであるときに改修元プログラムの複製物の退避ライブラリへの記憶および改修元プログラムの本番用ライブラリからの削除が行われる。改修元プログラムが不使用プログラムであっても，改修先プログラムが不使用プログラムでない場合には改修元プログラムの複製物の退避ライブラリへの記憶および改修元プログラムの本番用ライブラリからの削除は行われない。業務処理装置による業務処理に影響を生じさせない可能性が高く，かつ後日参照されることもないと考えられるプログラムを本番用ライブラリから削除することができる。
【００１９】
好ましくは，上記業務処理装置において実行すべきプログラムが上記本番用ライブラリに記憶されていない場合に上記業務処理装置から出力されるエラーメッセージにしたがって，上記実行すべきプログラムを上記退避ライブラリにおいて検索する検索手段，および上記検索手段によって見つかった上記実行すべきプログラムを複製して上記本番用ライブラリおよび上記退避ライブラリと異なる，上記業務処理装置がアクセス可能な緊急ライブラリに記憶する復旧手段をさらに備えている。上述したように，プログラム管理装置では本番用ライブラリから削除された不使用プログラムの複製物が退避ライブラリに残されている。退避ライブラリに残されているプログラムを緊急ライブラリに複製し，この緊急ライブラリを業務処理装置においてアクセス可能にしておくことで，本番用ライブラリから一旦削除されたプログラムであっても業務処理装置における業務処理に用いることができる。なお，緊急ライブラリは業務処理装置が業務処理に用いるプログラムを常時記憶するライブラリではないから，緊急ライブラリに複製されたプログラムは，オペレータによって本番用ライブラリに記憶される（戻される）。
【００２０】
好ましくは，上記業務処理装置において実行すべきプログラムを規定するステートメントに，上記プログラムが格納されているライブラリとして，上記本番用ライブラリと上記緊急ライブラリとが上記緊急ライブラリを高い優先順位にして併記されている。これによって，緊急ライブラリに複製されたプログラムを業務処理装置は実行することができる。
【００２１】
この発明は，上述したプログラム管理装置を制御する方法およびプログラムも提供する。
【図面の簡単な説明】
【００２２】
【図１】業務処理コンピュータシステムとプログラム管理コンピュータシステムとを概略的に示すブロック図である。
【図２】本番用ライブラリ，退避ライブラリおよび緊急ライブラリ間のプログラムの移動の流れを示すブロック図である。
【図３】プログラム使用状況管理テーブルを示す。
【図４】退避処理プログラムの処理の流れを示すフローチャートである。
【図５】退避処理プログラムの処理の流れを示すフローチャートである。
【図６】退避処理プログラムの処理の流れを示すフローチャートである。
【図７】復旧処理プログラムの処理の流れを示すフローチャートである。
【図８】変形例のプログラム使用状況管理テーブルを示す。
【図９】プログラムの世代関係を示す。
【図１０】変形例の退避処理プログラムの処理の流れを示すフローチャートである。
【実施例】
【００２３】
図１は，業務処理コンピュータシステムとプログラム管理コンピュータシステムとを概略的に示している。
【００２４】
業務処理コンピュータシステム10は，与えられるＪＣＬステートメント11の記述にしたがって，所定の業務処理（ジョブ），たとえばクレジットカード・システムであれば認証処理，利用実績の記録処理，請求書発行処理，消費税加算処理などを実行するシステムである。ＪＣＬステートメント11にはジョブの実行指示，ジョブにおいて実行すべきプログラム名，実行すべきプログラムを格納するライブラリ名，入力ファイル名，出力ファイル名，処理結果を保存する記憶装置名等が記述されており，ＪＣＬステートメント11の記述にしたがって業務処理コンピュータシステム10の動作が制御される。すなわち，業務処理コンピュータシステム10は，与えられるＪＣＬステートメント11にしたがって業務処理コンピュータシステム10に接続されている記憶装置12に記憶されている入力ファイルを読出して，後述する本番用ライブラリ等に記憶されているプログラムを用いて所定の処理（ジョブ）を行い，処理結果を出力ファイルに記録する。一つのジョブでは一または複数のプログラムが実行される。一のプログラムが複数のジョブに共通に用いられることもある。
【００２５】
業務処理コンピュータシステム10において行われるジョブに用いられるプログラムは，業務処理コンピュータシステム10に接続された記憶装置である本番用ライブラリ31に記憶されている。すなわち業務処理コンピュータシステム10は，ＪＣＬステートメント11に記載されているプログラム名によって特定されるプログラムを上記本番用ライブラリ31から読出し，実行する。本番用ライブラリ31には多数たとえば数万本のプログラムが記憶されている。
【００２６】
業務処理コンピュータシステム10にはさらに，上記本番用ライブラリ31とは別の記憶装置である緊急ライブラリ33も接続されている。緊急ライブラリ33には通常は何も記憶されていない。詳細は後述するが，業務処理コンピュータシステム10において実行すべきプログラムが本番用ライブラリ31に記憶されていない場合に，その実行すべきプログラムが緊急ライブラリ33に一時的に記憶される。緊急ライブラリ33に一時的に記憶されたプログラムも業務処理コンピュータシステム10によるジョブに用いられる。
【００２７】
上述したＪＣＬステートメント11には，実行すべきプログラムの格納ライブラリ名として，上述した本番用ライブラリ31と緊急ライブラリ33の２つのライブラリ名が，緊急ライブラリ33を高い優先順位にして併記される。このようにＪＣＬステートメント11を記述しておくことで，業務処理コンピュータシステム10は，ＪＣＬステートメント11に記述されているプログラム名のプログラムを，はじめに緊急ライブラリ33において検索して読出し，緊急ライブラリ33において見つからない場合に次に本番用ライブラリ31において検索して読み出すように制御される。
【００２８】
プログラム管理コンピュータシステム20は，業務処理コンピュータシステム10とともに用いられるコンピュータシステムであり，上述した本番用ライブラリ31に記憶されている多数のプログラムを管理するためのシステムである（ライブラリ管理システムと言うこともできる）。上述した本番用ライブラリ31および緊急ライブラリ33は，プログラム管理コンピュータシステム20にも接続されている。
【００２９】
プログラム管理コンピュータシステム20にはさらに退避ライブラリ32が接続されている。後述するように，退避ライブラリ32には，本番用ライブラリ31に記憶されているプログラムのうち一定期間不使用のもの（以下，不使用プログラムという）のコピー（複製物）が記憶される。退避ライブラリ32に不使用プログラムのコピーが記憶された後，本番用ライブラリ31から不使用プログラムが削除される。また，後述するように，プログラム管理コンピュータシステム20は，業務処理コンピュータシステム10において実行すべきプログラムが本番用ライブラリ31および緊急ライブラリ33のいずれにも記憶されていない場合に，その実行すべきプログラムを退避ライブラリ32から検索して緊急ライブラリ33に移動する処理（緊急ライブラリ33に複製し，かつ退避ライブラリ32から削除する処理）も行う。
【００３０】
プログラム管理コンピュータシステム20を制御するためのプログラムは，プログラム管理コンピュータシステム20に接続された記憶装置21に記憶されている。記憶装置21には，後述するプログラム利用状況管理テーブル，退避処理プログラムおよび復旧処理プログラムが記憶されている。これらのテーブルおよびプログラムの詳細は後述する。
【００３１】
図２は上述した本番用ライブラリ31，退避ライブラリ32および緊急ライブラリ33間のプログラムの移動の流れを概略的に示している。
【００３２】
本番用ライブラリ31には，上述したように，業務処理コンピュータシステム10によって実行される多数のプログラムが記憶されている。ここで本番用ライブラリ31に記憶されている多数のプログラムのなかには，業務処理コンピュータシステム10によって後日全く使用されないものも存在する。これは，プログラムの開発（本番用ライブラリ31の構築）が，一般に既存プログラムの一部を改修することによって行われることに起因する。
【００３３】
すなわち，既に稼働している業務処理コンピュータシステム10を改修する場合，本番用ライブラリ31ごと，すなわち本番用ライブラリ31に記憶されている多数のプログラムのすべてを新規に作成したプログラムに一斉に交換することは一般には行われない。継続的なサービス提供（業務処理）に支障が生じる可能性があるからである。既に稼働している業務処理コンピュータシステム10を改修する場合には，本番用ライブラリ31に記憶されている多数のプログラムのうちの改修に必要ないくつかのプログラムのみの改修が行われる。さらにプログラムの改修についても，プログラム全体を書直すことは一般には行われずその一部の書直しにとどめられる。プログラムの一部改修が行われると，改修されたプログラムが新たに本番用ライブラリ31に記憶される。このとき，従前使用していた改修前のプログラムも，その後に使用される可能性は低いものの，本番用ライブラリ31にそのまま残される。これも，改修後のプログラムに何らかの欠陥があった場合にすぐに改修前のプログラムを使用することができる状態にしておくことで，継続的なサービス提供に支障が生じないようにするためである。これが，業務処理コンピュータシステム10によって後日全く使用されないものが本番用ライブラリ31に存在する理由である。
【００３４】
詳細には後述するが，プログラム管理コンピュータシステム20は，本番用ライブラリ31に記憶されている多数のプログラムのうち所定期間使用されていない不使用プログラムを退避ライブラリ32に退避する処理（退避ライブラリ32にコピーを記憶し，かつ本番用ライブラリ31から削除する処理）を実行する。これにより本番用ライブラリ31には長期間使用されていない不使用プログラムが無くなる。本番用ライブラリ31には業務処理コンピュータシステム10によって所定期間内に使用されたプログラムのみが記憶されている状態になるので，その後は改修作業をスムーズに行うことができるようになり保守コストの削減を図ることができる。プログラムを改修するときの影響範囲の特定も容易になる。
【００３５】
さらに，詳細は後述するが，プログラム管理コンピュータシステム20は，業務処理コンピュータシステム10によって本番用ライブラリ31および緊急ライブラリ33に記憶されていないプログラムの実行が要求された場合に，そのプログラムを退避ライブラリ32から緊急ライブラリ33に復旧する処理（緊急ライブラリ33にコピーを記憶し，かつ退避ライブラリ32から削除する処理）も行う。緊急ライブラリ33に復旧されたプログラムは，その後オペレータによって本番用ライブラリ31に再登録される。
【００３６】
図３はプログラム管理コンピュータシステム20の記憶装置21に記憶されているプログラム使用状況（使用実績）管理テーブル21Ａを示している。
【００３７】
プログラム使用状況管理テーブル21Ａには，本番用ライブラリ31に記憶されている多数のプログラムのそれぞれについてのデータレコードを含み，各データレコードにはプログラム名，最新使用年月日，登録年月日および退避不可フラグの各データ項目が記録されている。
【００３８】
「プログラム名」は本番用ライブラリ31に記憶されているプログラムのそれぞれに固有の名称である。上述したＪＣＬステートメント11にはこのプログラム名が記述される。
【００３９】
「最新使用年月日」は，プログラムが使用された最新の年月日である。業務処理コンピュータシステム10（そのオペレーティングシステム）によって作成されるシステムログに記載されるプログラムの実行履歴データにしたがってこの最新使用年月日は更新される。
【００４０】
「登録年月日」は本番用ライブラリ31にプログラムを記憶（登録）したときの年月日である。オペレータ（ライブラリアン）によって本番用ライブラリ31にプログラムが登録されたときに業務処理コンピュータシステム10（そのオペレーティングシステム）によって登録年月日を自動的に記録してもよい。
【００４１】
「退避不可フラグ」は，次に説明する退避処理の対象としないプログラムであることを表すフラグである。退避不可フラグが立てられたプログラムは，後述する退避処理の対象から外される。
【００４２】
図４から図６は退避処理プログラムによって制御されるプログラム管理コンピュータシステム20の動作の流れを示すフローチャートである。
【００４３】
退避処理プログラムは，日次処理によって，たとえば所定時刻に毎日実行される。はじめに１日分の使用実績にしたがって，上述したプログラム使用状況管理テーブル21Ａの最新使用年月日が更新される（ステップ41）。上述したように，業務処理コンピュータシステム10（そのオペレーティングシステム）は業務処理コンピュータシステム10によって実行されたプログラムの実行履歴データを含むシステムログを作成する。このログに基づいて最新使用年月日は更新される。
【００４４】
カウンタｉが初期化される（ステップ42）。プログラム使用状況管理テーブル21Ａにデータ登録されているすべてのプログラム（すなわち本番用ライブラリ31に記憶されているすべてのプログラム）のそれぞれについて，プログラム使用状況管理テーブル21Ａのデータを用いて以下の処理が行われる（ステップ43でNO）（プログラム使用状況管理テーブル21Ａにおいて管理されているプログラムの数をここでは「Ｎ」とする）。
【００４５】
過去１年間に使用されたプログラムであるかどうかが判断される（ステップ44）。この判断に最新使用年月日が用いられる。プログラム管理コンピュータシステム20のマシンタイム（すなわち現在の年月日）から最新使用年月日までの期間が１年以内であるかどうかが判断される。
【００４６】
１年以内に使用されている場合には，カウンタｉがインクリメントされて次のプログラムに対する処理に進む（ステップ44でNO，ステップ48）。すなわち退避処理はスキップされる。
【００４７】
最新使用年月日から１年を経過している場合（ステップ44でYES ），次に登録日から３日経過しているかどうかが判断される（ステップ45）。この判断に登録年月日が用いられる。これは本番用ライブラリ31に新規に記憶されかつ未だ使用されていないプログラムが，使用実績がないために記憶されてすぐに退避処理されてしまうのを防止するためである。なお，プログラム開発では一般に実際に使用されるときの直前まで開発作業が行われるから，プログラムが本番用ライブラリ31に新規に記憶される場合，そのプログラムは使用の直前に本番用ライブラリ31に記憶される。
【００４８】
登録日から数日，ここでは３日が経過していない場合，すなわち新規に本番用ライブラリ31に記憶されたプログラムであることが判断されると，カウンタｉがインクリメントされて次のプログラムに対する処理に進む（ステップ45でNO，ステップ48）。すなわち退避処理はスキップされる。
【００４９】
登録日から３日を経過している場合（ステップ45でYES ），次に退避不可フラグの有無が判断される（ステップ46）。プログラム使用状況管理テーブル21Ａにおいて退避不可フラグが立てられている場合（ステップ46でNO），そのプログラムは退避処理から強制的に外される。たとえば４年に一度のみ実行されるうるう年に関するプログラムに退避不可フラグが立てられる。また，後述する復旧処理によって退避ライブラリ32から緊急ライブラリ33に復旧されたプログラムについても，そのプログラムを本番用ライブラリ31に再登録するときに退避不可フラグが立てられる。いずれにしても退避不可フラグが立てられている場合には，カウンタｉがインクリメントされて次のプログラムに対する処理に進む（ステップ48）。すなわち退避処理はスキップされる。
【００５０】
過去１年間使用されておらず，登録日から３日経過しており，さらに退避不可フラグが立てられていないプログラムである場合（ステップ44でYES，ステップ45でYES，ステップ46でYES ），そのプログラム（以下，退避対象プログラムという）についてのコピーパラメータおよびデリートパラメータが作成される（ステップ47）。
【００５１】
作成されたコピーパラメータにしたがって，退避処理プログラムは，退避対象プログラムを本番用ライブラリ31から読出し，そのコピーを作成する（図５のステップ51，52）。作成された退避対象プログラムのコピーは退避ライブラリ32に記憶（登録）される（ステップ53）。
【００５２】
さらに作成されたデリートパラメータにしたがって，退避処理プログラムは，退避対象プログラムを本番用ライブラリ31から削除する（図６のステップ61）。さらに退避処理プログラムは，本番用ライブラリ31から削除されかつ退避ライブラリ32に記憶された退避対象プログラムについてのデータレコードを，プログラム使用状況管理テーブル21Ａから削除する（ステップ62）。
【００５３】
上述の処理がプログラム使用状況管理テーブル21Ａに管理されているすべてのプログラム（本番用ライブラリ31に記憶されているすべてのプログラム）について行われる。すべてのプログラムについての処理が終了すると，退避処理プログラムの処理が終了する（ステップ43でYES）。
【００５４】
このような処理を経ることで，たとえば「大規模災害時に被災対象地域には請求書を出さない」といったプログラムは，本番用ライブラリ31から削除されかつ退避ライブラリ32に記憶されることになる。
【００５５】
本番用ライブラリ31から削除されかつ退避ライブラリ32に記憶されたプログラムについて，そのプログラム名，退避ライブラリ32に記憶された年月日等のデータを格納したテーブルを作成してもよい。
【００５６】
ステップ44，45，46の処理の順番は任意である。たとえば，先に登録日から３日を経過していないプログラムおよび退避不可フラグが立てられているプログラムを処理対象から外し，残りのプログラムに対して最新使用年月日から１年を経過しているかどうかを判断してもよい。
【００５７】
図７は復旧処理プログラムによって制御されるプログラム管理コンピュータシステム20の動作の流れを示すフローチャートである。
【００５８】
上述したように，業務処理コンピュータシステム10は与えられるＪＣＬステートメント11の記述にしたがってジョブに必要なプログラムを緊急ライブラリ33ないし本番用ライブラリ31から読み出して実行する。実行すべきプログラムが緊急ライブラリ33にも本番用ライブラリ31にも記憶されていない場合，業務処理コンピュータシステム10（そのオペレーティングシステム）はそのジョブを一旦終了し，実行することができなかったプログラム名を含むエラーメッセージを出力する。復旧処理プログラムは，業務処理コンピュータシステム10によってこのエラーメッセージが出力された場合に起動される。
【００５９】
復旧処理プログラムは，業務処理コンピュータシステム10から出力されたエラーメッセージにしたがって，ジョブ終了の原因となったプログラムを退避ライブラリ32から検索する（ステップ71）。上述したように，プログラム管理コンピュータシステム20は本番用ライブラリ31から退避対象プログラムを削除する場合，そのプログラムのコピーを退避ライブラリ32に記憶する。このため，過去に本番用ライブラリ31に記憶されていたが，その後に本番用ライブラリ31から削除されたプログラムは退避ライブラリ32に記憶されている。エラーメッセージによって特定されるプログラムは退避ライブラリ32に記憶されている可能性が高い。
【００６０】
エラーメッセージによって特定されるプログラムが退避ライブラリ32において見つかった場合，復旧処理プログラムは見つかったプログラムをコピーし，それを緊急ライブラリ33に記憶（登録）する（ステップ72）。好ましくは，復旧処理プログラムはコピーを終えたプログラムを退避ライブラリ32から削除する（ステップ73）。
【００６１】
緊急ライブラリ33にプログラムがコピーされると，ジョブ終了を生じたＪＣＬステートメント11の再実行指令が，プログラム管理コンピュータシステム20から業務処理コンピュータシステム10に与えられ，業務処理コンピュータシステム10はジョブ終了を生じたＪＣＬステートメント11を再実行する。ＪＣＬステートメント11には，上述したように，実行すべきプログラムの格納ライブラリとして緊急ライブラリ33と本番用ライブラリ31の２つのライブラリが緊急ライブラリ33を高い優先順位にして併記されている。このため，ＪＣＬステートメント11の再実行時には，退避ライブラリ32から緊急ライブラリ33にコピーされたプログラムが読み込まれることになり，正常にジョブが実行される。
【００６２】
復旧処理プログラムによって緊急ライブラリ33に記憶されたプログラムは，業務処理コンピュータシステム10のオペレータ等によって本番用ライブラリ21に再登録され，再登録を終えた後に，緊急ライブラリ33から削除される。また，緊急ライブラリ33から本番用ライブラリ21に再登録されたプログラムについて，プログラム使用状況管理テーブル21Ａに退避不可フラグを立てることで，本番用ライブラリ21に再登録されたプログラムをその後本番用ライブラリ21から削除されないようにすることができる。
【００６３】
上述した実施例では，プログラム管理コンピュータシステム20を業務処理コンピュータシステム10と別個のコンピュータシステムとして説明したが，プログラム管理コンピュータシステム20の処理を業務処理コンピュータシステム10に実行させることもできる。この場合には，上述したＪＣＬステーメント11に退避処理プログラムの実行命令，復旧処理プログラムの実行命令等が記載され，このＪＣＬステートメント11が業務処理コンピュータシステム10に読み込まれることで，業務処理コンピュータシステム10がプログラム管理コンピュータシステム20として動作する。
【００６４】
また上述した実施例では本番用ライブラリ31等に記憶されるプログラムが実行モジュールであることを前提にしているが，ソースコードであってもよい。一般に実行モジュールは，ソースコードをコンパイラによってコンパイルしてオブジェクトコードを作成し，複数のオブジェクトコードをリンカによってリンクすることで作成される。本番用ライブラリ31から退避ライブラリ32にコピーされ，かつ本番用ライブラリ31から削除されるプログラム，および退避ライブラリ32から緊急ライブラリ33にコピーされるプログラムは，上述した実行モジュールおよびソースコードの両方であってもよいし，実行モジュールのみまたはソースコードのみであってもよい。
【００６５】
図８は他の実施例のプログラム使用状況管理テーブル21Ｂを示している。図３に示すプログラム使用状況管理テーブル21Ａとは，本番用ライブラリ31に記憶されている多数のプログラムのそれぞれについてのデータレコードに，「改修元プログラム名」および「改修先プログラム名」のデータ項目が追加されている点が異なる。
【００６６】
上述したように，プログラムを改修する場合，プログラム全体を書直すことは一般に行われずその一部の書直しにとどめられることが多い。「改修元プログラム名」は，プログラムを改修するにあたってその改修の元となったプログラムの名称である。改修元プログラム名は，改修が行われたプログラム（改修先プログラム）についてのデータレコードに記録される。他方「改修先プログラム名」は改修されたプログラムの名称である。改修先プログラム名は，改修の元となったプログラム（改修元プログラム）についてのデータレコードに記録される。
【００６７】
図９を参照して，たとえばプログラム名「Ｐ００００１」のプログラムの一部を改修して，プログラム名「Ｐ０００２１」と「Ｐ０００４５」の２つのプログラムが新たにつくられて本番用ライブラリ31に登録されたとする。この場合，プログラム名「Ｐ００００１」のプログラムについてのデータレコードの「改修先プログラム名」のデータ項目に，プログラム名「Ｐ０００２１」と「Ｐ０００４５」が記録される（図８参照）。他方，プログラム名「Ｐ００００１」の一部を改修して作られたプログラム名「Ｐ０００２１」のプログラムについてのデータレコードの「改修元プログラム名」には，改修の元になったプログラム名「Ｐ００００１」が記録される（図８参照）。プログラム名「Ｐ００００１」の一部を改修して作られたプログラム名「Ｐ０００４５」のプログラムについてのデータレコードにも，同様にして「改修元プログラム名」に改修の元となったプログラム名「Ｐ００００１」が記録される（図示略）。
【００６８】
プログラム名「Ｐ００００１」のプログラムの一部を改修して作られたプログラム名「Ｐ０００２１」と「Ｐ０００４５」の２つのプログラムのそれぞれをさらに一部改修することで，プログラム名「Ｐ０００２１」のプログラムからプログラム名「Ｐ００１２３」および「Ｐ００２３４」の２つのプログラムが，プログラム名「Ｐ０００４５」のプログラムからプログラム名「Ｐ００３４５」および「Ｐ００４５６」の２つのプログラムが，それぞれ作られたとする。この場合も，新たに作られたプログラム，たとえばプログラム名「Ｐ００１２３」のプログラムについてのデータレコードの「改修元プログラム名」のには，改修の元となったプログラムのプログラム名，ここでは「Ｐ０００２１」が記録される（図８参照）。プログラム名「Ｐ０００２１」のデータレコードの「改修先プログラム名」には，プログラム名「Ｐ００１２３」と「Ｐ００２３４」が記録される（図８参照）。このようにプログラム使用状況管理テーブル21Ｂには，プログラムの改修が行われた場合に世代データ（親，子，孫の関係を表す関連づけデータ）が記録される。
【００６９】
図１０は，上述したプログラム使用状況管理テーブル21Ｂを用いる場合の退避処理プログラムの処理の流れを示すもので，図４に対応するフローチャートである。図４のフローチャートとはステップ49の処理が加えられている点が異なる。
【００７０】
過去１年間使用されておらず（ステップ44でYES ），登録日から３日経過しており（ステップ45でYES ），退避不可フラグが立てられていないプログラム（退避対象プログラム）である場合（ステップ46でYES ），さらに改修先プログラムについてそれが過去１年間不使用であるかどうかが判断される（ステップ49）。図９を参照して，たとえばプログラム名「Ｐ００００１」のプログラムが退避対象プログラムであったとしても，次世代（子）の改修先プログラムまたはさらにその次世代（孫）の改修先プログラムが過去１年間に使用されている場合には，プログラム名「Ｐ００００１」の改修元プログラムは退避対象から外される（ステップ49でNO）。次世代またはさらにその次世代の改修先プログラムのすべてについて過去１年間使用されていない場合に，その後の退避処理に進む（ステップ49でYES ）。なお，改修元プログラムが不使用プログラムであるかどうか判断する期間（ステップ44）と改修先プログラムが不使用プログラムであるかどうかを判断する期間（ステップ49）とは一致させてもよいし異ならせてもよい。
【００７１】
この変形例では，改修先プログラムが比較的最近使用されている場合には，改修元プログラムはそれが比較的最近使用されていないとしても本番用ライブラリ31に残される。またプログラム使用状況管理テーブル21Ｂには改修元プログラム名も記憶されているので，プログラムの改修時に，本番用ライブラリ31に残されている改修元プログラムを辿ることができる。この変形例では，改修元プログラムも改修先プログラムも使用されなくなっているプログラム群（既に使命を終えていると考えられるプログラム群）が本番用ライブラリ31から削除されることになる。業務処理コンピュータシステム10による業務処理に影響を生じさせない可能性が高く，かつ後日参照されることもないと考えられるプログラムを本番用ライブラリ31から削除することができる。
【符号の説明】
【００７２】
10  業務処理コンピュータシステム（業務処理装置）
11  ＪＣＬステートメント
12，21  記憶装置
20  プログラム管理コンピュータシステム（プログラム管理装置）
21Ａ，21Ｂ  プログラム使用状況管理テーブル
31  本番用ライブラリ
32  退避ライブラリ
33  緊急ライブラリ
【図１】
2015170079.tif 000003
【図２】
2015170079.tif 000004
【図３】
2015170079.tif 000005
【図４】
2015170079.tif 000006
【図５】
2015170079.tif 000007
【図６】
2015170079.tif 000008
【図７】
2015170079.tif 000009
【図８】
2015170079.tif 000010
【図９】
2015170079.tif 000011
【図１０】
2015170079.tif 000012