(57)【要約】光硬化システム選択ツール。光硬化システムの２つ以上のエレメントのリストを含むデータベースが、各エレメントの名前、および波長応答情報を含む。エレメントを前記データベースから選択でき、かつ、前記波長応答の視覚的比較を表示できる。前記波長応答情報内の波長応答領域を分類することにより、システムエレメントの波長応答が確実にオーバーラップし、それにより有効な光硬化システムが設計されるように、光硬化システムのコンポーネントを選択できるようになる。
2005524885.tif 000002
【特許請求の範囲】
【請求項１】
情報を保存するためのデータベースであって、
複数の第１のエレメントについての情報を保存するための第１のエレメントタイプのフィールドと、
複数の第２のエレメントについての情報を保存するための、前記第１のエレメントタイプのフィールドとは異なる、第２のエレメントタイプのフィールドとを含み、
前記第１および第２のエレメントタイプは、基材、光開始剤、光源、増感剤、ＵＶ安定剤、顔料、および色素を含む光硬化システムエレメントのリストから選択され、
前記第１のエレメントタイプのフィールドおよび第２のエレメントタイプのフィールドのそれぞれは、各エレメントの名前と、各エレメントの波長応答の表現とを含む
ことを特徴とするデータベース。
【請求項２】
各エレメントの前記波長応答は波長領域に分割され、各波長領域は記号により表され、
前記波長応答は、２００ｎｍ〜１０００ｎｍの間の波長に対するものであり、各波長領域の幅は５０ｎｍであり、
光硬化システムエレメントのリストから選択された、前記第１および第２のエレメントタイプとは異なる第３のエレメントタイプを更に含み、前記第３のエレメントタイプのフィールドは、各エレメントの名前と、各エレメントの波長応答の表現とを含む、請求項１に記載のデータベース。
【請求項３】
複数のコンポーネントタイプを含む光硬化性ポリマーシステムの性能の最適化方法であって、前記コンポーネントタイプは光源、光開始剤、および基材を含み、前記光源はその光を前記基板を通して前記光開始剤に照射するように配置され、前記光源は一組の波長で作用し、前記基材は一組の波長の光のみを通し、前記光開始剤は一組の波長が当てられた場合のみ活性化され、前記最適化方法は、
第１のコンポーネントを選択するステップと、
前記第１のコンポーネントのタイプとは異なるタイプから第２のコンポーネントを選択するステップとを含み、
前記第１のコンポーネントは第１の波長スペクトルを定義する第１の組の波長で作用し、
前記第２のコンポーネントは第２の波長の組で作用し、第２の波長スペクトルを有し、前記第２の波長の組のうちの少なくとも１つは前記第１の波長の組の中に存在する
ことを特徴とする光硬化性ポリマーシステムの最適化方法。
【請求項４】
波長領域が確立され、各波長領域に代表名が割り当てられ、
各コンポーネントについての波長の組は、前記コンポーネントの波長の組が含まれる前記波長領域についての前記代表名を使用して識別される、請求項３に記載の方法。
【請求項５】
前記選択された第１のコンポーネントの前記代表名が、前記選択された第１のコンポーネントと共通する代表名を少なくとも１つ有する第２のコンポーネントのみが選択可能となるように、前記複数の第２のコンポーネントの代表名と比較する、請求項４に記載の方法。
【請求項６】
前記第１または第２のコンポーネントとは異なる第３のコンポーネントを複数の可能な第３のコンポーネントから選択するステップをさらに含み、前記第３のコンポーネントは第３の波長の組で作用し、第３の波長スペクトルを有し、前記第３の波長の組のうちの少なくとも１つは前記第１の波長の組の中に存在する、請求項５に記載の方法。
【請求項７】
光硬化性ポリマーシステムのコンポーネント特性の比較方法であって、基材を通して光開始剤に光が当たるように光源が向けられ、前記光源は第１の波長範囲で作用し、前記基材は第２の波長範囲の光のみが通過することを可能にし、前記光開始剤は第３の波長範囲で照射された場合のみ活性化され、前記比較方法は、
前記構成要素の、名前および波長応答を含む特性をメモリに保存するステップと、
第１のコンポーネントを選択するステップと、
第２のコンポーネントを選択するステップと、
前記第１のコンポーネントおよび前記第２のコンポーネントの前記名前および波長応答を、同じディスプレイ上にグラフ表示するステップとを含む
ことを特徴する光硬化性ポリマーシステムのコンポーネント特性の比較方法。
【請求項８】
前記第１と第２のコンポーネントの波長応答がオーバーラップしている領域の面積を判定するステップを更に含む、請求項７に記載の方法。
【請求項９】
前記面積の判定は、前記オーバーラップしている曲線の下の矩形を合計する方法を使用して実行される、請求項８に記載の方法。
【請求項１０】
光硬化システムの設計方法であって、
光硬化データベースを保存するリモートコンピュータにユーザ端末を接続するステップと、
第１のエレメントの選択を表す第１の信号を前記リモートコンピュータに転送し、第２のエレメントの選択を表す第２の信号を前記リモートコンピュータに転送するステップと、
前記第１および第２のエレメントの波長応答についての情報を含む信号を前記リモートコンピュータから受信するステップとを含み、
前記光硬化データベースは、複数の第１のエレメントについての情報を保存するための第１のエレメントタイプのフィールドと、複数の第２のエレメントについての情報を保存するための、前記第１のエレメントタイプのフィールドとは異なる第２のエレメントタイプのフィールドとを含み、前記第１と第２のエレメントタイプは、基材、光開始剤、光源、増感剤、ＵＶ安定剤、顔料、および色素を含む光硬化システムエレメントのリストから選択され、前記第１のエレメントタイプのフィールドおよび第２のエレメントタイプのフィールドのそれぞれは、各エレメントの名前と、各エレメントの波長応答の表現とを含む
ことを特徴とする光硬化システムの設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
光硬化は、高品質の接着を提供しながらも、コストを削減し環境適合性を向上するために、多くの環境で使用されている。光硬化では、接着される材料内の特定の化学物質と光が相互作用できるように、光源が配置される。そのような硬化方式は、コーティング、家具、エレクトロニクス、自動車、包装、光ファイバ、歯科学、およびその他の多くの用途に使用できる。
【０００２】
光硬化を使用できる分野としては、グラフィックアートイメージング、製版、フォトレジスト、はんだマスク、被覆研磨材、磁気媒体、光硬化型接着剤、光硬化性複合材料、コーティング、発泡体、造形物、コーキングおよびシーリング材、注封および封入材料、含浸およびコーティング材料などがあるが、これらには限定されない。
【背景技術】
【０００３】
光硬化を使用することの１つの利点は、揮発性有機化合物（ＶＯＣ）がプロセス内でほとんど使用されないということである。これは、ますます厳しくなりつつある排出規制に対処するために重要である。更なる利点は、光硬化システムを用いる場合、他の硬化方法に比較して、使用されるエネルギーが一般に少ないということである。
【０００４】
光硬化システムには、光源、光開始剤（ｐｈｏｔｏｉｎｉｔｉａｔｏｒ）、および重合性物質という、少なくとも３つのエレメントが必要とされる。前記光開始剤は、前記光源から光を吸収し、重合を発生させる化学反応を開始する。前記重合性物質は、前記光開始剤が活性化された場合に前記光開始剤に反応する物質である。所望の化学反応を実現するために、前記光開始剤とともに、その他の化学物質が存在していてもよい。
【０００５】
ＵＶ、可視光、または近赤外光を使用した単量体の光重合による、硬化組成物の作成は、高分子化学の確立された一部分である。多くの光重合性組成物（例えば、エチレン性不飽和単量体を含むものなど）、および少なくとも１つの光開始剤が、光照射を使用して光重合されている。これらの光重合に必要な条件は、前記光重合性組成物が前記光照射に直接さらされて、前記光開始成分が前記光重合プロセスを開始するために必要なフリーラジカルまたは酸を生成するようにしなければならないということである。代替の光重合システムでは、カチオン性の金属種などにより活性化されたフリーラジカル（ｒａｄｉｃａｌ）または酸を含む場合もある。多くの産業プロセスは、選択光による光重合に依拠している。これは、マスクを使用して光照射を表面または基材の特定領域にブロックし、露出した領域内のみで光重合を発生させるものである。
【０００６】
例えば、エレクトロニクス業界では、電子部品を共に接合するための多くの方法が、多層部品を形成する目的で、または単に部品を基板に付着させる目的で使用されている。光重合を含む方法は、一般に、基板または部品の少なくともいずれかが、光照射に対する透過性を本質的に有する状況に限定されてきた。しかし、プリント基板（ＰＣＢ）に部品を付着させる場合、この状況はまれにしか可能ではない。なぜなら、ＰＣＢは、不透明な色付きの材料で作られていることが多く、また通常は、少なくとも部分的に、金属製の回路パターンで覆われているためである。さらに、前記電子部品そのもの（例えば、チップ）も、電磁放射に対して通常は完全に不透過である。エレクトロニクス業界では、一般に、はんだ接合の補強が要望される場合、熱重合性接着剤に頼ってきた。これは、長時間の熱硬化サイクルが必要とされるため、完全に満足のいく方法とは言えない。さらに、一部の電子部品は熱に侵されやすい場合があり、また、フリーラジカル熱重合は一般に、パターンを使用した活性化や選択的活性化には向いていない。
【０００７】
光重合は、電子部品の接合に使用されてきたが、結果は必ずしも満足のいくものではなかった。例えば、接合する表面に光重合性接着剤をコーティングし、続いて前記接着剤に照射を行い、次に、前記２つの部品を貼り合わせて、前記照射された接着剤が完全に硬化するようにされてきた。代替方法として、接合する部品の周縁への照射により、部品を所定の位置に一時的に保持するための十分な強度の接合が得られるようにすることも可能である。多くの場合、完全な硬化のためには、接合された部品への加熱が必要である。
【０００８】
基板を通した光照射による光重合性接着剤の硬化は公知である。例えば、ＤＥ３９３９６２８では、出力密度が少なくとも５０ｍＷ／ｃｍ2の光照射による、１５００μｍの厚さまでの酸化アルミニウムまたは窒化アルミニウムセラミック基板への、電子部品の接合が開示されている。厚さ１０１６μｍの酸化アルミニウムセラミック基板を通したＵＶ光の透過は、約０．６％と報告されている。
【０００９】
米国特許第４，６５６，３１４号では、透光性ＰＣＢの上と下の両方からの光照射による、導電性金属被覆光硬化型インクの前記ＰＣＢ上での硬化が開示されている。これは、ＵＶ光の少なくとも一部が前記基板を下面から通過することにより、前記インクの完全な硬化を補助するものである。前記基板は、好ましくは５０％を超える光を透過し、少なくとも部分的には透光性がなければならない、ポリエステルまたはポリカーボネートの薄板として特徴付けられている。従来のプリント処理されたマイラー（ＭＹＬＥＲ）（デュポン（Ｄｕｐｏｎｔ））は、効果的な市販の基板として記述されている。
【００１０】
米国特許第５，０６５，５０５号では、回路基板の接続方法が開示されている。この方法では、電極が形成された光透過型回路基板上に、光硬化型接着剤がコーティングされる。コーティングされた側とは反対の側からの前記回路基板を通した照射が、前記電極により遮られていない領域の前記接着剤を硬化させる。例示されている光開始剤は、２４０ｎｍ〜３６５ｎｍの吸収ピーク波長を有する。可視光範囲で有効な光開始剤は記述されていない。好適な回路基板の基材としては、ポリイミド樹脂、ポリエステル樹脂などがある。
【００１１】
特開平７−１０６７２３号では、波長３５０〜４００ｎｍの光の透過率が５％以上のフレキシブル回路基板を通した、接着剤の硬化が開示されている。光硬化はベースフィルムを通して発生し、ベースフィルムには、ポリ（エーテルイミド）、ポリ（エーテルスルフォン）、ポリエチレンナフタレート、ポリエーテルエーテルケトン、ポリカーボネート、ポリエチレンテレフタレートなどを使用できる。
【００１２】
特公平７−８１１１４号では、ジケトン光開始剤およびジアルキルアミノベンゾフェノン光増感剤が存在する場合の、４３６ｎｍまでの照射波長を使用した半透過型基材を通した照射による、光硬化性接着剤の硬化が開示されている。
【００１３】
米国特許第５，６０７，９８５号では、光重合開始剤、脂肪属第三級アミン、およびラジカル重合性単量体を含む、可視光重合性接着剤のための光重合開始剤が開示されている。５１０ｎｍで１０％の光透過率と、４９０〜２００ｎｍで０％の光透過率をそれぞれ有する２つの不透明ガラス片を含むサンドイッチ構造の、ハロゲン化金属ランプへの２分間の露光による接着が記述されている。
【００１４】
米国特許第５，７９８，０１５号では、波長固有の増感剤を反応種生成光開始剤とともに提供し、前記波長固有増感剤を照射することによる、反応種（ラジカル）の生成が開示されている。この方法は、少なくとも２つの層を積層するために使用され、そのために、前記層の間に接着剤をコーティングし、照射を行って、それらの光重合を発生させる。ただし、前記層の少なくとも１つはセルロース系またはポリオレフィンの不織ウェブまたはフィルムであり、前記増感剤は、指定されたアリールケトアルケン部分の組のうちの１つであることが前提となっている。
【００１５】
コンパクトディスクやＣＤ−ＲＯＭなどの光学式記録ディスクは、多くの場合、高分子基材による２つ以上の層を含み、それらの層のそれぞれは記録層を有し、両方の記録層が相互に向かい合うように接着剤により接合される。通常、前記記録層は、不透明な金属箔を含む。前記箔の間の接着剤の均一な硬化は困難である。米国特許第５，３６０，６５２号では、そのような光学式記録ディスクが開示されており、その中では、前記接着剤は光硬化型接着剤である。前記２つのディスクを共に接着するために、前記記録媒体は前記ディスクの周辺まで達することのないように構成される。それにより、光照射はディスク周辺部の接着剤を迅速に硬化させ、前記記録媒体の下のマスキングされた接着剤は、前記照射領域内の光開始剤と接触することによってのみ硬化されるようになる。
【００１６】
米国特許第５，７８５，７９３号では、１つまたは２つの背合せの記録媒体層を有する光学式記録ディスクの片面または両面照射が開示されている。どちらの場合も、前記記録媒体とは反対の側に硬化型接着剤が使用される。したがって、前記接着剤を硬化させるには、光照射が少なくとも前記記録媒体を通過しなければならない。光学式記録ディスクの製造では、熱管理が問題となる。これは、ディスクは反りやすく、また、前記記録媒体は、通常は、アルミニウムなどの低融点金属だからである。前記硬化型接着剤に照射して前記ディスクを共に接合するには、キセノン閃光ランプが好ましい。
【００１７】
ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）基材の接合は、Ｄ．Ｓｋｉｎｎｅｒ，  ”ＵＶ  Ｃｕｒｉｎｇ  Ｔｈｒｏｕｇｈ  Ｓｅｍｉ−ｔｒａｎｓｐａｒｅｎｔ  Ｍａｔｅｒｉａｌｓ  −  Ｔｈｅ  Ｃｈａｌｌｅｎｇｅ  ｏｆ  ｔｈｅ  ＤＶＤ  Ｂｏｎｄｉｎｇ  Ｐｒｏｃｅｓｓ，”  ＲａｄＣｕｒｅ  Ｌｅｔｔｅｒ，  Ａｐｒｉｌ，  １９９８，  ｐ．５３〜５６で説明されており、この中では、波長が３２０〜３９０ｎｍの光が、ポリカーボネート基材上の４０ｎｍの厚さのアルミニウムコーティングを貫通することが示されている。これらの条件下での接着剤の硬化は開示されていない。
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかし、光重合による硬化は、設計者が利用できるどのような選択肢を使用しても阻害される場合がある。特に、ＵＶ成分を含む任意の光が、任意の光開始剤とともに作用して硬化を達成するという一般的な誤解がある。
【課題を解決するための手段】
【００１９】
本発明は、光硬化型システムの設計において使用するための装置および方法である。２つ以上のエレメントタイプフィールドを含むデータベースが提供される。各エレメントタイプフィールドは、エレメントのリストを有する。各エレメントは、名前により保存され、それぞれの波長応答フィールドを有し、前記波長応答フィールドには前記エレメントの波長応答に関する情報が保存される。好ましい実施形態では、前記データベースは、ウェブサイトを介してアクセスされるようにしてもよい。
【００２０】
前記データベースを使用して、光硬化システムを設計することができる。光硬化システムを構築するプロセスには、２つ以上のシステムエレメントタイプの選択が含まれる。前記光硬化システムエレメントは、光重合材料とともに作用するエレメントを選択するために使用できる。それらのエレメントには、光源、基材、および光開始剤、色素、増感剤、ＵＶ安定剤、顔料、充填材、鉱物、粒子状物質、可塑剤、熱安定剤、酸化防止剤などのエレメントタイプのうち、１つ以上が含まれていてもよい。任意のシステムエレメントが最初に選択されてもよい。第１のエレメントが選択された後は、実施可能な硬化システムを作成するために前記第１のエレメントとともに使用できる第２のエレメントが、可能な第２のエレメントのリストから選択される。前記第１と第２のエレメントが選択された後、望ましい場合は、実施可能な硬化システムを作成するために前記第１と第２のエレメントとともに使用できる第３のエレメントが、可能な第３のエレメントのリストから選択される。
【００２１】
本発明の他の好ましい実施形態では、波長特性を有する第１のシステムエレメントが選択されるようにしてもよい。次に、ユーザに提示される第２のエレメントのリストには、前記第１のシステムエレメントが予め決定されたレベルよりも上の応答を有する１つ以上の波長において、少なくとも一部の波長応答が予め決定されたレベルを超えるエレメントのみが含まれている。
【００２２】
前記データベースは、同じエレメントタイプの異なる例の波長応答を比較するために使用することもできる。例えば、２つの光源を比較することができる。更なる例として、基材を２つの光源と比較することもできる。
【発明を実施するための最良の形態】
【００２３】
本発明によるシステムの中心となるのは、光源、光開始剤、基材、色素、阻害剤、増感剤、ＵＶ／熱安定剤、着色剤、顔料、充填材、鉱物、粒子状物質、可塑剤などのシステムエレメントについての、および場合によっては、光硬化システムで使用される可能性があるその他の光重合性エレメントについての、選択された情報を保存するデータベースである。光重合システムで使用できる任意の材料を前記データベースに含めることが可能である。各エレメントは、少なくとも名前と波長範囲を使用して保存される。
【００２４】
図１は、可能な光源を示すデータベーステーブルの例である。各光源は名前を有し、また、前記光源により生成される、少なくとも最小のレベルで存在する光波長の説明を含む。さらに、前記波長範囲は、この場合、（最後の領域以外は）５０ｎｍの”領域”に分割され、各領域には文字が割り当てられている。等しくない幅の領域などの、その他の領域を定義することもでき、また、他の記号を使用することもできるが、どちらも本発明の主旨の範囲に含まれるものである。
【００２５】
【表１】
2005524885.tif 000003
【００２６】
これらの文字は、前記データベース内のエレメントを分類するために使用され、また、１つのエレメントの有効領域を他のエレメントの有効範囲と簡単に比較するために役立つ。光源が著しく放射を行う各波長領域について、その波長領域に対応する文字が前記データベース内に配置される。最後に、出力強度対波長を表す一組のデータ点が保存される。前記波長応答が、特定の波長領域内に存在するものとして識別されるほど十分強いかどうかを判定するために、図９のプロセスが使用される。前記プロセスは、〔付記３〕として添付したプログラムを使用して実装してもよい。
【００２７】
図２は、可能な光開始剤を示すデータベーステーブルの例である。各光開始剤は、名前、放射を吸収する波長、吸収の波長領域、および前記吸収の曲線のデータ点（詳細は図示せず）を使用して保存される。さらに、化学反応が開始される際にカチオン性またはフリーラジカルのどちらの反応が発生するかを識別する、硬化機構フィールドが含まれていてもよい。
【００２８】
図２Ａは、可能なＵＶ安定剤を示すデータベーステーブルの例である。各ＵＶ安定剤は、名前、放射を吸収する波長、吸収の波長領域、および前記吸収の曲線のデータ点（詳細は図示せず）を使用して保存される。
【００２９】
図３は、可能な基材を示すデータベーステーブルの例である。各基材は、名前、前記基材が放射の通過を許可する波長（透過波長）、前記透過波長に対して上述の波長テーブル内で識別される波長領域、および予め設定された厚さにおける前記基材の透過の曲線のデータ点（詳細は図示せず）が保存される。
【００３０】
前記データベースは、従来のデータベースソフトウェアを使用して構築してもよい。例えば、ロータス・ノーツTM（Ｌｏｔｕｓ  ＮｏｔｅｓTM）データベースソフトウェアを使用して、使用される各システムエレメントの個々の特性を作成してもよい。前記エレメントに関連する、波長応答データなどのデータは、例えば、マイクロソフト・エクセルTM（Ｍｉｃｒｏｓｏｆｔ  ＥｘｃｅｌTM）スプレッドシート内に保存してもよい。前記マイクロソフト・エクセルTMスプレッドシートは、前記ロータス・ノーツTM内の各エレメントの特性に添付することが可能である。
【００３１】
比較するエレメントの選択という基本プロセスを、図４Ａに示す。図示されているのは、コンポーネントを選択するプロセスと、それらのコンポーネントの波長応答グラフを表示するプロセスである。ブロック５０５で開始した後、ユーザは、ブロック５１０でエレメントを選択する。ブロック５１５で、ユーザは、他のエレメントを選択したいかどうかを決定する。選択したい場合、プロセスはブロック５１０にループバックする。選択したくない場合、プロセスは５２０に進み、そこでプロセスは、ブロック５２５のグラフ作成プロセスに移動する。
【００３２】
グラフへの情報を取得する方法を、図４Ｂに示す。このプロセスでは、ブロック５２５で、最初に選択されたエレメントについての前記波長応答データを、そのエレメントの特性から引き出す。ブロック５３０で、プロセスは、２つ以上のエレメントが選択されたかどうかを判定し、２つ以上のエレメントが選択されていない場合、プロセスはブロック５３５に進み、そこで、前記選択されたエレメントの波長応答のグラフ作成が行われる。２つ以上のエレメントが選択されている場合、プロセスはブロック５２５に戻り、そこで、第２のエレメントの波長応答データがそのエレメントの特性から収集される。プロセスは、再びプロセス５３０に進んで、第３のエレメントが存在するかどうかを判定し、存在しない場合は、ブロック５３５で、前記第１と第２のエレメントの波長応答のグラフを作成する。第３のエレメントが存在する場合、ブロック５２５で、そのエレメントの特性からそのエレメントの波長応答データが収集され、ブロック５３５で、３つの波長応答すべてのグラフが作成される。前記データのグラフを実際に作成するプロセスは、例えばジャバ（ｊａｖａ）アプレットを使用して、図１１と関連付けて作成される。この目的のためのジャバ（ｊａｖａ）アプレットの例を、〔付記５〕として添付する。
【００３３】
図４Ｃ〜４Ｇは、本発明を実装する第２の方法を示す。この方法は、図４Ａおよび図４Ｂで説明した方法のサブセットであり、実施可能な光硬化システムを作成する光源、光開始剤、および基材のシステムを選択するために使用してもよい。ブロック５で開始した後、プロセスは決定ブロック１０に進み、光源、基材、または光開始剤のうち、どれをユーザが最初に選択したいかを判定する。基材が選択された場合、プロセスは１００に移動する。光源が選択された場合、プロセスは２００に移動する。光開始剤が選択された場合、プロセスは３００に移動する。
【００３４】
図４Ｄは、１００から開始される基材選択プロセスを示す。決定ブロック１０５で、プロセスは、システムの他のコンポーネントがすでに選択されているかどうかを判定する。答えがはいの場合、プロセスは、ブロック１１０で、選択された他のコンポーネントと波長応答（スペクトル特性）が一致する基材のみを表示する。答えがいいえの場合、プロセスは、ブロック１１５で、システム内に保存されているすべての基材のリストを表示する。ブロック１２０で、ユーザは、使用する基材を選択しなければならない。ブロック１２５で、選択された基材の特性が、他のコンポーネントの選択に使用するために、メモリ（図示せず）に保存される。ブロック１３０で、次のコンポーネントの選択が開始される。ユーザが、次のコンポーネントとして光源をすでに選択している場合、プロセスは、ブロック１３５で、光開始剤がすでに選択されているかどうかを判定する。光開始剤がすでに選択されている場合、プロセスは４００に移動する。光開始剤がまだ選択されていない場合、プロセスはブロック３００に移動する。
【００３５】
ブロック１３０で光源が選択されていない場合、プロセスは、ブロック１４０で、光開始剤が選択されているかどうかを判定する。光開始剤が選択されている場合、プロセスはブロック２００に移動する。光開始剤が選択されていない場合、プロセスはブロック１４５に移動し、そこでユーザは、光開始剤または光源のどちらを選択するかを決定しなければならない。光開始剤が選択された場合、プロセスは３００に進む。光源が選択された場合、プロセスは２００に進む。
【００３６】
図４Ｅでは、プロセスは、２００で開始した後、決定ブロック２０５に移動し、そこで、他のコンポーネントがすでに選択されているかどうかを判定する。はいの場合、プロセスは、ブロック２１０で、すでに選択されているコンポーネントの波長とオーバーラップする（スペクトル特性が一致する）波長の光を生成する光源のみを表示する。いいえの場合、すべての光源が表示される。ブロック２２０で、ユーザは、光源を選択するよう求められる。ブロック２２５で、前記メモリが、選択された光源の特性を使用して更新され、光波長領域のオーバーラップが前記メモリ内で更新される。ブロック２３０で、プロセスは、基材がすでに選択されているかどうかを判定する。基材がすでに選択されていて、ブロック２３５で、光開始剤がまだ選択されていないと判定された場合、プロセスはブロック３００に移動する。基材がすでに選択されていて、ブロック２３５で、光開始剤が選択されていると判定された場合、プロセスは４００に移動する。ブロック２３０で、基材がまだ選択されていないと判定され、ブロック２４０で、光開始剤が選択されていると判定された場合、プロセスはブロック１００に移動する。ブロック２４０で、光開始剤が選択されていないと判定された場合、ユーザは、次に光開始剤を選択するか基材を選択するかを決定しなければならない。ユーザが光開始剤を選択した場合、プロセスはブロック３００に移動する。ユーザが基材を選択した場合、プロセスは１００に移動する。
【００３７】
図４Ｆでは、プロセスは、ブロック３００で開始した後、決定ブロック３０５に移動し、そこで、他のコンポーネントがすでに選択されているかどうかを判定する。はいの場合、プロセスは、ブロック３１０で、すでに選択されているコンポーネントの波長とオーバーラップする波長の光を吸収する光開始剤のみを表示する。いいえの場合、ブロック３１５で、すべての光開始剤が表示される。どちらの場合でも、プロセスはブロック３２０に移動し、そこで、ユーザは希望する光開始剤を選択する。ブロック３２５で、前記メモリが、選択された光開始剤の特性を使用して更新され、光波長領域のオーバーラップが前記メモリ内で更新される。プロセスは次に、ブロック３３０に移動し、基材がすでに選択されているかどうかを判定する。基材がすでに選択されている場合、プロセスはブロック３３５に移動して、光源がすでに選択されているかどうかを判定し、光源がすでに選択されている場合、プロセスは４００に移動し、光源がまだ選択されていない場合、プロセスは２００に移動する。ブロック３３０で、基板がまだ選択されていない場合、プロセスは、ブロック３４０で、光源がすでに選択されているかどうかを判定し、光源がすでに選択されている場合、プロセスは１００に移動する。光源がまだ選択されていない場合、プロセスはブロック３４５に移動し、そこでユーザは、光源または基材を選択するよう求められる。ユーザが光源を選択した場合、プロセスはブロック２００に移動する。ユーザが基材を選択した場合、プロセスはブロック１００に移動する。
【００３８】
所望する光硬化システム内のエレメントを選択するプロセスは、図４Ｃ〜Ｆのプロセスを使用することにより基本的には完成するが、図４Ｇのプロセスに示すように、選択されたエレメントの波長応答のグラフを作成して、前記エレメントの波長応答内のオーバーラップ領域のグラフ表示を入手しておくと便利な場合がある。ブロック４００で開始した後、プロセスは、ブロック４０５で、選択されたエレメントの波長応答を、同じ軸のペア上に表示する。これは、例えばマイクロソフト・エクセルTM（Ｍｉｃｒｏｓｏｆｔ  ＥｘｃｅｌTM）スプレッドシート内に保存されたデータを取り出して、グラフ表示することにより行ってもよい。このプロセスについては、以下の図１１でさらに詳しく説明する。
【００３９】
図５Ａ〜Ｃは、個々の光源の特性を、例として示すものである。前記特性内の情報は、ユーザによりデータベース内に入力される。特性情報には、エレメントの名前（ここでは、フュージョンＤバルブ（Ｆｕｓｉｏｎ  Ｄ  Ｂｕｌｂ））、関連する波長（ここでは、３００〜４００、５００〜６００ｎｍ）、波長領域（ここでは、Ｂ、Ｃ、Ｄ，Ｆ，およびＧ）、（光源の）相対強度対波長を示すグラフ、および最後に、放射データが含まれている。好ましい実施形態では、前記放射データは２００〜１０００ｎｍの波長のみに対するものであり、前記データは２００ｎｍで開始され、放射が発生する最大波長が特定される。この情報は、さまざまなコンポーネント間の比較が意味のあるものとなるようにするために、データを調節する際に重要になる。基材の特性も類似したものであるが、前記波長データが、前記基材を通過する、特定の波長における光の透過の程度を表すという点が異なる。光開始剤の特性も同様に類似したものであるが、前記波長データが、前記光開始剤に入る光の相対的な吸収レベルを表すという点が異なる。
【００４０】
図６Ａ〜Ｈは、前記データベースに含まれているエレメントから光硬化システムのコンポーネントを選択するための、本発明を実施するコンピュータのスクリーンショットを示すものである。図６Ａで、プロセスは、ユーザが基材、光源、または光開始剤のいずれかを選択することにより開始される。ここでは、ユーザは、基材を最初に選択するよう指示している。次に、図６Ｂで、基材の完全なリストがユーザに提示される。ここでは、ユーザは、ＢＴエポキシ（ＢＴ  Ｅｐｏｘｙ）の基材の使用を選択している。図６Ｃで、選択された第１のコンポーネントタイプ（基材）および特定のコンポーネント（ＢＴエポキシ（ＢＴ  Ｅｐｏｘｙ））が表示され、一方で、第２のコンポーネントタイプを選択する機会がユーザに与えられる。ここでは、ユーザは、光開始剤を選択している。図６Ｄで、ユーザには、ＢＴエポキシ（ＢＴ  Ｅｐｏｘｙ）の波長領域の少なくとも１つに一致する波長領域を有する光開始剤のみが提示される。ここでは、ユーザは、ディスパース・ブルー１（Ｄｉｓｐｅｒｓｅ  Ｂｌｕｅ  １）を光開始剤として選択している。光開始剤として、分散・ブルー１（Ｄｉｓｐｅｒｓｅ  Ｂｌｕｅ  １）やメチレン・ブルー（Ｍｅｔｈｙｌｅｎｅ  Ｂｌｕｅ）などの色素または増感剤が選択された場合、実施可能な光硬化システムを作成するには、他のコンポーネントを追加しなければならないことが当業者により認知されている。図６Ｅで、ユーザは、第３のコンポーネントタイプを選択するよう求められる。前記第１のコンポーネントタイプ、第１のコンポーネント、第２のコンポーネントタイプ、および第２のコンポーネントに関する情報が、ユーザに対して表示されていることに留意されたい。ここでは、ユーザは、第３のコンポーネントタイプとして光源を選択している。図６Ｆで、ユーザは、ブルーポイント（Ｂｌｕｅｐｏｉｎｔ）光源を選択している。
【００４１】
図６Ｇでは、オーバーレイ図がコンピュータにより作成されている。前記オーバーレイ図は、前記光硬化システムの各コンポーネントの波長応答をグラフ上に描画したものであり、このグラフ上で前記コンポーネントを比較することができる。一般に、光硬化システムは、前記３つのグラフがオーバーラップする波長内でのみ作用する。さらに、前記３つの曲線の下の共通領域が大きければ大きいほど、前記硬化システムはより効果的になる。図からわかるように、前記グラフは、インターネット・エクスプローラーTM（Ｉｎｔｅｒｎｅｔ  ＥｘｐｌｏｒｅｒTM）ソフトウェアなどの標準のウェブブラウザを使用して前記グラフを表示できるような形式で表示される。当業界でよく知られているその他のツールを、前記情報を表示するために使用してもよい。
【００４２】
図７Ａに、第２のオーバーレイ図を示す。ここでは、曲線７０３Ａにより表される基材と、曲線７０２Ａにより表される光源は、図６Ｈにおけるものと同じである。ただし、ここでの光開始剤は、曲線７０１Ａにより表されるメチレン・ブルー（Ｍｅｔｈｙｌｅｎｅ  Ｂｌｕｅ）である。３つの曲線がオーバーラップする領域は、約５２０ｎｍのＸから始まり、約７６０ｎｍのＹまで続く。前記曲線の下の共通領域が縦スケール上で１０を超える点はない。
【００４３】
図７Ｂに、第３のオーバーレイ図を示す。ここでは、基材は再び、曲線７０３Ｂにより表されるＢＴエポキシ（ＢＴ  Ｅｐｏｘｙ）である。光開始剤は再び、曲線７０１Ａにより表されるメチレン・ブルー（Ｍｅｔｈｙｌｅｎｅ  Ｂｌｕｅ）である。今回は、光源は、曲線７０２Ｂにより表される６３７ｎｍ  ＬＥＤアレイ（６３７ｎｍ  ＬＥＤ  ａｒｒａｙ）である。この場合、３つの曲線がオーバーラップする領域は、約５８０ｎｍのＸから始まり、約６９０ｎｍのＹで終わる。前記曲線の下の共通領域の最高値は約２０に達し、平均値は１０程度になると思われる。
【００４４】
図７Ｃに、第４のオーバーレイ図を示す。ここでは、基材は、曲線７０３Ｃにより表される、緑色のはんだマスク付きＦＲ４（ＦＲ４  ｗｉｔｈ  ｇｒｅｅｎ  ｓｏｌｄｅｒ  ｍａｓｋ）である。光開始剤は、ローズ・ベンガル（ｒｏｓｅ  ｂｅｎｇａｌ）であり、曲線７０１Ｃで表されている。光源は、５３８ｎｍ  ＬＥＤアレイ（５３８ｎｍ  ＬＥＤ  ａｒｒａｙ）である。ここでは、３つの曲線がオーバーラップする領域はかなり大きく、約３６０ｎｍから始まり、約６００ｎｍまで続いている。５００〜５７５ｎｍでは、前記オーバーラップは、３つのエレメントすべてのピーク領域内にある。
【００４５】
光硬化システムの設計の１つの目標は、硬化を発生させるために使用する光エネルギーの量を最小にすることであってもよい。これは、前記光開始剤が活性化されることが可能な領域内で、前記光開始剤にエネルギーが効率的に伝達されることを確実にすることにより達成される。これは、グラフでは、光源、光開始剤、および基材を表す曲線が大きくオーバーラップする領域で実現される。光の使用という観点から、どの組み合わせが最も効率的かを判定するには、３つの各コンポーネントシステムの曲線の下の共通面積を計算し、最も大きな共通面積を有するシステムが最も効率的であると見なす必要がある。これを行うための１つの方法は、前記共通曲線の下の台形を合計するという、よく知られたプロセスである。このプロセスを説明するフローチャートを、図８Ｄに示す。ブロック８０５Ｄで開始した後、プロセスは、ブロック８１０Ｄで、連続したデータ点を合計する。ブロック８１５Ｄで、前記連続したデータ点の合計は（ここでは、０．５を乗算することにより）二等分される。ブロック８２０Ｄでは、１つの決定をする必要がある。まだ合計されていないデータ点がある場合（この方法では、最後のデータ点は、台形を形成する更なる点が存在しないため、除外される）、ブロック８３０Ｄで現在の合計が保存され、プロセスは、ブロック８１０Ｄに戻って次のデータ点の組に移動する。ブロック８２０Ｄで、すべてのデータ点が合計されている場合、プロセスはブロック８２５Ｄに移動し、そこで、好ましい実施形態では、より有用な出力数を提供するために、前記合計は、予め決定された数により拡大または縮小される。ただし、前記拡大または縮小は、必須ではなく、一部の場合に有用なだけである。前記面積を計算するためのフォートラン（Ｆｏｒｔｒａｎ）プログラムを、例として〔付記１〕に添付する。
【００４６】
図６Ｈおよび図７Ａ〜Ｃで表される４つのオーバーレイのうち、最も効率的なシステムは、図７Ｃで表されるものである。これは、オーバーラップしている曲線の下の面積が最も大きいためである。最も効率の低いシステムは、図７Ａで表されるものである。このシステムは、硬化を作成するために（図７Ｃのシステムに比較して）長い時間を要する可能性がある。基材の厚さ、光源の強度、光開始剤からの光源の距離、および開始剤と光源の間に配置されている任意の材料が、光硬化システムの速度と効率に影響を及ぼすことに留意することが重要である。
【００４７】
２つ以上の同じコンポーネントのスペクトル特性を比較することが望ましい場合がある。図７Ｄに、２つの光源が比較のために選択されている、本発明による選択ページを示す。ここでは、デンタル・ブルー・ライト（Ｄｅｎｔａｌ  Ｂｌｕｅ  ｌｉｇｈｔ）およびフュージョンＤバルブ（Ｆｕｓｉｏｎ  Ｄ  Ｂｕｌｂ）が選択されている。図７Ｅでは、２つの光源のスペクトル特性が描かれており、デンタル・ブルー・ライト（Ｄｅｎｔａｌ  Ｂｌｕｅ  ｌｉｇｈｔ）は曲線７０２’Ｅにより、フュージョンＤバルブ（Ｆｕｓｉｏｎ  Ｄ  Ｂｕｌｂ）は曲線７０２Ｅにより表されている。これにより、より短い波長領域の光源が要望される場合は、フュージョンＤバルブ（Ｆｕｓｉｏｎ  Ｄ  Ｂｕｌｂ）がより良い選択肢であり、より長い波長のアプリケーションのためには、デンタル・ブルー・ライト（Ｄｅｎｔａｌ  Ｂｌｕｅ  ｌｉｇｈｔ）がより良い選択肢であるということが分かる。
【００４８】
図７Ｆでは、曲線７０３Ｆにより示されるダイヤモンド・グレード・シーティング（Ｄｉａｍｏｎｄ  Ｇｒａｄｅ  Ｓｈｅｅｔｉｎｇ）、および曲線７０３’Ｆにより表される３Ｍ  ＩＲフィルム（３Ｍ  ＩＲ  ｆｉｌｍ）という、２つの基材が比較されている。これにより、３Ｍ  ＩＲフィルム（３Ｍ  ＩＲ  ｆｉｌｍ）は、広範な波長にわたって良好な光透過を提供することがわかる。ダイヤモンド・グレード・シーティング（Ｄｉａｍｏｎｄ  Ｇｒａｄｅ  Ｓｈｅｅｔｉｎｇ）は、４００ｎｍを超える光源が選択された場合に使用できる。
【００４９】
図７Ｇでは、１つの基材が２つの光源と比較されている。これは、どちらの光源がより効率的に基材を通して光開始剤に光を提供するかを視覚的に判定することを試みるためである。ここでは、基板は、緑色のはんだマスク付きＦＲ４（ＦＲ４  ｗｉｔｈ  ｇｒｅｅｎ  ｓｏｌｄｅｒ  ｍａｓｋ）であり、曲線７０３Ｇにより表されている。５５８ｎｍ  ＬＥＤアレイ（５５８ｎｍ  ＬＥＤ  ａｒｒａｙ）光源は、曲線７０２Ｇにより表されており、６３７ｎｍ  ＬＥＤアレイ（６３７ｎｍ  ＬＥＤ  ａｒｒａｙ）は７０２’Ｇにより表されている。曲線がオーバーラップしている面積を見ると、５５８ｎｍ  ＬＥＤアレイ（５５８ｎｍ  ＬＥＤ  ａｒｒａｙ）は、この基材とオーバーラップする面積がかなり大きく、６３７ｎｍ  ＬＥＤアレイ（６３７ｎｍ  ＬＥＤ  ａｒｒａｙ）はそうではないことが分かる。６３７ｎｍ  ＬＥＤアレイ（６３７ｎｍ  ＬＥＤ  ａｒｒａｙ）をこの基板とともに使用すると、曲線の下のオーバーラップの量が小さいため、非常にゆっくりと硬化するシステムが作成されることになる。
【００５０】
図７Ｈは、データベースに保存されている、エレメントの特性を示すものである。ここでは、前記特性は、単独の光開始剤についてのものである。図から分かるように、多くのさまざまな情報が、前記特性に保存されている。光開始剤については、光開始剤の名前、好ましい溶媒、硬化機構（フリーラジカルやカチオン性など、成長する高分子鎖の伝播モード）、波長領域の記号、吸収波長特性、前記光開始剤の化学構造図、およびさまざまな波長における吸収の具体的な値を含むデータファイルへのリンクが、前記特性に含まれている。ここでは、前記データファイルは、マイクロソフト・エクセル（Ｍｉｃｒｏｓｏｆｔ  Ｅｘｃｅｌ）スプレッドシート内に保存された値のリストである。ただし、データのグラフ作成機能を有する任意のスプレッドシートプログラムを使用してもよい。図７Ｉは、同様に、第２のエレメント（ここでは光源）の特性を示す。光源の名前に加えて、放射波長の簡単な説明、波長領域の記号、相対強度波長特性、および相対強度値を保存したデータファイルが含まれている。望ましい場合は、前記光源の写真（図示せず）をさらに含めてもよい。図示していないが、基材の特性には、名前、透過波長の簡単な説明、波長領域の記号、相対透過率波長特性、および相対透過率値を保存するデータファイルが含まれ、場合によっては、前記基材の写真が含まれる。
【００５１】
意味のある比較を行うことができるように情報を提示するには、データ処理を行わなければならない。ここで説明する好ましい実施形態では、異なるエレメント特性は、前記エレメントの波長応答を表す異なる数のデータ点を有していてもよい。２つ以上のエレメントについて、前記曲線の下の面積を計算するには、予め決定された点における曲線の乗算が必要とされる。前記予め決定された点が、関連する波長応答値を有することを確実にするには、既存のデータ点の間での前記応答値の補間が必要とされる場合がある。これを達成するために、一組の離散データの点の間での補間プロセスが実装される。図８Ａに、本発明で使用できる補間プロセスを示す。８０５Ａで開始した後、プロセスは、ブロック８１０Ａで、ｘ軸およびｙ軸のデータ点を読み取る。次に、ブロック８１５Ｂで、プロセスは、読み取ったデータ点の数を判定する。次に、ブロック８２０Ａで、プロセスは、連続したデータ点のペア間の差を判定し、前記データ点の数の情報を使用して、前記連続したデータ点の間の任意の点について関数を計算する。次に、ブロック８２５Ａで、プロセスはこの情報を保存する。このプロセスを実装したプログラムは、〔付記１〕の一部として含まれている。他の好ましい実施形態では、各エレメントについての前記データベース特性は、前記エレメントの波長応答について、同じ数のデータ点を有し、前記データ点はすべて、同じ波長の組において取得される。
【００５２】
前記データ点の間のデータの連続性が計算された後は、図８Ｂに示すようなプロセスを使用して、前記基材および光開始剤のデータが共通のベースラインに合わせて調整される。ブロック８０５Ｂで開始した後、前記プロセスは、ブロック８１０Ｂで，前記データ点の組の中の最小値を判定する。次に、ブロック８１５Ａで、各データ点の値から前記最小値が減算される。前記新たに減算された値は、次に、保存される。このプロセスを実装したプログラムは、〔付記１〕の一部として含まれている。
【００５３】
前記ベースライニングプロセスが完了したら、次に、相対値を公平に比較できるように、光源についての前記データが正規化される。前記正規化のプロセスは、図８Ｃに示すプロセスに従って実装できる。ブロック８０５Ｃで開始した後、プロセスはブロック８１０Ｃに移動し、そこで、ｙ軸のデータ点が読み取られる。プロセスは、次に、ブロック８１５Ｃで、前記データ点の組から最大値を判定する。最後に、プロセスは、ブロック８２０Ｃで、各データ点を最大値で除算し、ブロック８２５Ｃで、前記除算の結果の値を保存する。このプロセスを実装したプログラムは、〔付記１〕の一部として含まれている。
【００５４】
図９は、波長スペクトルの特定領域内での大きな波長応答の存在を判定するプロセスのフローチャートである。ブロック９０５で開始した後、プロセスは、ブロック９１０で、選択されたエレメントの波長応答曲線の下の総面積を計算する。ブロック９１５で、前記波長スペクトルが領域に分割された後、前記プロセスは、前記波長応答曲線の各領域内の面積のパーセンテージを判定する。次に、ブロック９２０で、プロセスは、予め設定された基準（前記総面積のうち１領域内に存在する面積が占める予め設定されたパーセンテージなど）に基づいて、前記波長応答レベルが、記号を割り当てられるほど大きいかどうかを判定する。好ましい実施形態では、前記記号は前記波長領域を表すものである。ブロック９２５で、特定のエレメントに対して選択された任意の領域が、記号を割り当てられるべきではないかどうかを判定するための、一組の基準が識別されるようにしてもよい。例えば、特定のクラスの光開始剤は、２００〜３５０ｎｍの領域で大きな応答を有する場合があるが、それらの光開始剤は、通常使用される他の波長領域に、更に望ましい特性を有する場合がある。この場合、より短い波長領域は放棄されるようにしてもよい。ただし、このステップは、本発明による基本的なプロセスの拡張であり、本発明によるプロセスが作用するために必須のものではない。最後に、前記エレメントに対する残りの記号が、前記エレメントのためのデータベース内に入力される。
【００５５】
図１０は、本発明を実装することが可能なコンピュータおよびコンピュータネットワークのブロック図である。データベースコンピュータ１０１５は、パーソナルコンピュータであってもよく、前記パーソナルコンピュータ上にはデータベースが保存されていてもよい。パーソナルコンピュータなどのリモート端末が、インターネット１０１０を経由してデータベースコンピュータ１０１５に接続されてもよい。代替方法として、パーソナルコンピュータなどのリモート端末は、イントラネットやエクストラネットなどのプライベートネットワーク１０２０を経由してデータベースコンピュータ１０１５に接続されていてもよい。さらに他の方法では、パーソナルコンピュータであってもよいリモート端末１０３０が、モデム１０３５、電話回線１０４０、およびモデム１０４５を経由して前記データベースコンピュータに接続されていてもよい。最後に、パーソナルコンピュータであってもよいリモート端末１０５０が、内部ネットワーク１０５５を介して前記データベースコンピュータに接続されてもよい。前記データベースは、前記コンピュータ上のメモリ１０６０内に保存されていてもよいし、ＣＤ、フロッピーディスク、ｚｉｐディスク、またはその他の記憶媒体に保存され、ＣＤドライブ、フロッピーディスクドライブ、ｚｉｐドライブなどの媒体読取装置１０５５またはその他の媒体読取装置を介してアクセスされてもよい。
【００５６】
図１１は、前記データベースからデータを取得し、ユーザにより選択された１つ以上のシステムエレメントに関する情報を表示するプロセスを示すフローチャートである。ブロック１１００で介しした後、プロセスは、ブロック１１０５で、各エレメントについて渡されたパラメータからＸ座標を読み取る。次に、ブロック１１１０で、プロセスは、各システムエレメントについて渡されたパラメータから最大Ｙ座標を読み取る。次に、プロセスは、ブロック１１１５で、最も大きなＸ座標を判定する。次に、ブロック１１２０で、プロセスは、前記最大Ｙ座標からＹ座標の間隔を判定する。最後に、プロセスは、ブロック１１２５で、前記選択したエレメントの前記波長応答曲線を、Ｘ座標を同等のＹ座標に関連付けることにより、前記最も大きなＸ座標に比例するように描画する。このプロセスのＨＴＭＬによるサンプルプログラムを、付属書類に示す。
【００５７】
上記は、光硬化システムを作成するための、新規であり、自明でないツールの説明である。上記の説明は、本発明の作成方法および使用方法を説明することを目的としている。最初に添付した請求の範囲を通して、本願発明者らは本発明の範囲を規定する。
〔付記１〕
ベースライニング、正規化、補間を行い、次に、スペクトルの重なり積分を計算するためのプログラム
C      このプログラムは非標準のDO WHILEループを有する
INTEGER NPTS, NMAX, ROWS, ITER
INTEGER EOF1, FLERR1, FLERR2
INTEGER EOF2, FLERR3, FLERR4
INTEGER EOF3, FLERR5, FLERR6
INTEGER FLERR7
INTEGER i,j
CHARACTER*30 fnamel, fname2, fname3, fname4
CHARACTER*30 fname5, fname6, fname7
PARAMETER(NMAX=3500, LAMDA=601)
REAL x,xx1 (NMAX) ,yyl (NMAX),INTERV1
REAL xx2 (NMAX) ,yy2 (NMAX), INTERV2
REAL xx3 (NMAX), yy3 (NMAX),INTERV3 
REAL yil (NMAX), yi2 (NMAX), yi3 (NMAX), yc (NMAX) 
REAL area 
CHARACTER*1 SUBSTR, INITAR, LIGHT, INTMED
FLERR1=0 
FLERR2=0 
FLERR3=0 
FLERR4=0 
FLERR5=0 
FLERR6=0 
FLERR7=0
EOF1=0
EOF2=0
EOF3=0
INTERV1=0
INTERV2=0
INTERV3=0
area=0
write(*,*) ‘Do you wish to output intermediate files? (Y/N)’
read(*,’(A)’) INTMED
write(*,*) ‘Do you wish to process a substrate file? (Y/N)’ 
read(*,’(A)’) SUBSTR
IF ((SUBSTR.EQ.’Y’) .OR. (SUBSTR.EQ.’y’)) THEN
ITER=0
do 5 ITER=1, NMAX
xx1 (ITER)=0
yy1 (ITER)=0
yi1 (ITER)=0
5      continue
write(*,*) ‘Enter the name of the input substrate file:’
read(*,’ (A)’) fnamel
open (UNIT=11,FILE=fnamel,STATUS=’OLD’,IOSTAT=FLERR1,ERR=101)
ROWS=0
do while  ((EOF1.EQ.0) .AND. (ROWS.LT.NMAX))
ROWS=ROWS+1
Read (11,*,IOSTAT=EOF1) xx1 (ROWS), yy1 (ROWS)
end do
close (UNIT=11)
NPTS=0
IF (EOF1.NE.0) THEN
NPTS=ROWS-1
write(*,’(I4,1X,Al2)’) NPTS, ‘points read.’
ELSE
NPTS=ROWS 
write(*,’(A28, I4, A12)’) ‘Too many data points! First’,
+                           NMAX,’ points read…’
END IF
call baseln(yy1,NPTS)
IF ((INTMED.EQ.’Y’) .OR. (INTMED.EQ.’y’)) THEN
write(*,*) ‘Enter the name of the output substrate file:’
read(*,’ (A)’) fname2 
open (UNIT=12,FILE=fname2,STATUS=’NEW’,IOSTAT=FLERR2,ERR=102)
write(*,*) ‘Writing data…’ 
END IF
x=0
i=0
j=0
do 12 i=1, LAMDA
x= (i-1)+200 
call locate(xx1,NPTS,x,j)
if ((j.eq.0). OR. (j.eq.NPTS)) then 
INTERV1=0
else
INTERV1= ((yyl(j+l)-yyl(j)) / (xx1(j+l) - xx1(j))) * (x-xxl(j))
+             +yyl(j)
end if
yi1 (i)=INTERV1
IF ((INTMED.EQ.’Y’) .OR. (INTMED.EQ.’y’)) THEN
if ((j.eq.0) .OR. (j.eq.NPTS)) then
GO TO 12 
else
write(12,’(1x, f7.2,i6,3f12.2)’)x,j,xxl(j),xxl(j+1),
+             INTERV1
endif
END IF
12            continue
IF ((INTMED.EQ.’Y’) .OR. (INTMED.EQ.’y’)) THEN
close (UNIT=12)
END IF
ELSE
ITER=0
do 14 ITER=1, LAMDA
yi1 (ITER) =1
14                   continue
ENDIF
write(*,*) ‘Do you wish to process an initiator file? (Y/N)’
read(*,’(A)’) INITAR
IF ((INITAR.EQ.’Y’) .OR. (INITAR.EQ.’y’)) THEN
ITER=0
do 15 ITER=1,NMAX
xx2 (ITER) =0
yy2  (ITER) =0
yi2 (ITER) =0
15            continue
write(*,*) ‘Enter the name of the initiator file:’
read(*,’(A)’) fname3
open (UNIT=13,FILE=fname3,STATUS=’OLD’,IOSTAT=FLERR3,ERR=103)
ROWS=0
do while ((EOF2.EQ.0) .AND. (ROWS.LT.NMAX))
ROWS=ROWS+1 
read(13,*,IOSTAT=EOF2) xx2 (ROWS), yy2 (ROWS)
end do
close (UNIT=13) 
NPTS=0
IF (EOF2.NE.0) THEN 
NPTS=ROWS-1 
write(*,1(14,1X,A12)’) NPTS,’points read.’
ELSE 
NPTS=ROWS 
write (*,’(A28,I4,A12)’) ‘Too many data points! First ‘,
+                           NMAX,’ points read…’
END IF
call baseln (yy2,NPTS)
IF ((INTMED.EQ.’Y’).OR. (INTMED.EQ.’y’)) THEN
write(*,*) ‘Enter the name of the output initiator file: ‘
read(*,’(A)’) fname4 
open (UNIT=14,FILE=fname4,STATUS=’NEW’,IOSTAT=FLERR4,ERR=104) 
write(*,*) ‘Writing data…’ 
END IF
x=0
i=0
j=0
do 22 i=1,LAMDA
x= (i-1)+200 
call locate (xx2,NPTS,x,j)
if ((j.eq.0).OR. (j.eq.NPTS)) then
INTERV2=0
else
INTERV2= ((yy2(j+l)-yy2(j)) / (xx2(j+l) - xx2 (j))) * (x-xx2 (j))
+                    +yy2 (j)
end if
yi2 (i)=INTERV2
IF ((INTMED.EQ.’Y’) .OR. (INTMED.EQ.’y’)) THEN
if ((j.eq.0) .OR. (j.eq.NPTS)) then
GO TO 22 
else
write(14,’(1x,f7.2,i6,3f12.2)’) x, j, xx2 (j),xx2 (j+1),
+                           INTERV2
endif
END IF
22            continue
IF ((INTMED.EQ.’Y’).OR. (INTMED.EQ.’y’)) THEN
close (UNIT=14)
END IF
ELSE
ITER=0
do 24 ITER=1,LAMDA
yi2 (ITER)=1
24            continue
ENDIF
write(*,*) ‘Do you wish to process a light source file? (Y/N)’
read(*,’(A)’) LIGHT
IF ((LIGHT.EQ.’Y’).OR. (LIGHT.EQ.’y’)) THEN
ITER=0
do 25 ITER=1,NMAX
xx3 (ITER) =0
yy3 (ITER) =0
yi3 (ITER)=0
25            continue
write(*,*) ‘Enter the name of the light source file:’
read(*,’ (A)’) fname5
open (UNIT=15,FILE=fname5,STATUS=’OLD’,IOSTAT=FLERR5,ERR=105)
ROWS=0
do while ((EOF3.EQ.0) .AND. (ROWS.LT.NMAX)) 
ROWS=ROWS+1 
read(15,*,IOSTAT=EOF3) xx3 (ROWS), yy3 (ROWS) 
end do 
close (UNIT=15) 
NPTS=0
IF (EOF3.NE.0) THEN 
NPTS=ROWS-1 
write(*,1 (14,1X,A12)1) NPTS, ‘points read.’ 
ELSE 
NPTS=ROWS 
write (*,’ (A28,I4,A12)’) ‘Too many data points! First ‘,
+                           NMAX,’ points read…’
END IF
call norm (yy3,NPTS)
IF ((INTMED.EQ.’Y’).OR. (INTMED.EQ.’y’)) THEN
write(*,*) ‘Enter the name of the light source output file:’ 
read(*,’ (A)’) fname6 
open (UNIT=16,FILE=fname6,STATUS=’NEW’,IOSTAT=FLERR6,ERR=106) 
write(*,*) ‘Writing data…’
END IF
x=0
i=0
j=0
do 32 i=1,LAMDA
x= (i-1)+200
call locate (xx3,NPTS,x,j)
if ((j.eq.0) .OR. (j.eq.NPTS)) then
INTERV3=0
else
INTERV3= ((yy3(j+l) - yy3(j)) / (xx3(j+l) - xx3(j))) * (x-xx3 (j))
+                                         +yy3 (j)
end if
yi3 (i) =INTERV3
IF ((INTMED.EQ.’Y’) .OR. (INTMED.EQ.’y’)) THEN
if ((j.eq.0).OR. (j.eq.NPTS)) then
GO TO 32 
else
write(16,’(1x,f7.2,i6,3f12.2)’) x,j,xx3 (j),xx3 (j+1),
+                                         INTERV3
endif
END IF
32            continue
IF ((INTMED.EQ.’Y’) .OR. (INTMED.EQ.’y’)) THEN
close (UNIT=16)
END IF
ELSE
ITER=0
do 34 ITER=1,LAMDA
yi3 (ITER) -1
34                   continue
ENDIF
ITER=0
DO 40 ITER=1,LAMDA
yc (ITER)=0
40            CONTINUE
DO 55 i=1,LAMDA
yc (i) -yi1 (i)*yi2 (i)*yi3 (i)
55            CONTINUE
write(*,*) ‘Enter the filename for cumulative data:’
read (*,’(A)’) fname7
open (UNIT=17,FILE=fname7,STATUS=’NEW’,IOSTAT=FLERR7,ERR=107) 
write(*,*) ‘Writing data…’
CALL integ (yc,LAMDA,area)
write(*,’(1X,A26,Al1,F12.6)’) ‘The area under the product’,
+’curve is:’,area
write(17,’(1X,A26,A11,F12.6)’) ‘The area under the product’,
+’ curve is: ‘,area
DO 60 i=1,LAMDA
x= (i-1)+200
write(17,’ (1X,F6.1,2F11.2,F11.4,E15.6)’) x,yi1 (i),yi2 (i),
+                           yi3 (i) ,yc (i)
60            CONTINUE
close (UNIT=17)
101    IF (FLERR1 .NE. 0) THEN
write(*,*) ‘Unable to open substrate file!’
END IF
102    IF (FLERR2 .NE. 0) THEN
write(*,*) ‘Unable to create substrate output file!’
END IF
103    IF (FLERR3 .NE. 0) THEN
write(*,*) ‘Unable to open initiator file!’
END IF
104    IF (FLERR4 .NE. 0) THEN
write(*,*) ‘Unable to create initiator output file!’
END IF
105    IF (FLERR6 .NE. 0) THEN
write(*,*) ‘Unable to open light source file!’
END IF
106    IF (FLERR6 .NE. 0) THEN
write(*,*) ‘Unable to create light source output file!’
END IF
107    IF (FLERR7 .NE. 0) THEN
write(*,*) ‘Unable to create cumulative output file!’
END IF
write(*,*) ‘Program exiting normally…’
END
SUBROUTINE locate (xx,n,x,j)
INTEGER j,n
REAL x,xx (n)
INTEGER j1,jm,ju
J1=0
ju=n+l
10            if (ju-j1.gt.1) then
jm= (ju+j1) /2
if ((xx (n).ge.xx (1)) .eqv. (x.ge.xx (jm))) then 
j1=j m
else 
ju=jm
endif 
goto 10
endif 
if (x.eq.xx (1))then
j=1 
else if (x.eq.xx(n))then
j=n-1 
else
j=j1
endif 
return END
SUBROUTINE baseln (yy,N)
INTEGER N, i
REAL yy (N), minno, temp
minno=yy (1) 
i=0 
temp=0
DO 10 i=2,N
IF (yy (i) .LT. minno) THEN
minno=yy (i)
END IF
10            CONTINUE
i=0
DO 20 i=1,N
temp=yy (i)-minno
yy (i)=temp
20            CONTINUE
END
SUBROUTINE norm (yy,N)
INTEGER N, i
REAL yy (N),maxno,temp
maxno=yy (1)
i=0
temp=0
DO 5 i=2,N
IF (yy(i).GT.maxno) THEN
maxno=yy (i)
END IF
5             CONTINUE
i=0
DO 10, i=1,N
temp=yy (i)/maxno
yy (i)=temp
10            CONTINUE
END
SUBROUTINE integ (yy,N,area)
INTEGER N,i
REAL yy (N),sum,area
i=0 
sum=0 
area=0
DO 10 i=1,N-1
sum=sum+ (yy(i)+yy (i+1))*0.5
10            CONTINUE
area=sum/100000
END
〔付記２〕
不均一に間隔があけられた表形式データから、均一に間隔があけられたｃｓｖデータを作成するプログラム
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NMAX 3501
#define STRMAX 151
#define FNMAX 81
#define OUTPTS 801
void locate(float xx[], unsigned long n, float x, unsigned long *j);
void norm(float xx[], unsigned long int n);
void baseline(float xx[], unsigned long int n);
int main()
｛
char fnamein(FNMAX], string[STRMAX], *str, ptr, fnameout[FNMAX], another;
float xdata(NMAX], ydata[NMAX], xinter[OUTPTS+1], yinter[OUTPTS+1];
unsigned long int index, i, j;
int choice;
FILE *fpin, *fpout;
another = 'Y';
do ｛
for (i = 0; i <= NMAX-1; i++) ｛
xdata [i] = 0;
ydata [i] = 0;
｝;
for (i = 0; i <= OUTPTS; i++) ｛
xinter [i] = 0;
yinter (i] = 0;
｝;
printf("Enter name of the input file (80 chars max, no spaces): ");
scanf("%s", fnamein);
printf("File name is %s\n",fnamein);
fpin = fopen(fnamein,"r");
if (fpin == NULL) ｛
printf("Cannot open %s\n",fnamein); 
exit(1);
｝; 
index = 1;
while (1) ｛
str_ptr = fgets(string,STRMAX-l,fpin);
if(str_ptr == NULL)
break;
if (index == NMAX)
break;
sscanf (string, "%f %f" , &xdata [index] , &ydata [index]);
index++;
｝;
f close (fpin);
if((index == NMAX) && (str_ptr != NULL)) ｛
index--;
printf("Too many data points! Using first %d points only...\n",index);
｝
else ｛
index--;
printf("%d points read...\n",index);
｝;
printf("\nEnter option for data processing\n");
printf("1: Normalize the data after interpolation\n");
printf("2: Baseline the data after interpolation\n");
printf("3: First interpolate, then baseline and finally ");
printf("normalize the data\n");
printf("4: Simply interpolate the data\n");
printf("5: Simply normalize the data\n");
printf("6: Simply baseline the data\n");
printf("or\n");
printf("0: to exit the program without any data processing\n");
printf("\nEnter option (0-6): ");
scanf("%d",&choice);
if (choice == 0)
exit(2);
printf("\nEnter name of the output file (80 chars max, no spaces): ");
scanf("%s",fnameout);
printf("File name is %s\n",fnameout);
fpout = fopen(fnameout,"w");
if (fpout == NULL) ｛
printf("Cannot open %s\n",fnameout);
exit(3);
｝;
for(i = 1; i <= OUTPTS; i++) ｛
xinter[i] = 200+((float)i-1);
locate(xdata,index,xinter[i],&j);
if ((j == 0) || (j == index))
yinter[i] = 0;
else
yinter [i] = (xinter [i] -xdata [j ]) * ((ydata (j+l] -ydata [j ]) /
(xdata [j+l] -xdata [j ])) +ydata [j ] ;
｝;
if ((choice == 2) || (choice == 3)) ｛
baseline(yinter,OUTPTS);
｝;
if (choice == 6) ｛
baseline(ydata,index);
｝;
if ((choice == 1) || (choice == 3)) ｛
norm(yinter,OUTPTS);
｝;
if (choice == 5) ｛
norm(ydata,index);
｝;
if ((choice >= 1) && (choice <= 4)) ｛
for (i = 1; i <= OUTPTS-1; i++) ｛
fprintf(fpout,"%13.5E, ",yinter[i]);
｝; 
fprintf(fpout,"%13.5E\n",yinter[OUTPTS]);
｝
else
if ((choice == 5) || (choice == 6)) ｛
for (i = 1; i <= index-1; i++)
fprintf(fpout,"%13.5E, ",ydata[i]);
｝;
fprintf(fpout,"%13.5E\n",ydata[index]);
｝;
fclose(fpout);
printf("File %s written.\n\n",fnameout);
printf("Process another file (Y/y/N/n)?: ");
scanf("%ls",&another);
｝      while (another == 'Y' || another == 'y');
printf("Exiting...\n");
return(0);
｝
void locate(float xx[], unsigned long n, float x, unsigned long *j)
｛
unsigned long ju,jm,jl;
int ascnd;
jl=0;
ju=n+l;
ascnd=(xx[n] >= xx[1]);
while (ju-jl > 1) ｛
jm=(ju+j l) >> 1;
if (x >= xx [j m] == ascnd)
jl=jm;
else
ju=jm;
｝
if (x == xx [1] )
*j=1;
else if (x == xx[n])
*j=n-1;
else
*j=jl;
｝
void norm(float xx[], unsigned long int n)
｛
unsigned long int i;
float maxdata, temp;
maxdata = xx [1] ;
temp = 0;
for(i = 2; i <= n; i++) ｛
if(xx[i] > maxdata)
maxdata = xx[i];
｝;
for(i = 1; i <= n; i++) ｛
temp = xx[i]/maxdata;
xx [i] = temp;
｝;
｝
void baseline(float xx[], unsigned long int n)
｛
unsigned long int i;
float mindata, temp;
mindata = xx [ 1 ] ;
temp = 0;
for(i = 2; i <= n; i++) ｛
if(xx[i] < mindata)
mindata = xx [i] ;
｝;
for(i = 1; i <= n; i++) ｛
temp = xx(i] - mindata;
xx(i] = temp;
｝;
｝
〔付記３〕
領域内の波長応答の強度を判定するプログラム
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NMAX 3501
#define STRMAX 151
#define FNMAX 81
#define OUTPTS 801
void locate(float xx[], unsigned long n, float x, unsigned long *j);
void norm(float xx[], unsigned long int n);
void baseline(float xx[], unsigned long int n);
void partinteg(float xx[], unsigned long int x1, unsigned long int x2, 
float *area);
int main()
｛
char fnamein[FNMAX], string[STRMAX], *str_ptr, fnameout[FNMAX], another;
float xdata[NMAX], ydata[NMAX], xinter[OUTPTS+1], yinter[OUTPTS+1];
float totalarea,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK;
unsigned long int index, i, j;
int choice;
FILE *fpin, *fpout;
another = 'Y';
printf("Contact Rajdeep S. Kalgutkar, SRC-CRC 7-3003, for further info\n");
do ｛
for (i = 0; i <= NMAX-1; i++) ｛
xdata[i]=0;
ydata[i]=0;
｝;
for (i = 0; i <= OUTPTS; i++) ｛
xinter[i]=0;
yinter[i]=0;
｝;
printf("\nEnter name of the input file (80 chars max, no spaces): ");
scanf("%s",fnamein);
printf("File name is %s\n",fnamein);
fpin = fopen(fnamein,"r");
if (fpin == NULL) ｛
printf("Cannot open %s. Exiting...\n",fnamein);
exit(1);
｝;
index = 1;
while (1) ｛
str_ptr = fgets(string,STRMAX-1,fpin);
if(str_ptr == NULL)
break;
if(index == NMAX)
break;
sscanf(string,"%f %f",&xdata[index],&ydata[index]);
index++;
｝;
fclose(fpin);
if((index == NMAX) && (str_ptr != NULL)) ｛
index--;
printf("Too many data points! Using first %d points only...\n",index);
｝
else ｛
index--;
printf("%d points read...\n",index);
｝;
printf("\nEnter option for data processing\n");
printf("1: Simply interpolate the data\n");
printf("2: Normalize the data after interpolation\n");
printf("3: Baseline the data after interpolation\n");
printf("4: First interpolate, then baseline and finally ");
printf("normalize the data\n");
printf("or\n");
printf("0: to exit the program without any data processing\n");
printf("\nEnter option (0-4): ");
scanf("%d",&choice);
if (choice == 0)
exit(2);
printf("\nEnter name of the output file (80 chars max, no spaces): ");
scanf("%s",fnameout);
printf("File name is %s\n",fnameout);
fpout = fopen(fnameout,"w");
if (fpout == NULL)｛
printf("Cannot open %s. Exiting...\n",fnameout);
exit(3);
｝;
for(i = 1; i <= OUTPTS; i++) ｛
xinter[i] = 200+((float)i-1);
locate(xdata,index,xinter[i],&j);
if((j == 0) || (j == index))
yinter[i] = 0;
else
yinter[i]=(xinter[i]-xdata[j])*((ydata[j+1]-ydata[j])/
(xdata[j+1]-xdata[j]))+ydata[j];
｝;
if ((choice == 3) || (choice == 4)) ｛
baseline(yinter,OUTPTS);
｝;
if ((choice == 2) || (choice == 4)) ｛
norm(yinter,OUTPTS);
｝;
partinteg(yinter,51,OUTPTS,&totalarea);
partinteg(yinter,51,101,&aA);
partinteg(yinter,101,151,&aB);
partinteg(yinter,151,201,&aC);
partinteg(yinter,201,251,&aD);
partinteg(yinter,251,301,&aE);
partinteg(yinter,301,351,&aF);
partinteg(yinter,351,401,&aG);
partinteg(yinter,401,451,&aH);
partinteg(yinter,451,501,&aI);
partinteg(yinter,501,551,&aJ);
partinteg(yinter,551,OUTPTS,&aK);
fprintf(fpout,"The total area is: %14.6E\n",totalarea);
fprintf(fpout,"The area under region A is: %6.2f%%\n",aA*100/totalarea);
fprintf(fpout,"The area under region B is: %6.2f%%\n",aB*100/totalarea);
fprintf(fpout,"The area under region C is: %6.2f%%\n",aC*100/totalarea);
fprintf(fpout,"The area under region D is: %6.2f%%\n",aD*100/totalarea);
fprintf(fpout,"The area under region E is: %6.2f%%\n",aE*100/totalarea);
fprintf(fpout,"The area under region F is: %6.2f%%\n",aF*100/totalarea);
fprintf(fpout,"The area under region G is: %6.2f%%\n",aG*100/totalarea);
fprintf(fpout,"The area under region H is: %6.2f%%\n",aH*100/totalarea);
fprintf(fpout,"The area under region I is: %6.2f%%\n",aI*100/totalarea);
fprintf(fpout,"The area under region J is: %6.2f%%\n",aJ*100/totalarea);
fprintf(fpout,"The area under region K is: %6.2f%%\n\n",aK*100/totalarea);
for (i = 1; i <= OUTPTS-1; i++) ｛
fprintf(fpout,"%13.5E, ",yinter[i]);
｝;
fprintf(fpout,"%13.5E\n",yinter[i]);
fclose(fpout);
printf("File %s written.\n\n",fnameout);
printf("Process another file (Y/y/N/n)?: ");
scanf("%1s",&another);
｝ while (another == 'Y' || another == 'y');
printf("Exiting...\n");
return(0);
｝
void locate(float xx[], unsigned long n, float x, unsigned long *j)
｛
unsigned long ju,jm,jl;
int ascnd;
jl=0;
ju=n+1;
ascnd=(xx[n] >= xx[1]);
while (ju-jl > 1) ｛
jm=(ju+jl) >> 1;
if (x >= xx[jm] == ascnd)
jl=jm;
else
ju=jm;
｝
if (x == xx[1])
*j=1;
else if(x == xx[n])
*j=n-1;
else
*j=jl;
｝
void norm(float xx[], unsigned long int n)
｛
unsigned long int i;
float maxdata, temp;
maxdata = xx[1];
temp = 0;
for(i = 2; i <= n; i++) ｛
if(xx[i] > maxdata)
maxdata = xx[i];
｝;
for(i = 1; i <= n; i++) ｛
temp = xx[i]/maxdata;
xx[i] = temp;
｝;
｝
void baseline(float xx[], unsigned long int n)
｛
unsigned long int i;
float mindata, temp;
mindata = xx[1];
temp = 0;
for(i = 2; i <= n; i++) ｛
if(xx[i] < mindata)
mindata = xx[i];
｝;
for(i = 1; i <= n; i++) ｛
temp = xx[i] - mindata;
xx[i] = temp;
｝;
｝
void partinteg(float xx[], unsigned long int x1, unsigned long int x2, 
float *area)
｛
unsigned long int i;
float temp;
temp = 0;
for(i = x1; i <= x2 - 1; i++) ｛
temp = temp + (xx[i] + xx[i+1])/2;
｝;
*area = temp;
｝
〔付記４〕
SRC Curing Resource dB 4 Query Select2
Sub Initialize
Dim ses ses As New NotesSession
Dim db_db As NotesDatabase
Dim view view As NotesView
Dim note _notel As NotesDocument, note_note2 As NotesDocument
Dim i cnt As Integer, i add As Integer
Set db db =ses ses.CurrentDatabase
Set note notel=ses ses.DocumentContext
Redim Preserve arr WavelengthRegion(0) air WavelengthRegion(0) _ “‘
If note_notel.Selectionl(0) <> ““ Or rwte_notel.Selection2(O) <> ““ Then
If note notel.Selectionl(0) <> ““ Then
Set view_view = db_db.GetView(“By NoteID”)
If note notel.Selection2(0) <> “‘Then
Set note_note2=view_view.GetDocumentByKey(Right(“00000000” & note_notel.Selection2(01, 8))
Else
Set note note2 = view_view.GetDocumentByKey(Right(“00000000” & note_notel.Selectionl(0), $))
End If
If Not (note_note2ls Nothing) Then
If note note2.Hasltem(‘WavelengthRegion”) Then
i_cnt = -1
Forall vals In note_note2.WavelengthRegion
If vals <> ““ Then
i_cnt = i_cnt + 1
Redim Preserve arr WavelengthRegion(i_cnt)
arr_WavelengthRegion(i cnt) = vals
End If
End Forall
End If
End If End If
If note notel.Type(0) = “S” Then
Set view-View = db db.GetView(“Substrate”)
Elseif note _notel.Type(O) = “P” Then
Set view-view = db_db.GetView(“InitiatorSensitizer”) Else
Set view-view = db_db.GetView(“LightSource”) End If
‘ Set note note2 =view-view. GetFirstDocument
i_cnt = -1
Do While Not (note note2 Is Nothing)
If note_note2.Name(0) <> ““ Then
L add = True
If arr WavelengthRegion(0) <> ““ Then
Ladd = False
Forall valsl In note _note2.WavelengthRegion
Forall vals2 In arr_WavelengthRegion
If valsl = vals2 Then
i_add = True
Exit Forall
End If
End Forall
If Ladd Then
Exit Forall
End If
End Forall
End If
If L add Then
i cnt = i cnt + 1
Redim Preserve arr_names(i cnt)
arr names(i_cnt) = note_note2.Name(O)
End If
End It
Set note note2 = view-view. GetNextDocument(note_note2)
Loop
note          _notel .Names = arr_names
End Sub
SRC Curing Resource dB 4 Query Select2 Save Agent
Sub Initialize
Dim ses sesAs New NotesSession
Dim db_db As NotesDatabase
Dim view view As NotesView
Dim note_notel As NotesDocument, note_note2As NotesDocument
Set db_db = ses ses.CurrentDatabase
Set note note) = ses ses.DocumentContext
Select Case note_notel.Type(0)
Case “S”
Set view view = db_db.GetView(“(Substrate)”)
Set note_note2=view view.GetDocumentByKey(note_notel.Substrate(0))
Case “P”
Set view-view db-db.GetView(“(InitiatorSensitizer)”)
Set note note2 -view view.GetDocumentByKey(note notel.Photolnitiator(O))
Case “L”
Set view-view =db db.GetView(“(LightSource)”)
Set note_note2 = view_view.GetDocumentByKey(note_notel.LightSource(0))
End Select
If note_notel.MexWction(0) = “Add” Then
If note_notel.Selectionl (0) <> ““ Then
Print “[!” + note notel.dbname(O) + “/QuerySelectionl?OpenForm&” & note_notel.Selectionl (0) & “&” & note_note2.Noteld & “)”
Else
Print “[!” + note notel.dbname(0) + “/QuerySelectionl?OpenForm&” & note_note2.Noteld & “]”
End If Elseif note notel.NextAction(O) = “Separate” Then
If note_notel.Selectionl(0) <> ““ Then
Print “[/” + note notel.dbname(O) + “/QuerySelectionl?OpenForm&” & note_notel.Selectionl(O) & “&” & note note2.Noteld & “)”
Else
Print “[!” + note notel.dbname(0) + “/QuerySelectionl?OpenForm&” & note_note2.Noteld & “)”
End If
Elseif note _notel.NextAction(O) = “Separate” Then
If note _notel.Selection2(0) <> ““ Then
Print “[/” + note notel.dbname(O) + “/QuerySelectionResults?OpenForm&” & note_notel.Selection) (0) & “&” & note note).Selection2(0) & _
“&” & note_note2.Noteld & “]”
Elseif note notel.Selectionl(0) <> ““ Then
Print- “[“ + note notel.dbname(0) + “/QuerySelectionResults?OpenForm&” & note_notel.Selectionl (0) & “&” & note note2.Noteld & “)”
Else
Print “[/” + note_notel.dbname(O) + “lQuerySelectionResults?OpenForm&” & note_noteMoteld & “]”
End If
Else
If note notel.Selection2(0) <> ““ Then
Print “[/” + note_notel.dbname(0) + “/QuerySelectionOverlayResults?OpenForm&” & note_notel.Selectionl(0) & “&” & note_notel.Selection2(0) &
“&” & note_note2.Noteld & “)”
Elseif note_notel.Selectionl(0) <> ““Then
Print “[/” + note_notel.dbname(O) + “/QuerySelectionOverlayResults?OpenForm&” & note_notel.Selection) (0) & “&” & note note2.Moteld & “)”
Else
Print “[/” + note_notel.dbname(O) + “lQuerySelectionOverlayResults?OpenForm&” & note_note2.Noteld & “)”
End If
End If
End Sub
SRC Curing Resource dB 4 Query Overlay Open Agent
Sub Initialize
pim ses_ses As New NotesSession
Dim db db As NotesDatabase
Dim view-view As NotesView
Dim note notel As NotesDocument. note_note2As NotesDocument
Dim i_cntAs Integer, i addAs Integer
Set db db = ses ses.CurrentDatabase
Set note notel =ses ses.DocumentContext
S et view-view = db_db. G etView(“By N otel D “)
If note notel.Selectionl(0) <> ““ Then
S et note-note2 = view-view. G etD ocumentByKey(R fight(“00000000” + note_notel. S election”! (0). 8))
If Not (note _note2 Is Nothing) Then
note _notel.datal = note_note2.EmissData
note notel.maxfreql = note_note2.MaxFreq
End If End If
If note_notel.Selection2(0) <> ““ Then
Set note-note2 = view view.GetDocumentByKey(Right(“00000000” + note_notel.Selection2(0), 8))
If Not (note note2 Is Nothing) Then
note notel.data2=note_note2.EmissData
note _notel.maxfreq2 = note_note2.MaxFreq
End If End If
If note notel.Selection3(0) <> ““ Then
Set note-note2 = view_view.GetDocumentByKey(Right(“00000000” + note_notel.Selection3(0), 8))
If Not (note _note2ls Nothing) Then
note notel.data3 = note note2.EmissData
note _notel.maxfreq3=note note2.MaxFreq
End If End If End Sub
〔付記５〕
import java.awt.*; import java.awt.event.*; import java.applet.*;
public class SRC Charts extends Applet ｛ int gi count;
double GetHMax(String str_in) ｛ String str_current; double dbl hmax;
str_current = ““; dblhmax = 0; for Tint i cnt = 0; i_cnt < str_in.length(); i cnt++) ｛ if(str in. region Match es(i cnt, “, “, 0, 2))
if(Double.value0f(str current).doubleValue() > dbl_hmax)
dbl hmax = Double.value0f(str current).doubleValue();
str current = “‘ ;
i_cnt++;
gi count++; ) else ｛
str current = str current.concat(str in.substring(i cnt, i cnt + 1));
)
if(str_current.length() > 0) ｛
if(Double.value0f(str_current).doubleValue() > dbl_hmax)
dbl hmax = Double.value0f(str_current).doubleValue(); gi count++; ) return dbl hmax;
int StringTolnt(String str_in, double dbl hmax) ｛ double dbl_pos;
dbl_pos = getSize().height - (25 + (Double.value0f(str_in).doubleValue() * ((getSize().height - 50) / dbl hmax))); return (int)dbl-pos; )
void drawChartLine(Graphics g, String str_in, String str_type, double dbl_maxfreq) ｛ double dbl_x, dbl_inc, dbl_hmax; String str last, str next;
str last str_next = “‘ ; dbl x = 25; gi count = 0;
dbl_hmax = GetHMax(str_in); if(str type. equals IgnoreCase(“S”)) dbl hmax = 100;
dbl inc = ((((double)getSize().width - 50) / gi count) * ((dbl maxfreq - 200) / 800));
for (int i cnt = 0; i_cnt < str_in.length(); )       “, “,       i c｛
nt++)if(str_in.regionMatches(i cnt, 0, 2))if(str_last.length(> 0)      ｛
｛
g.drawLine((int)dbl x, StringTolnt(str_last, dbl hmax), (int)(dbl x + dbl inc), StringTolnt(str_next, dbl hmax));
dbl x = dbl x + dbl inc;
str last = str_next; str next = ““; i cnt++;
else ｛ str next = str next.concat(str in.substring(i cnt, i cnt + 1));
)
if(str_next.length() > 0)
g.drawLine((int)dbl x, StringTolnt(str_last, dbl hmax), (int)(dbl x + dbl-inc), StringTolnt(strnext, dbl_hmax)); )
public void paint(Graphics g) ｛ double dbl x, dbl-y;
g.setColor(Color.black); g.drawLine(0, 0, getSize().width, 0); g.drawLine(25, getSize().height - 25, getSize().width - 25, getSize().height - 25); g.drawLine(25, 25, 25, getSize().height - 25);
for(int i cnt = 0; i_cnt < 9; i cnt++) ｛
dbl_x = 25 + ((double)i cnt * (((double)getSize().width - 50) / 8));
g.drawLine((int)dbl x, getSize().height - 25, (int)dbl x, getSize().height - 20);
g.drawString(String.value0f((i cnt * 100) + 200), (int)dbl x - 8, getSize().height - 5); )
for(int i cnt = 0; i_cnt < 11; i_cnt++) ｛
dbl-y = 25 + ((double)i cnt * (((double)getSize().height - 50) / 10));
g.drawLine(20, (int)dbl-y, 25, (int)dbl-y);
g.drawString(String.value0f(100 - (i cnt * 10)), 1, (int)dbl-y + 5); )
g.drawString(“Data Overlay”, (getSize().width / 2) - 30, 12);
g.setColor(Color.red); drawChartLine(g, getParameter(“Data 1 “), getParameter(“Type 1 “), Double.value0f(getParameter(“Max Freq 1 “)).doubleValue()); g.setColor(Color.blue); drawChartLine(g, getParameter(“Data 2”), getParameter(“Type 2”), Double.value0f(getParameter(“Max Freq 2”)).doubleValue()); g.setColor(Color.green); drawChartLine(g, getParameter(“Data 3”), getParameter(“Type 3”), Double.value0f(getParameter(“Max Freq 3”)).doubleValue()); ) )
【図面の簡単な説明】
【００５８】
【図１】可能な光源を示す、本発明によるデータベースのテーブルを示す。
【図２】可能な光開始剤を示す、本発明によるデータベースのテーブルを示す。
【図２Ａ】可能なＵＶ安定剤を示す、本発明によるデータベースのテーブルを示す。
【図３】可能な基材を示す、本発明によるデータベースのテーブルを示す。
【図４Ａ】本発明による方法の好ましい実施形態のフローチャートを示す。
【図４Ｂ】本発明による方法の好ましい実施形態のフローチャートを示す。
【図４Ｃ】本発明による方法の第２の実施形態を示すフローチャートである。
【図４Ｄ】本発明による方法の第２の実施形態を示すフローチャートである。
【図４Ｅ】本発明による方法の第２の実施形態を示すフローチャートである。
【図４Ｆ】本発明による方法の第２の実施形態を示すフローチャートである。
【図４Ｇ】本発明による方法の第２の実施形態を示すフローチャートである。
【図５Ａ】１つのコンポーネントの代表的な波長応答特性を示す。
【図５Ｂ】１つのコンポーネントの代表的な波長応答特性を示す。
【図５Ｃ】１つのコンポーネントの代表的な波長応答特性を示す。
【図６Ａ】図４Ａ〜図４Ｄの方法を実装したコンピュータの画面を示す。
【図６Ｂ】図４Ａ〜図４Ｄの方法を実装したコンピュータの画面を示す。
【図６Ｃ】図４Ａ〜図４Ｄの方法を実装したコンピュータの画面を示す。
【図６Ｄ】図４Ａ〜図４Ｄの方法を実装したコンピュータの画面を示す。
【図６Ｅ】図４Ａ〜図４Ｄの方法を実装したコンピュータの画面を示す。
【図６Ｆ】図４Ａ〜図４Ｄの方法を実装したコンピュータの画面を示す。
【図６Ｇ】第１の光開始剤、基材、および光源の波長応答のオーバーレイ図を示す。
【図７Ａ】光開始剤、基材、および光源の第２および第３の組による、他のオーバーレイ図を示す。
【図７Ｂ】光開始剤、基材、および光源の第２および第３の組による、他のオーバーレイ図を示す。
【図７Ｃ】波長応答グラフ上で大きな面積がオーバーラップしている、他の光開始剤、基材、および光源のシステムを示す。
【図７Ｄ】図４Ｆに示すプロセスから完全な光硬化システムを構築せずに行う、２つ以上のエレメントの比較を示す。
【図７Ｅ】図４Ｆに示すプロセスから完全な光硬化システムを構築せずに行う、２つ以上のエレメントの比較を示す。
【図７Ｆ】図４Ｆに示すプロセスから完全な光硬化システムを構築せずに行う、２つ以上のエレメントの比較を示す。
【図７Ｇ】図４Ｆに示すプロセスから完全な光硬化システムを構築せずに行う、２つ以上のエレメントの比較を示す。
【図７Ｈ】本発明によるエレメント特性を示す。
【図７Ｉ】本発明によるエレメント特性を示す。
【図８Ａ】データを視覚的および数値的に解析するために、データの補間、ベースライニング、正規化、および積分をそれぞれ行うサブプロセスを示す。
【図８Ｂ】データを視覚的および数値的に解析するために、データの補間、ベースライニング、正規化、および積分をそれぞれ行うサブプロセスを示す。
【図８Ｃ】データを視覚的および数値的に解析するために、データの補間、ベースライニング、正規化、および積分をそれぞれ行うサブプロセスを示す。
【図８Ｄ】データを視覚的および数値的に解析するために、データの補間、ベースライニング、正規化、および積分をそれぞれ行うサブプロセスを示す。
【図９】波長応答内の特定の領域が、記号により分類されるための十分大きな応答を示すかどうかを判定するためのプロセスを示す。
【図１０】本発明を実装可能ないくつかの異なるコンピュータシステムのシステム図を示す。
【図１１】波長応答のグラフ作成プロセスのフローチャートである。
【図１】
2005524885.tif 000004
【図２】
2005524885.tif 000005
【図２Ａ】
2005524885.tif 000006
【図３】
2005524885.tif 000007
【図４Ａ】
2005524885.tif 000008
【図４Ｂ】
2005524885.tif 000009
【図４Ｃ】
2005524885.tif 000010
【図４Ｄ】
2005524885.tif 000011
【図４Ｅ】
2005524885.tif 000012
【図４Ｆ】
2005524885.tif 000013
【図４Ｇ】
2005524885.tif 000014
【図５Ａ】
2005524885.tif 000015
【図５Ｂ】
2005524885.tif 000016
【図５Ｃ】
2005524885.tif 000017
【図６Ａ】
2005524885.tif 000018
【図６Ｂ】
2005524885.tif 000019
【図６Ｃ】
2005524885.tif 000020
【図６Ｄ】
2005524885.tif 000021
【図６Ｅ】
2005524885.tif 000022
【図６Ｆ】
2005524885.tif 000023
【図６Ｇ】
2005524885.tif 000024
【図７Ａ】
2005524885.tif 000025
【図７Ｂ】
2005524885.tif 000026
【図７Ｃ】
2005524885.tif 000027
【図７Ｄ】
2005524885.tif 000028
【図７Ｅ】
2005524885.tif 000029
【図７Ｆ】
2005524885.tif 000030
【図７Ｇ】
2005524885.tif 000031
【図７Ｈ】
2005524885.tif 000032
【図７Ｉ】
2005524885.tif 000033
【図８Ａ】
2005524885.tif 000034
【図８Ｂ】
2005524885.tif 000035
【図８Ｃ】
2005524885.tif 000036
【図８Ｄ】
2005524885.tif 000037
【図９】
2005524885.tif 000038
【図１０】
2005524885.tif 000039
【図１１】
2005524885.tif 000040
【国際調査報告】
2005524885.tif 000041
2005524885.tif 000042
2005524885.tif 000043
2005524885.tif 000044
2005524885.tif 000045
2005524885.tif 000046
2005524885.tif 000047