【事件の表示】
　平成１０年特許願第１０９９７７号「プログラム制御装置及びプログラム制御方法」拒絶査定不服審判事件〔平成１１年１１月　５日出願公開、特開平１１−３０６００８〕について、次のとおり審決する。
【結　論】
　本件審判の請求は、成り立たない。
【理　由】
１．手続の経緯
　本願は、平成１０年４月２０日の出願であって、平成１６年１０月２７日付けで拒絶理由が通知され、同年１２月２８日付けで手続補正がなされたものの、平成１７年５月１７日付けで拒絶査定がなされた。その後、同年６月２３日に拒絶査定不服審判請求がなされ、同年７月１１日付けで手続補正がなされ、これに対し、当審より平成２０年１月１１日付けで拒絶理由が通知され、同年３月５日付けで手続補正がなされたものである。  
 　
２．本願発明
　本願の請求項１に係る発明（以下、「本願発明」という。）は、平成２０年３月５日付け手続補正書によって補正された明細書又は図面の記載からみて、次のとおりのものと認める。
「【請求項１】　ユーザファンクションを編集するとともに、そのユーザファンクションをコンパイルするコンパイル手段と、そのユーザファンクションのファンクションコードをユーザファンクションテーブルに格納するユーザファンクション登録部と、プログラムを実行する実行手段と、上記実行手段の実行状況を監視し、実行中のプログラムの命令コードのすべてがフェッチされると、そのプログラムの実行休止を検知する一方、そのプログラムの起動周期を管理し、そのプログラムの起動時間に至ると、そのプログラムの実行再開を検知する監視手段と、上記監視手段によりプログラムの実行休止が検知されると、上記監視手段により上記プログラムの実行再開が検知されるまでの間、上記コンパイル手段によりコンパイルされたユーザファンクションをテンポラリエリアに格納するとともに、上記ユーザファンクションテーブルに格納されているユーザファンクションのファンクションコードと上記テンポラリエリアのアドレス情報をテンポラリテーブルに格納する格納手段と、上記格納手段の格納処理が完了すると、上記実行手段の命令分岐テーブルに対するポインタを上記テンポラリテーブルに変更する変更手段とを備えたプログラム制御装置。」
　
３．引用文献
　平成２０年１月１１日付けで当審から通知された拒絶の理由に引用された特開平６−２２２９１６号公報（以下、「引用文献１」という。）には、図面と共に以下の事項が記載されている。
　
Ａ．「【００１４】
【実施例】本発明実施例の構成を図１を参照して説明する。図１は本発明実施例の構成を示す図である。
【００１５】本発明は、複数のトランザクション処理プログラム８１〜８ｎを格納して実行するトランザクション処理プログラム部８と、このトランザクション処理プログラム部８にアクセスされるサブプログラム呼出部９と、このサブプログラム呼出部９に呼出される複数のサブプログラムが格納されるロードモジュールライブラリ２２と、この複数のサブプログラムにそれぞれ対応しそのサブプログラム名およびその入口点情報を示す第一のサブプログラム入口点ポインタであるサブプログラム入口点ポインタ７３を含むサブプログラムエントリ７が格納されたサブプログラム管理テーブル６とを備えたオンラインリアルタイム処理装置１である。
【００１６】ここで、本発明の特徴とするところは、サブプログラムエントリ７には、前記サブプログラムと置き換えられる代替サブプログラムの入口点情報が登録される第二のサブプログラム入口点ポインタであるサブプログラム入口点ポインタ７４と、サブプログラム入口点ポインタ７３およびサブプログラム入口点ポインタ７４の一方をサブプログラム呼出部９に対する被呼出サブプログラム入口点ポインタとし他の一方を非呼出サブプログラム入口点ポインタに設定する置換フラグ７１が書込まれる領域とが設けられ、ロードモジュールライブラリ２２には、前記代替サブプログラムがプログラムされる領域が設けられ、被置換サブプログラムおよびその代替サブプログラムを指定する入力手段として端末装置２と、この被置換サブプログラムのサブプログラム名およびその代替サブプログラムのサブプログラム名が登録されるサブプログラム置換テーブル４と、このサブプログラム置換テーブル４に端末装置２の入力にしたがい前記被置換サブプログラム名およびその代替サブプログラム名を登録する置換サブプログラム登録部３と、サブプログラムエントリ７およびサブプログラム置換テーブル４およびロードモジュールライブラリ２２をアクセスし前記被置換サブプログラムの置換を実行するサブプログラム置換部５とを備えたところにある。
【００１７】このサブプログラム置換部５は、サブプログラム置換テーブル４から被置換サブプログラム名およびその代替サブプログラム名を読出す手段と、この読出す手段から読出された代替サブプログラム名に対応するサブプログラムをロードモジュールライブラリ２２からロードする手段と、前記読出す手段から読出された被置換サブプログラム名に対応する入口点情報をサブプログラムエントリ７から抽出する手段と、前記ロードされた代替サブプログラムからその入口点情報を抽出する手段と、この代替サブプログラムの入口点情報を前記被置換サブプログラムに対応するサブプログラムエントリ７の非呼出サブプログラム入口点ポインタに登録する手段と、前記被置換サブプログラム名に対応する置換フラグ７１の値を反転させる手段とを含む構成である。」
　
Ｂ．「 【００１８】次に、本発明実施例の動作を図２を参照して説明する。図２はサブプログラム呼出手順を示すフローチャートである。図２においてＳＰはサブプログラムを意味する。サブプログラム呼出部９はトランザクション処理プログラム８１〜８ｎがサブプログラムを要求するときに稼働し、サブプログラム管理テーブル６を参照してロードモジュールライブラリ２２から該当するサブプログラムを呼出す。
【００１９】サブプログラム呼出部９は、指定されたサブプログラム名とサブプログラム名ファイル７２とによりサブプログラム管理テーブル６の中から該当するサブプログラムエントリ７の検索を行う（１１１）。
【００２０】置換フラグ７１が「ＯＦＦ」のときには、サブプログラム入口点ポインタ７３により示されるサブプログラム１０１を呼び出し（１１４）、置換フラグ７１が「ＯＮ」のときにはサブプログラム入口点ポインタ７４により示されるサブプログラム１０２の呼出しを行う（１１５）。
【００２１】以上の動作により、サブプログラム呼出部９は、サブプログラム管理テーブル６で管理するサブプログラムの呼出しをトランザクション処理プログラム８１〜８ｎの要求にしたがって行っている。 」
　
Ｃ．「【００２２】次に、図３および図４を参照してサブプログラム置換部５の動作を説明する。図３および図４はサブプログラム置換部５の動作を示すフローチャートである。図３および図４においてＳＰはサブプログラムを意味する。サブプログラム置換部５は、端末装置２からのオペレーションコマンドにより、あらかじめサブプログラム置換テーブル４に登録されている被置換サブプログラム名およびその代替サブプログラム名を読出す（２０１）。読出した被置換サブプログラム名と、サブプログラム名ファイル７２によりサブプログラム管理テーブル６の中から該当するサブプログラムエントリ７の検索を行う（２０２）。
【００２３】ロードモジュールライブラリ２２にあらかじめプログラムされている被置換サブプログラムの代替サブプログラムをサブプログラム置換部５は、やはりサブプログラム置換テーブル４から読出された代替サブプログラム名を参照してロードしその入口点情報を抽出する（２０３）。
【００２４】サブプログラム置換部５は、置換フラグ７１を参照し（２０４）、置換フラグ７１が「ＯＦＦ」のときにはサブプログラム入口点ポインタ７４に抽出した代替サブプログラムの入口点情報を登録し（２０６）、置換フラグ７１が「ＯＮ」のときにはサブプログラム入口点ポインタ７３に抽出した代替サブプログラムの入口点情報を登録する（２０７）。
【００２５】サブプログラム置換部５は、サブプログラム置換テーブル４を参照し（２０８）、被置換サブプログラム名が更に登録されているかを判定し、登録されていれば（２０９）再びサブプログラム置換テーブル４より登録されているその被置換サブプログラム名を読出す（２０１）。
【００２６】登録されていなければ（２０９）サブプログラム置換テーブル４に登録されている全ての被置換サブプログラムについて代替サブプログラムの入口点情報の抽出およびサブプログラムエントリ７への登録は終了する。
【００２７】次に、図４に示すように、サブプログラム置換部５は、サブプログラム置換テーブル４より被置換サブプログラム名を再び読出し（２１０）、入手した被置換サブプログラム名とサブプログラム名ファイル７２によりサブプログラム管理テーブル６の中から該当するサブプログラムエントリ７を検索する（２１１）。
【００２８】このサブプログラムエントリ７の置換フラグ７１を参照し（２１２）、置換フラグ７１が「ＯＮ」のときには（２１３）置換フラグを「ＯＦＦ」に切替え（２１４）、置換フラグ７１が「ＯＮ」のときには（２１３）置換フラグを「ＯＦＦ」に切り替える（２１５）。
【００２９】サブプログラム置換部５は、サブプログラム置換テーブル４を参照し（２１６）、被置換サブプログラム名がさらに登録されているかを判断し、登録されていればサブプログラム置換テーブル４よりその被置換サブプログラム名を読出す（２１７）。登録されていなければ、置換はすべて終了する。」
　
Ｄ．「【００３０】次に、このように構成された本発明実施例のオンラインリアルタイム処理装置１における複数のサブプログラムの動的置換方式の動作について説明する。サブプログラムの置換を行う前に、あらかじめロードモジュールライブラリ２２に置換を行う全てのサブプログラムの代替えのサブプログラムを作成しておく。
（１）まず、オンラインリアルタイム処理装置１の稼働中において、端末装置２からサブプログラム置換要求のコマンドが発行される前まで、トランザクション処理プログラム８１〜８ｎは、サブプログラム呼出部９により置換フラグ７１にしたがいロードモジュールライブラリ２２からサブプログラムの呼出を行っている。
（２）端末装置２により、置換を行うサブプログラムの登録要求が発行されると置換サブプログラム登録部３によりサブプログラム置換テーブル４に被置換サブプログラム名が登録される。
（３）端末装置２により、サブプログラム置換要求のコマンドが発行されるとサブプログラム置換部５によって以下の処理が実行される。
【００３１】サブプログラム置換テーブル４に登録されている被置換サブプログラム全てについて、ロードモジュールライブラリ２２から代替サブプログラムをロードし、抽出した代替サブプログラムの入口点情報を該当サブプログラムエントリ７の置換フラグ７１を参照して置換フラグ７１がＯＮならサブプログラム入口点ポインタ７３にＯＦＦならサブプログラム入口点ポインタ７４に登録する。
サブプログラム置換テーブル４に登録されている被置換サブプログラム全てについて、該当サブプログラムエントリ７の置換フラグ７１をＯＮからＯＦＦまたはＯＦＦからＯＮに切替を行う。
（４）サブプログラムの置換要求のコマンドが発行された後では、サブプログラム呼出部９は置換要求があった全ての被置換サブプログラムに対し、該当するサブプログラムエントリ７の置換フラグ７１によりサブプログラム入口点ポインタ７３または７４により代替えのサブプログラムの呼出を行う。上記処理を行った後に、置換を行った全てのサブプログラムはロードモジュールライブラリ２２から削除を行うことができる。」
　
　上記Ｂ．Ｃ．の記載によれば、複数のサブプログラムが格納されたロードモジュールライブラリから代替サブプログラム名を参照して代替サブプログラムをロードし、その入口点情報を抽出しているから、ロードモジュールライブラリには、サブプログラムがサブプログラム名及び入口点情報と共に格納されていると認められる。そして、ロードされたサブプログラム（図１では、ＳＰ１０１，ＳＰ１０２として図示されている。）はオンラインリアルタイム処理装置内に保持されることになる。
　
　これらの記載より、引用文献１には、次の発明（以下、「引用発明」という。）が記載されている。
　
　複数のサブプログラムがサブプログラム名及び入口情報点と共に格納されるロードモジュールライブラリと、
　トランザクション処理プログラムが要求するサブプログラム要求に基づいて該当するサブプログラムを呼び出すサブプログラム呼出部と、
　被置換サブプログラム名と代替サブプログラム名に基づき、ロードモジュールライブラリから代替サブプログラム及び入口点情報を読み込むサブプログラム置換部と、を有し、
　トランザクションリアルタイム処理装置稼働中にサブプログラム置換要求が発行されると、サブプログラム置換部は、読み込まれた代替サブプログラムを保持し、サブプログラム名に対応して設けられた２つのサブプログラム入口点ポインタを有するサブプログラム管理テーブルの一方のサブプログラム入口点ポインタに置換フラグに応じて入口点情報を登録し、被置換サブプログラム全てについて代替サブプログラムの入口点情報の登録が完了した後、置換フラグを切り換えることにより、サブプログラム呼出部から呼び出されるサブプログラムの置換を行うオンラインリアルタイム処理装置
　
　また、平成２０年１月１１日付けで当審から通知された拒絶の理由に引用された特開平２−１３０６３３号公報（以下、「引用文献２」という。）には、図面と共に以下の事項が記載されている。
　
Ｅ．「（実施例）
　以下、図に沿って本発明の実施例を説明する。
　まず、第３図は本発明の第１実施例が適用される情報処理装置を示すもので、この実施例は、１個のＣＰＵとハードウェアによる領域切替手段とを用いて第１図の構成を実現したものである。
　第３図において、７はプログラムの編集及び実行を行なうＣＰＵであり、このＣＰＵ７にはＣＰＵ７によって制御されるモード信号発生回路８及びセレクト信号発生回路９が接続されている。
・・・・・・・（中略）・・・・・・・・・
　次に、この実施例におけるプログラムの実行及び編集動作を第４図及び第５図を参照しつつ説明する。
　まず、第４図（ａ）はプログラムの編集系における処理手順を、また、同図（ｂ）はプログラムの実行系における処理手順をそれぞれ示している。なお、プログラムの実行系は編集系よりも相対的に優先度が高く、編集操作中であっても割込み発生によって実行可能であるとする。ここでは、第５図における「↓」の時点ｔ１〜ｔ５で定周期割込みが発生し、実行系が起動されるものとする。
　始めに実行系が定周期起動されると、第４図（ｂ）において、ＣＰＵ７はモード信号発生回路８を操作して実行モード（モード信号ａを”１”）にする（同図ステップＳ41）、この時点は、例えば第５図における時点ｔ１として示されている。しかる後、予め設定されているアクセス信号により決定されるメモリ内のプログラムを実行し（同Ｓ42）、その後、再びモード信号発生回路８を操作して編集モード（モード信号ａを“０”）とする（同Ｓ43）。
　一方、編集系は、外部からの編集要求によって起動される。まず、編集対象のプログラムを常時アクセス可能な別のメモリ10Cにコピーする。
・・・・・・・（中略）・・・・・
　ここで、前述のように編集系よりも実行系の方が優先度が高いことから、例えば、第５図の時点ｔ２，ｔ３，ｔ４において定周期割込みが発生すると編集操作が中断され、プログラムの実行に移る。そして、実行系の処理が完了すると、引き続き編集操作が継続される。
　更に、編集操作が完了した場合には、セレクト信号発生回路９を操作して編集領域と実行領域とを切り替えるべくセレクト信号ｂを発生する（同S35）。これにより、メモリ10A、10Bについて編集及び実行のプログラム領域が切り替わることになる。
　以上の動作を示す第５図からも明らかなように、メモリ10Bに格納されたプログラムの実行の合間にメモリ10Aにおけるプログラムの編集操作が行なわれ、編集完了後にセレクト信号ｂにより実行領域を切り替え、その後はメモリ10Aに格納された完成後のプログラムが実行される。この際、実行の定周期性が損なわれることはなく、無駄時間も発生していないことがわかる。」（公報２頁右下欄１行〜４頁右上欄２行）
　
　以上の記載によれば、引用文献２には、
「１つのＣＰＵによりプログラムの編集と実行を行うものにおいて、
　プログラム編集操作中に実行系からの定周期割込みが発生すると、編集操作を中断し、プログラムの実行に移り、実行系の処理が終了すると引き続き編集操作を継続することにより、プログラム実行の定周期性を損なうことなくプログラムの実行の合間に編集操作が行われる処理方法」が記載されている。
　
４．対比
　本願発明と引用発明とを対比すると、
　引用発明の「サブプログラム］「サブプログラム名」「入口点情報」「サブプログラム置換部」は、それぞれ、本願発明の「ユーザファンクション」「ファンクションコード」「アドレス情報」「格納手段」に相当する。
　引用発明の「複数のサブプログラムがサブプログラム名及び入口情報点と共に格納されるロードモジュールライブラリ」は、装置にロードされるプログラムの保有形態を示すものであり、このロードモジュールライブラリを作成する段階が存在することは明らかである。また、本願発明の「ユーザファンクションを編集するとともに、そのユーザファンクションをコンパイルするコンパイル手段と、そのユーザファンクションのファンクションコードをユーザファンクションテーブルに格納するユーザファンクション登録部」は、外部でプログラムを作成、保持するためのものであるから、両者は、装置に読み込まれて登録されるプログラムが外部において作成、保持する手段である点で共通している。
　引用発明では、トランザクション処理の実行に際して、トランザクション処理プログラムがサブプログラム要求を発行しているから、トランザクション処理プログラムを実行する手段が存在していることになり、本願発明の「プログラムを実行する実行手段」に相当する手段を有していることは明らかである。
　引用発明は、トランザクションリアルタイム処理装置稼働中にトランザクションを停止させること無く、複数のサブプログラムを同時に動的に置換することを目的としているものである。そして、上記３．Ｄ．の記載をみると、サブプログラム置換要求のコマンドが発行されるとサブプログラム置換部は、代替サブプログラムのロード、代替サブプログラムの入口点情報の登録、置換フラグの切替を行うとされており、これらの動作はトランザクション処理装置稼働中に行われている。一方、本願発明では監視手段の管理の下でプログラムの実行、再開の管理と、ユーザファンクション、ファンクションコード、アドレス情報の格納とが行われている。従って、引用発明と本願発明とは、プログラムの実行と、ユーザファンクション、ファンクションコード、アドレス情報の格納とを何らかの制御の下で行う点で共通している。　
　引用発明では、ロードモジュールライブラリから読み込まれた代替サブプログラムは処理装置内に保持されるから、本願発明の「ユーザファンクションをテンポラリエリアに格納」と実質的に同等のことを行っている。
　引用発明の「サブプログラム名に対応して設けられた２つのサブプログラム入口点ポインタを有するサブプログラム管理テーブルの一方のサブプログラム入口点ポインタに置換フラグに応じて入口点情報を登録し、被置換サブプログラム全てについて代替サブプログラムの入口点情報の登録が完了した後、置換フラグを切り換えることにより、サブプログラム呼出部から呼び出されるサブプログラムの置換を行う」ことと、本願発明において、格納手段が「上記ユーザファンクションテーブルに格納されているユーザファンクションのファンクションコードと上記テンポラリエリアのアドレス情報をテンポラリテーブルに格納し」、実行手段が「上記格納手段の格納処理が完了すると、上記実行手段の命令分岐テーブルに対するポインタを上記テンポラリテーブルに変更する」こととは、ロードしたプログラムのアドレスを別の箇所に格納しておき、ロード完了後に新たにロードしたプログラムのアドレスに切り換える機構を有する点で共通している。
　
  よって、本願発明と引用発明とは、
　
　装置に読み込まれて登録されるプログラムが外部において作成、保持する手段と、
　プログラムを実行する実行手段と、
　プログラムの実行と、ユーザファンクション、ファンクションコード、アドレス情報の格納とを何らかの制御の下で行う手段と、
　ユーザファンクションをテンポラリエリアに格納し、
　ロードしたプログラムのアドレスを別の箇所に格納しておき、ロード完了後に新たにロードしたプログラムのアドレスに切り換える機構
を備えたプログラム制御装置
　
である点で一致し、次の点で相違する。
　
相違点１
　装置に読み込まれ登録されるプログラムを外部において生成、保持する手段が、本願発明では「ユーザファンクションを編集するとともに、そのユーザファンクションをコンパイルするコンパイル手段と、そのユーザファンクションのファンクションコードをユーザファンクションテーブルに格納するユーザファンクション登録部」であるのに対し、引用発明では「複数のサブプログラムがサブプログラム名及び入口情報点と共に格納されるロードモジュールライブラリ」である点
　
相違点２
　プログラムの実行と、ユーザファンクション、ファンクションコード、アドレス情報の格納とを行う何らかの制御手段が、本願発明では、実行手段の実行状況を監視し、実行中のプログラムの命令コードのすべてがフェッチされると、そのプログラムの実行休止を検知する一方、そのプログラムの起動周期を管理し、そのプログラムの起動時間に至ると、そのプログラムの実行再開を検知する監視手段によって行われるものであるのに対し、引用発明ではどのような制御手段によって行われているか不明である点
　
相違点３
　ロードしたプログラムのアドレスを別の箇所に格納しておき、ロード完了後に新たにロードしたプログラムのアドレスに切り換える機構が、本願発明では、命令分岐テーブルとテンポラリテーブルを有し、実行手段のポインタを命令分岐テーブルからテンポラリテーブルに変更するものであるのに対し、引用発明では、置換すべき代替プログラムの全ての入口点情報を入口点ポインタに登録した後で置換フラグによってサブプログラム管理テーブルの２つのサブプログラム入口点ポインタを切り替えるものである点
                 
５．検討
相違点１について
　引用発明のロードモジュールライブラリにはサブプログラム名及び入口点情報が格納されており、また、一般にロードモジュールにはソースプログラムをコンパイルしたオブジェクトプログラムが格納されているから、ロードモジュールライブラリを作成する段階でコンパイル手段と本願発明におけるユーザファンクション登録部に相当する手段を必要とすることは明らかである。従って、装置に読み込まれ登録されるプログラムを外部において生成、保持する手段として、本願発明のコンパイラ手段とユーザファンクション登録部に相当する手段を設けることは格別のことではない。
　
相違点２について
　引用文献２に記載されたものでは、プログラムの実行と編集を並行して行う場合、プログラム編集操作中に実行系からの定周期割込みが発生すると、編集操作を中断し、プログラムの実行に移り、実行系の処理が終了すると引き続き編集操作が継続している。この場合、定周期割込みにより、割込み処理として実行系が動作しており、割込み処理への移行は一般に割込み制御手段が実行することになる。従って、引用文献２には明示されていないが割込み制御手段によって定周期で発生する割込みにより実行系に移行し、一連の割込み処理プログラムが終了すると（フェッチされた割込み処理プログラムはすべて実行されることになるから、実行の終了と命令コードのすべてがフェッチされることは実質的に同じである。）、実行系から編集系に戻ることになるから、引用文献２に記載されたものが有する割込み制御手段は、本願発明の監視手段と実質的に同等の働きをしている。
　引用発明はトランザクション処理装置が稼働中にトランザクションを停止させること無くサブプログラムの置換を行うものであり、トランザクション処理プログラムの実行中に別の処理を行わせる場合の制御手法として割り込みを用いることはごく普通に行われることであるから、引用発明のプログラムの実行とユーザファンクション、ファンクションコード、アドレス情報の格納を行う制御手段として、引用文献２に記載されたものが有する割込み制御手段を用いることは当業者が容易に為し得ることである。
　
相違点３について
　引用発明の「サブプログラム管理テーブル」は、入口点ポインタを２つもち、一方に被置換サブプログラムの入口点情報を有し、他方に代替サブプログラムの入口点情報を登録し、更に代替すべき全ての入口点情報を登録した後で置換フラグに応じて使用する入口点ポインタを切り替えている。このように引用発明においては格納する入口点ポインタは個々に構成されているが、入口点情報は同時に切り替えるものであるから、切り替えるべき入口点情報を格納した入口点ポインタをまとめて１つのテーブルとし、そのテーブルを指すポインタを切り替えることにより入口点情報をまとめて切り替えるようにすることは容易に為し得ることである。
　
　そして、本願発明の構成によってもたらされる効果も、引用例記載の発明から当業者ならば容易に予測することができる程度のものであって、格別のものとはいえない。
　
６．むすび
　したがって、本願発明は、引用文献１及び２に記載された発明に基づいて、当業者が容易に発明をすることができたものであるから、特許法第２９条第２項の規定により特許を受けることができない。
　よって、結論のとおり審決する。