【事件の表示】
　平成　３年特許願第２０１７８８号「スタック管理システム」拒絶査定に対する審判事件［平成　５年　２月２６日出願公開、特開平　５−　４６４０７］について、次のとおり審決する。
【結　論】
　本件審判の請求は、成り立たない。
【理　由】
１．手続の経緯及び本願発明の要旨
　本願は、平成３年８月12日の出願であって、請求項１に係る発明（以下、「本願発明」という）の要旨は、平成10年９月３日付け手続補正書によって補正された明細書及び図面の記載からみて、特許請求の範囲の請求項１に記載された次のとおりのものと認められる。
「退避される情報を格納するスタック領域と、該スタック領域の先頭アドレス、終了アドレス、およびスタック領域の情報が格納されている格納済領域の範囲を示す情報格納済アドレスとを保持するスタック管理情報保持手段と、前記スタック領域に情報が格納される毎に前記情報格納済アドレスを更新する管理情報更新手段と、スタック領域へ情報の格納を行うとともに、情報の格納中に割込みが発生した場合には情報の格納処理を停止し、割込み処理の終了後に前記情報格納済アドレスに基づき情報の格納処理を継続する情報格納手段と、を備えたことを特徴とするスタック管理システム」
　
２．原審の拒絶理由の概要
　平成10年２月19日付け拒絶理由通知書において、以下の記載不備を指摘している。
「この出願は、明細書及び図面の記載が下記の点で、特許法第３６条第４項、第５項及び第６項に規定する要件を満たしていない。
　　　　　　　　　　　　　　　　　　記
１．発明の詳細な説明には、下記の記載不備がある。
　（１）本願実施例では、レジスタをスタックに退避している最中に割込が発生すると、前記退避動作を中断して前記割込を処理するためのプログラムを実行させるということをしているが、そのようなことをすると、退避が済んでいないレジスタの内容が、前記割込を処理するためのプログラムを実行することによって書き換えられてデータが破壊されるという誤動作が生じるから、何故このような処理を行っても正常動作するのか不明である（正常動作させるために必要な対策に関する記載が、発明の詳細な説明中には存在しておらず、不明である）。」
　
３．審判請求人の主張
　原審の拒絶理由に対し、審判請求人は概ね以下のように主張している。
（１）平成10年４月27日付け意見書
「拒絶理由通知書で指摘された「・・・前記退避動作を中断して前記割込みを処理するためのプログラム」は、割込みルーチンを指すものであり、別プロセスやタスクによる割込み処理ではありません。一般的に割込みルーチンではレジスタは使用されないため、スタック処理中に割込みルーチンを実行させてもレジスタに保持されているデータへの影響はありません。このため、スタック処理が終了しているレジスタの情報が残っていれば、割込みルーチン終了後にスタック処理の継続実行が可能となります。これに対して、別プロセスやタスクのディスパッチ、すなわち、切替では当然全レジスタ・セーブを割込み禁止、又は延期して完了させます。従いまして、「前記割込みを処理するためのプログラムを実行することによって書き換えられてデータが破壊」と指摘されていますが、割込みルーチンから戻った時には、レジスタは破壊されていません。通常、割込みルーチンではレジスタが破壊されないようにプログラムを作成しています。」
（２）平成10年９月３日付け審判請求理由補充書
「割込み処理へとプログラムの処理が移行する場合にスタック処理が実行されるが、このスタック処理は通常以下に示す３つの処理に分けられる。つまり、まず初めに、割込み処理中にレジスタの情報が破壊されても回復可能とするため、情報を退避させるスタック領域を確保するとともに、該スタック領域の先頭アドレスと終了アドレスを保持し（第１の処理)、次に、レジスタの情報を前記スタック領域に退避させ（第２の処理)、そして最後に、割込み処理で実行されるプログラムを実行させ、このプログラムの実行が完了後に、スタック処理された情報をレジスタに戻す処理(第３の処理)からなっている。そして、本願発明では、第２の処理であるレジスタの情報のスタック領域への退避中であっても割込みを優先実行させるために、情報の退避完了毎に更新される情報格納済アドレスを保持させております。次に情報のスタック領域への退避中に割込みが発生した場合を想定する。レジスタの情報が退避未完了な状態で、割込みにより実行されるプログラムのみが実行された場合には、当然に退避が完了していないレジスタの情報は破壊され失われることになります。しかしながら、既存技術でも明確になっているように、通常、割込みが発生した場合にはスタック処理が実行されます。つまり、第1の割込みが発生してレジスタの情報の退避中(第２の処理)に第２の割り込みが発生し、この第2の割込みの処理を優先して実行させる場合には、新たにスタック処理が開始されます。このため、第２の割込にかかる処理が終了すると、退避されていた情報が元のレジスタに戻されることになり、第１の割込み処理でレジスタの情報を退避を中断した状態が復元されるわけです。このとき、前記情報格納済アドレスが残されていることから、どのレジスタの情報が退避完了しているか判定できるため、情報の退避処理を継続することが可能となります。」
　
４．当審の判断
（１）発明の詳細な説明には、本願発明の実施例について以下のように記載されている。
「【００１０】
【実施例】
　以下、本発明の一実施例を図面に基づいて説明する。
【００１１】
　図１は本発明のスタック管理システムに係る一実施例の制御を示すブロック図である。
【００１２】
　同図において、スタック管理部１は、メモリのスタック領域２６上に、スタック３と、スタック管理情報領域５を確保するとともに、当該スタック３およびスタック管理情報領域５を開放する処理を実行する。
【００１３】
　スタック３は、すでに情報が格納されている領域の情報格納済領域７および情報が格納されていない領域の情報未格納領域９を有する。
【００１４】
　スタック管理情報領域５は、スタックフレームの先頭アドレス１１、スタックフレームの終了アドレス１３および情報格納済領域７に格納されている情報の範囲を示すスタックフレーム内の情報格納済アドレス１５を有する。この情報格納済アドレス１５は、スタック３の情報未格納領域９に情報が格納されると、後述する情報更新部１９により更新される。
【００１５】
　情報格納部１７は、スタック３の情報未格納領域９に格納する情報の単位、例えばレジスタ毎に当該レジスタの情報を格納して、格納後、情報更新部１９に信号を出力する。
【００１６】
　情報更新部１９は、情報格納部１７により情報が格納されて信号が入力されるとスタック管理情報領域５の情報格納済アドレス１５をカウントアップ（更新）する。
【００１７】
　アドレス設定部２１は、スタックフレームの先頭アドレス１１およびスタックフレームの終了アドレス１３をスタック管理情報領域５に書き込む。
【００１８】
　割込検出部２３は、割込フラグレジスタ（以下、ＩＦＲという。）２５を備えて、当該ＩＦＲ２５が「１」にセットされていると割込みを検出し、ＩＦＲ２５が「０」にセットされていると割込の無と検出する。また、割込検出部２３は、割込みを検出すると情報格納部１７の動作を停止させて、割込の動作が終了すると情報格納部１７にレジスタの情報をスタック３に格納する旨の指示をする。
【００１９】
　図２はスタック３に情報を書込む動作を示す図である。
【００２０】
　メモリのスタック領域２６上にスタック管理部１によりスタック３およびスタック管理情報領域５が確保されると、アドレス設定部２１は、スタック管理情報領域５にスタックフレームの先頭アドレスａｔ、スタックフレームの終了アドレスａｂおよびスタックフレーム内の情報格納済アドレスを設定する。
【００２１】
  例えば、スタック３の情報未格納領域９にレジスタの５８番目（Ｒ５８）の情報が格納されると、スタック管理情報領域５の情報格納済アドレス１５は、情報更新部１９によりａｃ１に更新される。次に、スタック３の情報未格納領域９にレジスタの５９番目（Ｒ５９）の情報が格納されると、情報格納済アドレス１５は、情報更新部１９によりａｃ２に更新される。更に、スタック３にレジスタの６０番目（Ｒ６０）の情報が格納されるときに、割込みが発生すると、割込検出部２３は、ＩＦＲ２５のフラグが「１」にセットされることにより割込みを検出する。また当該ＩＦＲ２５が「０」にセットされると割込みの終了を検出する。検出後、割込検出部２３から情報格納済アドレス１５を参照してＲ５９まで格納済であるため、レジスタの６０番目（Ｒ６０）の情報がスタック３に格納される。格納後、情報格納済アドレス１５は、情報更新部１９によりａｃ３に更新される。
【００２２】
　次に本実施例の作用を図３のフローチャートを用いて説明する。
【００２３】
　まず、システムの起動後、スタック管理部１は、メモリのスタック領域２６上にスタック３およびスタック管理情報領域５を確保する。スタック管理情報５が確保されるとアドレス設定部２１は、スタックフレームの先頭アドレス１１、スタックフレームの終了アドレス１３を当該スタック管理情報領域５に登録する（ステップ１００、１１０）。
【００２４】
　上記スタック３にレジスタの情報を格納する情報格納部１７は、当該レジスタ単位ごとにレジスタの情報を格納する。全てのレジスタの情報が格納されると処理を終了する（ステップ１２０Ｙ）。一方、全てのレジスタの情報の格納が終了しなければ情報格納部１７は、スタック３の情報未格納領域９に、例えばレジスタの５９番目の情報を格納する（ステップ１３０）。格納後、情報格納部１７から情報更新部１９に信号が出力されると情報更新部１９は、スタック管理情報領域５の情報格納済アドレス１５をａｃ１からａｃ２に更新してステップ１２０に戻る（ステップ１４０）。
【００２５】
　上記ステップ１２０〜１４０において、割込みが発生すると、割込検出部２３は、ＩＦＲ２５のフラグが「１」であることから割込みを検出し、情報格納部１７に指令する。割込みが完了すると、割込検出部２３は、情報格納部１７に信号を出力する。情報格納部１７は、スタック管理情報領域５の情報格納済アドレス１５を参照して当該情報格納済アドレス１５がａｃ２であるので、レジスタの６０番目（Ｒ６０）の情報をスタック３の情報未格納領域９に格納する。
【００２６】
　これにより、スタック３に情報を格納しているときに割込みが発生しても当該割込みを待たせずに処理を実行できるので、従来の如く割込み動作を待たせることなく処理を実行してシステムの処理速度を向上できる。」
（２）ここで、上記２．で示した明細書の記載不備について検討する。
　本願発明の実施例において、レジスタの退避処理を実行中に割込みを検出した際の処理については、上記第【００１８】欄に「割込検出部２３は、割込フラグレジスタ（以下、ＩＦＲという。）２５を備えて、当該ＩＦＲ２５が「１」にセットされていると割込みを検出し、ＩＦＲ２５が「０」にセットされていると割込の無と検出する。また、割込検出部２３は、割込みを検出すると情報格納部１７の動作を停止させて、割込の動作が終了すると情報格納部１７にレジスタの情報をスタック３に格納する旨の指示をする。」と、また、第【００２１】欄に「例えば、スタック３の情報未格納領域９にレジスタの５８番目（Ｒ５８）の情報が格納されると、スタック管理情報領域５の情報格納済アドレス１５は、情報更新部１９によりａｃ１に更新される。次に、スタック３の情報未格納領域９にレジスタの５９番目（Ｒ５９）の情報が格納されると、情報格納済アドレス１５は、情報更新部１９によりａｃ２に更新される。更に、スタック３にレジスタの６０番目（Ｒ６０）の情報が格納されるときに、割込みが発生すると、割込検出部２３は、ＩＦＲ２５のフラグが「１」にセットされることにより割込みを検出する。また当該ＩＦＲ２５が「０」にセットされると割込みの終了を検出する。検出後、割込検出部２３から情報格納済アドレス１５を参照してＲ５９まで格納済であるため、レジスタの６０番目（Ｒ６０）の情報がスタック３に格納される。格納後、情報格納済アドレス１５は、情報更新部１９によりａｃ３に更新される。」と、また、第【００２５】欄に「上記ステップ１２０〜１４０において、割込みが発生すると、割込検出部２３は、ＩＦＲ２５のフラグが「１」であることから割込みを検出し、情報格納部１７に指令する。割込みが完了すると、割込検出部２３は、情報格納部１７に信号を出力する。情報格納部１７は、スタック管理情報領域５の情報格納済アドレス１５を参照して当該情報格納済アドレス１５がａｃ２であるので、レジスタの６０番目（Ｒ６０）の情報をスタック３の情報未格納領域９に格納する。」との記載があるのみである。そして、該記載からレジスタの退避処理を実行中に割込みを検出した際には、割込検出部２３は割込フラグレジスタＩＦＲ２５が「１」にセットされることによる割込を検出して情報格納部１７の動作を停止させ、割込フラグレジスタＩＦＲ２５が「０」にセットされることによる割込終了を検出して情報格納部１７にレジスタの退避処理の再開を指示し、情報格納部１７はスタック管理情報領域５の情報格納済アドレス１５を参照して格納済みのレジスタを判定してレジスタの退避を継続するものと認められる。また、レジスタの退避処理中に発生した割込みについては、その内容（レジスタの退避や割込ルーチン等）は一切記載されていないが、上記第【００１８】欄の「割込検出部２３は、割込みを検出すると情報格納部１７の動作を停止させて、割込の動作が終了すると情報格納部１７にレジスタの情報をスタック３に格納する旨の指示をする。」との記載があり、スタックはその動作を停止させていることから、前記割込みにおいてはレジスタの退避は行わずに割込ルーチンを実行するものと認められる。
　よって、この場合割込ルーチンの実行前に退避されなかったレジスタ（例えば上記レジスタの６０番等）が、該割込ルーチンで使用されればレジスタの内容が破壊されてしまうことは当業者ならば自明であり、この対策についてはなんら記載されていないことは明らかである。また、本願発明において、割込みの終了を検出してレジスタの退避を再開する際に、レジスタの何番目まで退避されているかを検出しているが、その具体的検出処理として、第【００２１】欄に「検出後、割込検出部２３から情報格納済アドレス１５を参照してＲ５９まで格納済であるため、レジスタの６０番目（Ｒ６０）の情報がスタック３に格納される。」と、また、第【００２５】欄に「情報格納部１７は、スタック管理情報領域５の情報格納済アドレス１５を参照して当該情報格納済アドレス１５がａｃ２であるので、レジスタの６０番目（Ｒ６０）の情報をスタック３の情報未格納領域９に格納する。」との記載があるが、スタックの特定のアドレスに特定のレジスタ番号の内容が格納されるという前提でもない限り、一般的にはこの情報格納済アドレスのみを参照しても、退避済みのレジスタ番号が判定可能であるとは到底考えられず、その他該情報格納済アドレスとレジスタ番号との関係についての記載は見当たらない。
　したがって、本願発明は、発明の詳細な説明において正常に動作する実施例が開示されておらず、当業者が容易に実施をすることができる程度に発明の構成を記載したとは認められないから、原審における上記拒絶の理由は妥当なものである。
（３）審判請求人の主張について
（ａ）３（１）の主張について
　審判請求人は「一般的に割込みルーチンではレジスタは使用されない」と主張するが、一般に割込ルーチンもＣＰＵにより通常のプログラムと同様に処理されるものであり、技術常識からみても割込みルーチンにおいてレジスタが使用されないとは到底考えられないから該主張は失当である。
（ｂ）３（２）の主張について
　審判請求人は要するにレジスタの退避処理中に発生した割込み処理として、新たにレジスタの退避が行われるため、割込みが終了した際にレジスタの退避途中の状態に戻すことが可能でありレジスタの破壊はないと主張するが、上記４（２）で述べたように、第【００１８】欄の「割込検出部２３は、割込みを検出すると情報格納部１７の動作を停止させて、割込の動作が終了すると情報格納部１７にレジスタの情報をスタック３に格納する旨の指示をする。」との記載から、本願発明の割込検出部２３は割込みを検出すると情報格納部１７の動作を停止させるものであり、上記割込み処理においてレジスタの退避が行われるとの主張は明細書の該記載と矛盾するものである。
　また、仮に割込みによるレジスタの退避が行われる際には新たなスタックが作成されるのが一般的だと主張したとしても、あくまでも本願発明の上記構成において複数のスタックをどのようにして管理するのかについて記載されていない以上、当業者が容易に実施をすることができる程度に発明の構成を記載したとは到底言うことはできない。
　したがって、上記審判請求人の主張も失当であると言わざるを得ない。
　
５．むすび
　以上のとおり、本件出願は、発明の詳細な説明に当業者が容易にその実施をすることができる程度に発明の目的、構成、効果を記載したとは認められないから、特許法第３６条第４項に規定する要件を満たしていない。
　よって、結論のとおり審決する。