(57)【要約】  本発明は、ピンパッドを含むか又はピンパッドを含まないＰＯＳ端末装置（１０）へアクセスするためのシステムに関する。当該システムは、クライアントシステム（１５）を用いて、このようなＰＯＳ端末装置（１０）を少なくとも１つのサーバ（３０）により構成されるネットワークへ接続する。当該システムは、このようなサーバに位置したアプリケーション（２５）をインターネットに類似のプロセスで複数の特定のプロトコル（２０）を用いて実行することと、アプリケーションサーバ（３０）からアプリケーションをダウンロードして更新することと、トランザクションサーバ（３５）において電子的な業務処理を実行することとを、任意のＰＯＳ端末装置（１０）に実行させる。
2008502957.tif 000002
【特許請求の範囲】
【請求項１】
ＰＯＳ端末装置（１０）へアクセスするためのシステムであって、上記システムは、複数の通信プロトコル（２０）及びトランザクションプロトコルを用いて上記ＰＯＳ端末装置（１０）をネットワークへ接続するクライアントシステム（１５）を備え、上記クライアントシステム（１５）は、既存のＷＡＰ規格に追加される少なくとも１つのカスタマイズされたＷＭＬ及びスクリプト拡張機能を含み、
複数の周辺装置にアクセスする手段と、
アプリケーションサーバ（３０）からアプリケーション（２５）をダウンロードして更新する手段と、
異なる複数のトランザクションプロトコルを用いて複数のトランザクションサーバ（３５）との間で電子的な業務処理を実行する手段と、
論理的に明確に識別可能な複数の環境において独立して実行されるマルチアプリケーションをサポートする手段とを備えるシステム。
【請求項２】
上記異なる複数のトランザクションプロトコルは、ＨＴＴＰ、ＩＳＯ８５８３又はＸＭＬである請求項１記載のＰＯＳ端末装置にアクセスするためのシステム。
【請求項３】
上記複数の通信プロトコル（２０）は、ＴＣＰ／ＩＰ、ＰＰＰ、ＳＤＬＣ、Ｘ．２８、ＧＰＲＳ、ＣＤＭＡ、ＣＤＭＡ  １Ｘ、イーサネット、ＧＳＭ、Ｗｉ−Ｆｉ、ブルートゥース及びＩＲからなるグループから選択される請求項１記載のＰＯＳ端末装置にアクセスするためのシステム。
【請求項４】
上記周辺装置は、磁気カード読み取り装置、スマートカード読み取り装置、プリンタ、ピンパッド、バーコード読み取り装置、小切手の読み取り装置、キーボード、Ｍｉｆａｒｅの非接触カード読み取り装置及び高感度タッチスクリーンからなるグループから選択される請求項１記載のＰＯＳ端末装置にアクセスするためのシステム。
【請求項５】
上記既存のＷＡＰ規格に追加されるカスタマイズされたＷＭＬ及びスクリプト拡張機能はさらに、チップカードにより電子的な業務処理を実行する手段を備える請求項１記載のＰＯＳ端末装置にアクセスするためのシステム。
【請求項６】
請求項１乃至５のうちの１つに記載のシステムを用いてアプリケーションのダウンロード及び更新を実行する方法であって、
上記ＰＯＳクライアントシステム（１５）をネットワークと接続してアドレスを受け取るステップと、
上記クライアントシステム（１５）と上記アプリケーションサーバ（３０）との間に転送制御プロトコルセッションを確立するステップと、
アプリケーションダウンロード／更新要求を送るステップと、
上記アプリケーションサーバ（３０）において上記要求を処理するステップと、
上記ＰＯＳクライアントシステム（１５）へアプリケーションのページ、スクリプト及びデータファイルを送るステップとを含む方法。
【請求項７】
上記アプリケーションサーバ（３０）において上記要求を処理するステップはさらに、
ＴＣＰ／ＩＰ接続上のメッセージにより上記トランザクションサーバ（３５）に接触するステップと、
上記トランザクションサーバ（３５）から上記ＰＯＳクライアントシステムの構成設定により回答を受け取るステップと、
上記アプリケーションの設定を処理して、ウェブアプリケーションのカスタマイズされたバージョンを構築するステップと、
上記カスタマイズされたアプリケーションのページ、スクリプト及びデータファイルを上記ＰＯＳクライアントシステム（１５）へ送るステップとを含む請求項６記載の上記システムを用いてアプリケーションをダウンロード及び更新する方法。
【請求項８】
上記ＰＯＳ端末装置（１０）をネットワークと接続することは、リモートアクセスサーバ（４５）により、又は広帯域ネットワークを介して実行される請求項６記載のアプリケーションのダウンロード及び更新を実行する方法。
【請求項９】
上記ネットワークによって提供されるアドレスは、好適にはインターネットプロトコル（ＩＰ）である請求項６記載のアプリケーションのダウンロード及び更新を実行する方法。
【請求項１０】
上記アプリケーションダウンロード／更新要求を送るステップは、ＨＴＴＰ（又はＨＴＴＰｓ）のＰＯＳＴ又はＧＥＴコマンドを伴う請求項６記載のアプリケーションのダウンロード及び更新を実行する方法。
【請求項１１】
上記トランザクションサーバに接触するステップは、ＩＳＯ８５８３フォーマットのメッセージを用いて実行される請求項７記載のアプリケーションのダウンロード及び更新を実行する方法。
【請求項１２】
上記アプリケーションのページ、スクリプト及びデータファイルを送るステップの後、上記方法はさらに、受け取ったファイルを処理するステップと、アプリケーションのダウンロード／更新完了の受信確認を送るステップとを含む請求項６記載のアプリケーションのダウンロード及び更新を実行する方法。
【請求項１３】
請求項１乃至５のうちの１つに記載のシステムを用いて電子的な業務処理を実行する方法であって、
上記ＰＯＳクライアントシステム（１５）をネットワークと接続して許可を受けるステップと、
トランザクションメッセージを生成し、上記メッセージを上記トランザクションサーバ（３５）へ送るステップと、
上記トランザクションサーバ（３５）から上記ＰＯＳクライアントシステム（１５）への応答をトランザクションメッセージにより受信するステップとを含む方法。
【請求項１４】
上記ＰＯＳ端末装置（１０）をネットワークと接続することは、リモートアクセスサーバ（４５）により、又は広帯域ネットワークを介して実行される請求項１３記載の電子的な業務処理を実行する方法。
【請求項１５】
上記トランザクションメッセージはＩＳＯ８５８３フォーマットである請求項１３記載の電子的な業務処理を実行する方法。
【請求項１６】
上記トランザクションサーバから応答を受信するステップの後、上記方法はさらに、受信されたメッセージを処理するステップと、トランザクション受信確認を送るステップとを含む請求項１３記載の電子的な業務処理を実行する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークにより少なくとも１つのサーバへ接続されるクライアントシステムを用いてＰＯＳ及びピンパッド（pin pad）装置にアクセスするためのシステムに関し、また、アプリケーションの更新及びダウンロードを実行し、上記システムを用いて複数の業務処理を実行する方法に関する。
【背景技術】
【０００２】
電子的な業務処理（electronic operations）を伴う産業（健康保険、ロイヤルティ、プリペイドの補充、ギフトカードなど）における多くの企業は常に、そのサービスを向上させ、より競争力の強い新しいサービスを提供するためのソリューションを追求している。
【０００３】
本発明が出現するまで、アクワイアラ（加盟店契約者）としても知られるユーザは、技術的に限界のある端末を持たされてきた。
【０００４】
移植性に関して、本明細書においてＰＯＳ端末装置と称する販売時点情報管理（Point-of-Sale）端末装置の各々は、プロプライエタリな（企業専有の）ハードウェア及びオペレーティングシステムのみを備えてきた。従って、アプリケーションは、端末装置のモデル毎に、労力を要しかつ高価なプロセスを経て書き直され、適合させられる必要があった。ネットワーク内で使用されるＰＯＳ端末装置は、アプリケーションサーバなどの他のネットワーク設備を利用せずにトランザクションデータを送受信することだけが可能であったので、アプリケーションの共有も同じく不十分なものであった。また、アプリケーションはＰＯＳ端末装置（ファットクライアント）にハードコードされていたので、メモリ及び開発上の制約に起因して、同じマシン上で異なるアプリケーションを使用することは極めて困難であり、おそらくは不可能であった。
【０００５】
このようにして、各ＰＯＳ端末装置は、非自動的なプロセスで個別に更新されるように使用されてきた。最近では、ＰＯＳ端末装置の製造業者により供給される異種環境及びリモートアップグレードシステムが、アップグレードプロセスに適用されるべく使用されている。しかしながら、これらの端末装置及びそれらの個々のアップグレードシステムには互換性がなく、各システム及び各ベンダ毎に特定の知識及び保守スタッフが必要となり、よって労力及びコストが反復されることになる。
【０００６】
従来技術に存在する別の問題点は、高度なプログラミング技量を必要とするとともに、市場における各端末装置製造業者のプロプライエタリな動作環境における特異性に関する深い知識を必要とすることにある。その結果、スタッフの訓練、アプリケーションの開発及び保守にかかるコストは巨大なものになり、必然的に、利用可能なＰＯＳサービス及びアプリケーションの範囲は制限された。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述の欠点に鑑みて、本発明は、ＰＯＳネットワークをサービスネットワークへ変換してこのようなＰＯＳネットワークの実装及び管理の際のコストを削減する、複数のＰＯＳ装置にアクセスするためのシステムを提供する。
【０００８】
本発明の別の目的は、異なるモデルのＰＯＳ端末装置におけるアプリケーションに対するより高い移植性を特徴とするとともに、同一のＰＯＳ装置における複数のアプリケーションの共有を可能にするシステムを提供することにある。
【０００９】
本発明のさらなる目的は、異なるベンダにより製造されるＰＯＳ端末装置においてユーザが１つのアプリケーションをカスタマイズを必要とすることなく実行することを可能にする、複数の装置へアクセスするためのシステムを提供することにある。
【００１０】
本発明の重要な態様は、本システムが標準的なＰＯＳ端末装置と競合するのではなく、これらの使用を補完するように構成されることにある。その理由は、多くの企業、とりわけベリフォン（VeriFone）、インジェニコ（Ingenico）、リップマン（Lipman）、サジェム（Sagem）、アクサルト（Axalto）及びインテレクト（Intellect）などが、すでにこのようなＰＯＳ端末装置をかなり以前に開発しているからである。
【課題を解決するための手段】
【００１１】
本発明は、ＰＯＳ及びピンパッド装置にアクセスし、このようなＰＯＳ端末装置を、少なくとも１つのサーバにより構成されるネットワークへ接続するためのクライアントシステムに関する。本システムは、任意のＰＯＳ端末装置が、ＴＣＰ／ＩＰ（インターネット、イントラネット、ＶＰＮなど）及びＷＭＬ（Wireless Markup Language：無線マークアップ言語）ページ及びスクリプトを用いて、インターネットに類似したプロセスで、ＰＯＳネットワークへ接続されたアプリケーションサーバに位置したアプリケーションを実行することを可能にする。
【００１２】
クライアントシステムの技術は、クライアント／サーバアーキテクチャとしてシンクライアントモデルを実装する。このことは、クライアントがサーバへの直接アクセスを有し、このサーバにすべてのビジネスロジックがとどまることを想定している。この想定は元来、ソフトウェアの開発及び保守において２つの主たる優位点を提供する。アプリケーションの開発は、生産性の高いツールを多数利用できるサーバ側でのみ行われ、クライアント側のアプリケーションは、サーバ側で更新した直後に自動的にアップグレードすることができる。
【００１３】
第一世代の携帯電話向けのＷＡＰ規格は、クライアントとサーバとの間における通信のペナルティに関連している。従って、ＷＡＰフォーラムは、いくつかの情報永続化及びデータ検証メカニズムを規定し、これらのメカニズムにより、連続的にＷＭＬ（無線マークアップ言語）ページを遷移する間にネットワークを介して交換される情報量は劇的に削減される。不変な画面ページの要求は、ＨＴＴＰ又はＷＳＰウェブプロトコルのキャッシュメカニズムによって防止されてもよいが、これらはなお、クライアント主導型の更新プロセスに依存する。ゆえに、ＷＭＬＳｃｒｉｐｔデータ検証ルーチンと併用したとき、ＷＭＬブラウジングは、複数の画面のＰＯＳアプリケーションフローとほぼ同様のものになる。
【００１４】
ＷＭＬは、データ入力画面の生成を目標とする宣言形マークアップ言語である。これは、基本的な入力タイピング機能と、基本的な選択肢の選択とを提供する。これは、同じトランザクションフローの画面間において情報を格納するように意図された、揮発性の変数環境を有する。ＷＭＬＳｃｒｉｐｔは、データ検証スクリプトの書法を簡単化するように設計された小規模のスクリプト記述言語である。ＷＭＬ及びＷＭＬＳｃｒｉｐｔはいずれも永続的なデータ格納を提供せず、また、いかなる特定の周辺装置の存在を仮定することもない。
【００１５】
ＰＯＳ端末装置には、クライアントシステムの概念が類推によって導入された。特に、ＷＭＬブラウザは、電子的な業務処理、とりわけ領収書の印刷や取引履歴の格納などに必要ないくつかの主要な機能を欠いているものの、ＰＯＳ端末装置にウェブ及びブラウジングの恩典をもたらす最も近い規格であることが明らかになっている。
【００１６】
ＰＯＳ端末装置は、磁気カード読み取り装置、感熱式プリンタ、ピンパッド入力装置、及びスマートカード読み取り装置などの周辺装置、ならびに、一般に、バーコード読み取り装置、Ｍｉｆａｒｅ（マイフェア）の非接触カード読み取り装置及び／又は小切手の読み取り装置（check reader）などの、標準的なＲＳ−２３２インタフェースを介して統合される他のシリアル装置のような周辺機器を有することが常であった。周辺装置へのアクセスに加えて、ＰＯＳアプリケーションは、標準的なＷＭＬ及びＷＭＬＳｃｒｉｐｔの定義では利用できないいくつかの機能を必要とし、これらの機能は、例えば、永続的なデータレコードの格納、ＩＳＯ８５８３のメッセージのフォーマット処理、機密情報の暗号化、及び強化されたデータ入力サポート、ＥＭＶトランザクション認証、ならびに、ダイヤルアップ式端末のためのＳＤＬＣ及びＸ．２８のレガシーネットワークサポートなどである。さらに、現在のトランザクションサーバアップグレードメカニズムとの適合化を図るために、サーバ主導型のキャッシュ更新ポリシーが必要とされた。
【発明の効果】
【００１７】
本発明において説明されるように、本クライアントシステム技術は、複数のアプリケーションの共有と付加価値サービスとのための「低コスト」のプラットフォームとしてＰＯＳ端末装置を使用し、ＰＯＳネットワークを「デファクト」のサービスネットワークに変えることを可能にする。
【発明を実施するための最良の形態】
【００１８】
発明の詳細な説明．
本発明は、特定のクライアントシステム１５を用いて、カスタマイズされた複数のＰＯＳ端末装置１０にアクセスしかつこれらのＰＯＳ端末装置１０を任意のネットワークへ接続するためのシステムから構成される。動作時において、クライアントシステム１５は、業務処理システムとして動作するＰＯＳ端末装置１０の全リソースの制御を引き受ける。これは、任意のＰＯＳ端末装置１０が、ＴＣＰ／ＩＰ（インターネット、イントラネット、ＶＰＮなど）及びＷＭＬ（無線マークアップ言語）ページ及びスクリプトを用いて、インターネットに類似するプロセスで、ＰＯＳネットワークへ接続されたアプリケーションサーバ３０に位置したアプリケーション２５を実行することを可能にする。クライアントシステム１５はまた、複数の別個のアクセスネットワークへ接続されるとき、同じアプリケーション２５が複数の通信プロトコル２０を使用することも可能にし、よって、図１に示すように、ＴＣＰ／ＩＰと、レガシーネットワーク（例えば、ＳＤＬＣ及びＸ．２８）と、他のネットワーク（ＧＳＭ、ＧＰＲＳ、ＣＤＭＡ、イーサネット（登録商標）、Ｗｉ−Ｆｉ、ブルートゥース、ＩＲなど）とを使用することを可能にする。さらに、クライアントシステム１５は、データ交換速度を増大させて真のオフライン業務処理をも許容する目的で、高度なキャッシュ機能を有する。クライアントシステム１５はなお、ＰＯＳへ接続される入出力装置のすべて、例えば、磁気カード読み取り装置、スマートカード読み取り装置、プリンタ、ピンパッド、バーコード読み取り装置、小切手の読み取り装置、キーボード、Ｍｉｆａｒｅの非接触カード読み取り装置などを認識して制御する。
【００１９】
本発明によりもたらされるアプリケーションサーバ３０へのアクセスは、サービス及びアプリケーションに関連したものについてのインターネット上で利用可能な柔軟性及び機能性のすべてをＰＯＳネットワークへ取り込むことを可能にする。その結果、保守コストは削減され、アプリケーションをアップグレードするプロセスに柔軟性が付加される。さらに、複数の別個の物理ネットワークを使用する可能性を理由として、アプリケーションのアップグレードプロセスは、ＳＤＬＣ又は他の非同期プロトコルに基づいてレガシーネットワークを使用する際の平均データ交換時間に悪影響を与えない。
【００２０】
図２は、複数のＰＯＳ端末装置１０が通常はどのようにアップグレードされたかを示す。本発明より以前は、アプリケーションは、各ＰＯＳ端末装置のモデルにそれぞれ移植されるようにカスタマイズされる必要があった。このような作業は個別に実行されるのが常であり、各ＰＯＳ端末システムのために特定の知識及び保守スタッフが必要とされた。
【００２１】
図３から分るように、クライアントシステムの動作環境は、ネットワークを介して接続されるアプリケーションサーバ３０を用いてただ１つのＰＯＳ端末装置１０において任意個数のアプリケーション２５を共有することを可能にし、また、このようなアプリケーションを遠隔的かつ自動的にリアルタイムでアップグレードすることを可能にする。
【００２２】
発明の好ましい実施形態．
先に述べた問題点を解決するために、本発明はウェブクライアントシステム拡張機能を定義し、本ウェブクライアントシステム拡張機能により、ＰＯＳ周辺機器を使用するように標準的なＷＡＰブラウザを適合化し、かつ電子的な業務処理を実行するようにこれを拡張する。
【００２３】
本ソリューションは、ＳＤＬＣ及びＸ．２８などのレガシープロトコルを凌ぐＩＳＯ８５８３準拠の業務処理の信頼性及び実行速度を、ウェブアプリケーションの保守性及び開発速度と結びつける新規な技術により、既存の問題点を解決する。
【００２４】
動作時において、クライアントシステム１５は、業務処理システム自体として動作するＰＯＳ端末装置の全リソースの制御を引き受ける。これは、ＴＣＰ／ＩＰ上でＨＴＴＰを使用し、オプションとしてＳＳＬプロトコルにより保護して、インターネットに類似するプロセスで、ＰＯＳネットワークへ接続されるアプリケーションサーバ３０からダウンロードされるウェブアプリケーション２５を、任意のＰＯＳ端末装置１０が実行することを可能にする。アプリケーションサーバ３０へのＴＣＰ／ＩＰアクセスは、簡単なダイヤルアップ接続を用いるか、又はＧＰＲＳ、ＣＤＭＡ  １Ｘ、イーサネット（登録商標）ＩＩ及びＷｉＦｉ（ＩＥＥＥ８０２．１１）のような広帯域ネットワークを用いて行うことができる。
【００２５】
ＷＭＬページ、スクリプト及び他のファイルから構成されるＰＯＳウェブアプリケーションは、従来のＣアプリケーションであるように装って、トランザクションサーバ３５とのＩＳＯ８５８３準拠の電子的な業務処理を実行する。このような業務処理は、ＳＤＬＣ／Ｘ．２８ダイヤルアップ接続と、ＴＣＰ／ＩＰ広帯域ネットワークとのどちらを介しても行われる。
【００２６】
この方式を、図４に示す。このような図を観察すると、ＰＯＳクライアントシステム１５のライフサイクル上における２つの別個の状況を検出することが可能である。その第１の状況は、これがウェブアプリケーションをダウンロードしたり又は更新したりするためにアプリケーションサーバ３０へ接続するときであり、第２の状況は、このウェブアプリケーション２５が電子的トランザクションを実行するためにトランザクションサーバ３５へ接続するときである。
【００２７】
アプリケーションのダウンロードは、図５に従って、下記のステップのように詳述することができる。
【００２８】
１．  技術者は、アプリケーションサーバの接続設定をタイピングして入力する。
２．  ＰＯＳクライアントシステム１５は、リモートアクセスサーバ（ＲＡＳ）４５へ接続するか、広帯域ネットワークに接続する。
３．  ＰＯＳクライアントシステム１５は、インターネットプロトコル（ＩＰ）アドレスを受け取る。
４．  ＰＯＳクライアントシステム１５は、アプリケーションサーバ３０との転送制御プロトコル（ＴＣＰ）セッションを確立し、通常はＨＴＴＰ（又はＨＴＴＰｓ）ＰＯＳＴコマンドを用いてアプリケーションダウンロード／更新要求を送る。
５．  アプリケーションサーバ３０は要求を処理する。
６．  アプリケーションサーバ３０は、ＰＯＳ端末装置１０であるように装って、ＴＣＰ／ＩＰ接続上でＩＳＯ８５８３メッセージを用いてトランザクションサーバ３５に接触する。
７．  トランザクションサーバ３５は、ＰＯＳクライアントのシステム構成設定によってアプリケーションサーバ３０に応答する。
８．  アプリケーションサーバ３０は、アプリケーション設定を処理し、ウェブアプリケーションのカスタマイズされたバージョンを構築する。
９．  アプリケーションサーバ３０は、ウェブアプリケーションのページ、スクリプト及びデータファイルをＰＯＳクライアントシステム１５へ送る。
１０．  ＰＯＳクライアントシステム１５は、受信したファイルを処理する。
１１．  ＰＯＳクライアントシステム１５は、アプリケーションのダウンロード／更新が完了したことを示す受信確認（receipt）を技術者へ発行する。
１２．  ＰＯＳクライアントシステム１５は、自動的にウェブアプリケーションを開始させる。
【００２９】
上述のステップ６及び７は、本ソリューションではオプションである。別の使用事例では、アプリケーションサーバは、アプリケーションのカスタマイズプロセス又はトランザクションサーバへのアクセスを必要とすることなく、単にアプリケーション全体をダウンロードすることができる。
【００３０】
さらに、電子的な業務処理は、図６に示す下記のステップのように詳述することができる。
【００３１】
１．  ＰＯＳユーザは、トランザクションデータをタイピングして入力する。
２．  ＰＯＳクライアントシステム１５は、リモートアクセスサーバ（ＲＡＳ）４５へ接続するか、広帯域ネットワークに接続する。
３．  ＰＯＳクライアントシステム１５は、ネットワークアクセスを受け入れる。
４．  ＰＯＳクライアントシステムは、ＩＳＯ８５８３メッセージを生成する。
５．  ＰＯＳクライアントシステムは、ＩＳＯ８５８３メッセージをトランザクションサーバ３５へ送る。
６．  トランザクションサーバ３５は、ＩＳＯ８５８３メッセージによってＰＯＳクライアントシステムに応答する。
７．  ＰＯＳクライアントシステム１５は、受信したメッセージを処理する。
８．  ＰＯＳクライアントシステム１５は、トランザクション受信確認を発行する。
【００３２】
１．アーキテクチャ及びプロトコル層．
本発明をより良く定義するために、以下、クライアントシステムのアーキテクチャについて詳述し、このアーキテクチャを図７に示すように複数の特定の層に分割する。
【００３３】
１．１−通信プロトコル．
通信プロトコルに関連して、クライアントシステムは、下記のプロトコル、すなわち、ＴＣＰ／ＩＰ／ＰＰＰ、ＳＤＬＣ、Ｘ．２８、ＧＳＭ、ＧＰＲＳ、ＣＤＭＡ、イーサネット（登録商標）、ＷｉＦｉ、ブルートゥース、ＩＲなどのうちの１つを介して、業務処理を実行することができる。アプリケーションは、ある業務処理の間にどのプロトコルが使用されるかについての選択を担当する。
【００３４】
１．２−セキュリティプロトコル．
シンクライアントアプリケーションは、ＳＳＬ  ３．０規格に基づくＨＴＴＰプロトコルを用いて、ウェブサーバとデータを交換する。ＳＳＬ層はＴＣＰプロトコル上で実行され、ＨＴＴＰクライアントが任意の準拠サーバとの間で安全な接続を確立するためのサポートを提供する。
【００３５】
クライアントシステムは、下記の暗号スイート、すなわち、ＲＳＡ＋ＲＣ４＋ＭＤ５と、ＲＳＡ＋３ＤＥＳ＋ＭＤ５とをサポートする。これらはいずれも、ＰＥＭフォーマットのサーバ証明書の認証とクライアント証明書の認証とをサポートする。３ＤＥＳを含む暗号スイートはまた、ＰＫＣＳ１２フォーマットのクライアント証明書の認証をサポートする。
【００３６】
１．３−トランザクションプロトコル．
クライアントシステムは、ＨＴＴＰ、ＩＳＯ８５８３、及びＸＭＬの動作（業務処理）をサポートする。ＨＴＴＰ動作はＷＭＬタグ＜ｇｏ＞を用いて利用可能であり、ＧＥＴコマンド及びＰＯＳＴコマンドの双方がサポートされる。ＩＳＯ８５８３動作及びＸＭＬ動作は、ＷＭＬＳｃｒｉｐｔ拡張機能によって提供される。すべてのプロトコルは同一のアプリケーションにおいて共存してもよく、アプリケーション設定によっては複数の別個のサーバへ接続してもよい。
【００３７】
１．４−ランタイムエンジン．
ユーザインタフェースにプロンプトを表示した後、クライアントシステムは、ユーザインタラクションがランタイムエンジンに対するイベントをトリガするのを待機し続ける。これらのイベントは、カレント（動作時点）のページ定義に従って処理され、何らかのローカルＷＭＬＳｃｒｉｐｔ処理をトリガする場合もあれば、別のページがロードされるように呼び出す場合もある。新しいＷＭＬページがロードされると、これは、ＷＭＬでカスタマイズされたＸＭＬパーサによって構文解析され、ＤＯＭ構文ツリーが生成される。その後、このツリーはトラバースされ、ランタイムの内部構造は、ユーザが次に生成するイベントに正しく応答するように設定される。ページ及びスクリプトはともに、クライアントシステムのキャッシュにおいて発見される場合もあれば、ＨＴＴＰ（Ｓ）サーバへ要求される場合もある。
【００３８】
１．５−マルチアプリケーションマネージャ（ＭＡＭ）．
クライアントシステムのマルチアプリケーションマネージャは、２つ以上のアプリケーションが同一のＰＯＳ内に存在しまた実行されることを可能にする。クライアントシステムは、異なる仮想実行環境を用いて、アプリケーションを他のアプリケーションから隔離する。リソース（ＷＭＬ、スクリプト、データファイル、及び変数）の生成、読み出し又は更新は、所有者アプリケーションによってのみ行うことができる。
【００３９】
アプリケーションは、シリアル通信を用いてＰＣから端末内へ設定される場合もあれば、ＴＣＰ／ＩＰを介してサーバから取り出される場合もある。基本的な設定は、カレントのアプリケーションセットに関する情報を格納する、ＰＯＳ内のアプリケーションテーブル（ＴＡ）に格納される。
【００４０】
ＭＡＭの主要な機能．
・  アプリケーションの自動的なロード、更新又は削除  −  特権的な権限を有しかつ通常はＰＯＳの所有者に属するマスタアプリケーションは、その端末装置内のアプリケーションの追加、削除又は更新を行うために、サーバからのアプリケーションテーブルの更新を要求することができる。これと同じ操作は、技術者が設定メニュに従って行うこともできる。後述するマルチアプリケーション設定機能を参照されたい。
・  アプリケーション間の通信  −  クライアントシステムは、アプリケーション間の通信を可能にする。アプリケーションＡはアプリケーションＢを開始させることができ、また、あるアプリケーションから別のアプリケーションへパラメータを送ることができる。
・  アプリケーション間の切り換え  −  ユーザは、クライアントシステムのメインメニューを呼び出すソフトキーを押すことにより、１つのアプリケーションから別のアプリケーションへ切り換えることができる。ユーザは、このメニューから他のアプリケーションを選択することができる。
・  アプリケーション・テーブルの検証  −  カレントの有効なアプリケーションテーブル（ＴＡ）がカレントＰＯＳに属するか否かを検証するために、キーが使用される。キーが一致しなければ、新しいＴＡが必要となる。
・  マルチアプリケーション設定  −  ＰＯＳオペレータのためのインタフェース。これにより、アプリケーションの削除、追加又は更新を含む、基本的な設定及び動作機能を実行することができる。
【００４１】
１．６−ＥＭＶプロトコルの標準的なライブラリ．
ＥＭＶプロトコルに関する複数の別個の製造業者の端末装置の能力を抽象するために、クライアントシステムはＥＭＶライブラリの存在を想定している。このライブラリは、実際には、クライアントシステムとＰＯＳ  ＥＭＶカーネルとの間のすべてのインタラクションをカプセル化するＰＩＮＰａｄインタフェースライブラリである。
【００４２】
クライアントシステムは、ＰＩＮＰａｄＬｉｂという名前のＷＭＬＳｃｒｉｐｔ拡張機能ライブラリとしてＥＭＶライブラリをシンクライアントアプリケーションへ提供する。
【００４３】
２．クライアントシステムの拡張機能．
ＷＭＬ言語及びＷＭＬＳｃｒｉｐｔ言語はともに、本来は、通常は携帯電話機で利用可能なＷＡＰブラウザに表示されることが可能なウェブサイトを生成するために設計されたものである。標準的なＰＯＳアプリケーションの要件を満たすために、本発明は、ＷＭＬ言語及びＷＭＬＳｃｒｉｐｔ言語に対するいくつかの拡張機能を定義している。
【００４４】
このＷＭＬのタグ、属性及びスクリプト関数からなるセットは、他の特徴の中でもとりわけ、クライアントシステム上で実行されるＰＯＳアプリケーションによる以下の動作、すなわち、１）通常はＰＯＳ端末装置において利用可能な装置、例えば、カード読み取り装置、プリンタ、バーコード読み取り装置、ピンパッド、Ｍｉｆａｒｅの非接触カード読み取り装置、小切手の読み取り装置などのへのアクセス、２）複数の別個のアクセスネットワーク（ＳＤＬＣ、Ｘ．２８、ＴＣＰ／ＩＰ、ＰＰＰ、ＧＰＲＳ、ＣＤＭＡ、ＷＮＢなど）へ接続される場合の複数の通信プロトコルの使用、３）永続的なデータレコードの格納、４）ＰＯＳオペレーティングシステム内に存在するＥＭＶカーネルへのアクセス、５）ＩＳＯ８５８３のメッセージのフォーマット処理、６）機密情報暗号化、などを可能にする。
【００４５】
以下、拡張機能の完全なリスト及びその詳細機能について説明する。
【００４６】
２．１−ＷＭＬ言語に対するタグ拡張機能．
このセクションでは、ＷＡＰブラウザをＰＯＳクライアントシステムに変えるために、ＷＡＰブラウザに提供される新規なタグ及びその属性について示す。
【００４７】
【表１】
2008502957.tif 000003
【表２】
2008502957.tif 000004
【００４８】
２．２−ＷＭＬ言語に対する属性拡張機能．
このセクションでは、ＷＡＰブラウザをＰＯＳクライアントシステムに変えるために、ＷＡＰブラウザに提供される新規な属性と、値と、標準的な属性の新規なふるまいとについて示す。
【００４９】
【表３】
2008502957.tif 000005
【表４】
2008502957.tif 000006
【表５】
2008502957.tif 000007
【００５０】
２．３−ＷＭＬＳｃｒｉｐｔ標準ライブラリへのＷＭＬＳｃｒｉｐｔ関数拡張機能．
このセクションでは、ＷＡＰブラウザをＰＯＳクライアントシステムに変えるために当該ＷＡＰブラウザに提供される、ＷＭＬＳｃｒｉｐｔ標準ライブラリへの拡張機能について示す。このような拡張機能スクリプト関数の定義を以下の表で説明する。
【００５１】
【表６】
2008502957.tif 000008
【００５２】
ＰＯＳクライアントシステム用に作成された固有の関数：
toFloat(value)−この関数は、与えられた値の浮動小数点表現を返す。この関数は、ＷＭＬＳｃｒｉｐｔ言語に関して定義されているものとまったく同じタイプの変換を実行する。無効のvalue（値）は、文字列「invalid（無効）」を返す。タイピングにより入力された変数が使用される場合は、タイプ変換を強いる必要がある。
setElementsPos(String, separator, nElements)−この関数は、separator（セパレータ）で分離されたnElements（ｎ個の要素）からなるString（文字列）を格納する。成功した場合、これは、格納されている最後の要素における最後の文字の位置を含む整数を返す。通常、これは、以下に示すString.elementAtPos(elementPos)を呼び出す前に使用される。
elementAtPos(elementPos)−この関数は、位置elementPosに存在する文字列内の要素を返す。その文字列は、関数setElementsPos(String, separator, nElements)を適用することによってすでに編成されていなければならない。その文字列が関数setElementsPosによりすでに編成されているのでない場合は、以前に編成された文字列が使用される。エラーの場合、これはinvalidを返す。
formatCurrency(currencyString)−この関数は、文字列を通貨の表記法でフォーマット処理し、セントをコンマ又はピリオド記号で分離し、同様に１０００などでも分離する。この関数は、フォーマット処理された文字列を返し、また、失敗した場合にはinvalidを返す。
isNumeric(string)−この関数は、引数を数値に変換することに成功できればtrue（真）を返し、そうでなければfalse（偽）を返す。
toUpper(string)−この関数は、大文字に変換された文字列引数を返す。
toLower(string)−この関数は、小文字に変換された文字列引数を返す。
padRight(string, pad, len)−この関数は、右側を長さlenまでpad（パッド）文字でパディングされた文字列引数を返す。
padLeft(string, pad, len)−この関数は、左側を長さlenまでpad文字でパディングされた文字列引数を返す。
loadFile(url, fileName)−この関数は、絶対ｕｒｌで示されるコンテンツを検索し、fileNameという名前のファイルに保存する。これはＨＴＴＰヘッダをすでに除去したものであり、ＨＴＴＰ結果コードを返す（２００はＯＫを意味する）。
loadToCache(url)−この関数は、絶対ｕｒｌで示されるコンテンツを検索し、それを、将来の利用のためにクライアントシステムのキャッシュに格納する。これは、ＨＴＴＰ結果コードを返す（２００はＯＫを意味する）。
setEnv(Name, Value)−これは、ＰＯＳの環境変数の名前と、この変数に帰属される値とをパラメータとして受け取る拡張機能である。変数のvalueの変更に成功すればtrueを返し、成功しなければfalseを返す。失敗した場合（例えば、パラメータが無効である場合）には、これはinvalidを返す。
goExt(url, method, blsBack)−関数WMLBrowser.go()のこの拡張機能は、定義されたＵＲＬへ進むこと、又は定義されたＵＲＬから戻ることを可能にする。ＷＭＬページへ戻ることは、それが予定された動作である場合には、「onenterbackward」イベントの実現を必要とする。これは、パラメータとして、urlと、method（POST又はGET）と、ＵＲＬへ戻ることを示す論理値blsBackとを受け取る。成功すれば空文字列を返し、そうでなければinvalidを返す。
beep(Freq, nTimes)−この関数は、出力装置において、Freqで指定される頻度で、nTimesで指定される回数だけ音を発生させる。成功すれば空文字列を返し、そうでなければinvalidを返す。
hangUp()−この関数は、ＰＯＳと電話回線との接続を断ち、空文字列を返す。
dialup()−この関数は、ＰＯＳと電話回線との非同期的な接続を開始し、空文字列を返す。
Persist()−この関数は、「i:persist.wmlsc」の名前でカレントスクリプトのコピーを生成する。このファイルがすでに存在している場合は、その名前は「i:last_persist.wmlsc」に変更される。ファイル「i:persist.wmlsc」に記録されているバイト数を返す。カレントスクリプトが、キャッシュをクリーニングすることによってすでにそれ自体を消去していた場合には、persistを呼び出した結果は未定義であり、ランタイムエラーになることがある。
setPostfield(name, value)−この関数は、WMLBrowser.goExt(hRef, "POST", true)への次の呼び出しによって送られることが想定されるpost（ポスト）フィールドを設定する。成功すれば、これは空文字列を返し、そうでなければinvalidを返す。
clearCacheWithTag(tag)−この関数は、tagで始まる「VWTag:」ＨＴＴＰヘッダを提示するすべてのファイルを、キャッシュから消去する。
getFirstVarName()−この関数は、最初の環境変数の名前を返す。これは、getNextVarName()及びgetPrevVarName()とともに、永続的環境へ反復子を提供する。
getNextVarName()−この関数は、最初の環境変数の名前を返す。これは、getFirstVarName()及びgetPrevVarName()とともに、永続的環境へ反復子を提供する。
getPrevVarName()−この関数は、最初の環境変数の名前を返す。これは、getFirstVarName()及びgetNextVarName()とともに、永続的環境へ反復子を提供する。
pin2pin()−この関数は、オペレーティングシステムにより駆動される「バックツーバック」のクライアントシステムクローンを開始させる。
dial(StringtoWhere)−この関数は、レコードストアにおける設定からダイヤルパラメータを設定し、接続状態を返す。
getConStatus()−この関数は、接続状態である値を有する整数を返す。
upLoad()−この関数は、「バックツーバック」アプリケーションのクローニングアップロード（cloning upload）を開始させる。
addEnv(varName, increment)−この関数は、ＰＯＳの環境変数の名前と、この変数のカレント値に加算される整数値とをパラメータとして受け取る。その変数が存在しない場合には、変数は、パラメータとして受け取った値により生成される。変数値の変更に成功すればtrueを返し、成功しなければfalseを返す。失敗した場合（例えば、パラメータが無効である場合）には、invalidを返す。
appendVar(varName, value)−この関数は、ＰＯＳの環境変数の名前と、この変数のカレント値に付加される文字列値とをパラメータとして受け取る。その変数が存在しない場合には、変数は、パラメータとして受け取った値により生成される。変数値の変更に成功すればtrueを返し、成功しなければfalseを返す。失敗した場合（例えば、パラメータが無効である場合）には、invalidを返す。
setEnvFromVars(varName, varList)−この関数は、セミコロンで分離されたｖａｒの名前のリストvarListに定義されている変数によって、環境変数varNameを設定する。これは、varNameに設定された文字列のlenを返すが、それは、関数setVarsFromEnv()又はgetVarFromEnv()を用いる後の利用のために保存されるべきものである。
setVarsFromEnv(varName)−この関数は、環境変数varNameの値から得られる変数により、ＷＭＬコンテキストを設定する。これは、関数setEnvFromVars()により保存されるべきであった変数セットの数を返す。
getVarFromEnv(envVarName, varName)−この関数は、環境変数envVarNameの値から、varNameという名前の変数の値を返す。上記変数がその値で定義されていなければ、これは空文字列を返す。
deleteContext(appName)−この関数は、appNameという名前のアプリケーションのファイルを完全に削除する。これを呼び出すことのできるものは、ＰＯＳマスタアプリケーションのみである。
isConnected()−この関数は、getConStatus()に代わり、接続がオンであるか否かを示すブール値を返す。
installApp(appDataFile)−この関数は、appDataFileという名前のデータファイルからアプリケーションをインストールし、エラーコードを示す整数を返す。この関数が良好に実行される場合、端末装置は再スタートされ、リターンコードはテストされない。
setVarFromVars(varName, varList)−この関数は、セミコロンで分離されたｖａｒの名前のリストvarListに定義されている変数によって、ＷＭＬ変数varNameを設定する。これは、varNameに設定された文字列のlenを返すが、それは、関数setVarsFromVar()又はgetVarFromVar()を用いる後の利用のために保存されるべきものである。
setVarsFromVar(varName)−この関数は、ＷＭＬ変数varNameの値から得られる変数により、ＷＭＬコンテキストを設定する。これは、関数setVarFromVars()により保存されるべきであった変数セットの数を返す。
getVarFromVar(wmlVarName, varName)−この関数は、ＷＭＬ変数wmlVarNameの値から、varNameという名前の変数の値を返す。上記変数がその値で定義されていなければ、これは空文字列を返す。
getVarFromStr(wmlsStringOrVar, varName)−この関数は、WMLScript変数又は文字列wmlsStringOrVarの値から、varNameという名前の変数の値を返す。上記変数がその値で定義されていなければ、これは空文字列を返す。
show(message, defaultInput)−この関数は、ＰＯＳ画面にmessage（メッセージ）を示し、ユーザの要求に関わりなく実行を続ける。これは、成功すれば空文字列を返し、そうでなければinvalidを返す。
showStatus(message, defaultInput)−この関数は、ＰＯＳ画面上のステータス行にmessageを示す。これは、成功すれば空文字列を返し、そうでなければinvalidを返す。
【００５３】
２．４−ＷＭＬＳｃｒｉｐｔのライブラリ及び関数−ＷＭＬＳｃｒｉｐｔ標準ライブラリへの拡張機能．
このセクションでは、ＷＡＰブラウザをＰＯＳクライアントシステムに変えるために当該ＷＡＰブラウザに提供される、ＷＭＬＳｃｒｉｐｔ拡張機能ライブラリを提示する。
【００５４】
【表７】
2008502957.tif 000009
【表８】
2008502957.tif 000010
【００５５】
ＰＯＳクライアントシステム用に作成された固有のライブラリ及び関数
【００５６】
２．４．１−ＲＥＣＯＲＤＳＴＯＲＥ（レコードストア）の拡張されたライブラリ．
このライブラリの目的は、インデックスが付与されたファイルにデータを格納して情報の永続性を可能にすることにある。
【００５７】
関数のリスト：
openStore(Name, CreateIfNecessary)−この関数は、生成されるファイルの名前と、ファイルが存在しない場合に当該ファイルが生成されるべきであるか否かを示すブール変数CreateIfNecessaryとをパラメータとして受け取る。ファイルの生成と同時に、各インデックスファイルも生成される。オープンファイルのインデックス（ｉｄ）の整数を返し、また、ファイルのオープン又は生成に失敗した場合にはinvalidを返す。
closeStore(StoreId)−この関数は、オープンファイルのインデックス（StoreId）をパラメータとして受け取り、データ及びインデックスファイルを閉じる。閉じたファイルのインデックス（StoreId）の整数を返す。ファイルを閉じることに成功しない場合、又はStoreIdが存在しない場合には、これはinvalidを返す。
deleteStore(Name)−この関数は、開かれたファイルの名前を含む文字列Nameをパラメータとして受け取り、このデータファイル及びそのインデックスファイルを削除する。これは、ファイルの削除に成功すればゼロ以上の整数を返し、成功しなければinvalidを返す。
getNumRecords(StoreId)−この関数は、開かれたファイルのインデックスを含む整数StoreIdをパラメータとして受け取り、登録されたレコードの数を取得する。これは、レコード数の取得に成功すればゼロ以上の整数を返し、そうでなければinvalidを返す。
getSize(StoreId)−この関数は、開かれたファイルのインデックスを含む整数StoreIdをパラメータとして受け取り、そのサイズをバイト数として取得する。この動作が成功すれば、これは、ファイルサイズ（合計バイト数）の整数を返し、そうでなければinvalidを返す。
addRecord(StoreId, Record)−この関数は、開かれたファイルのインデックスを含む整数StoreIdと、ファイルに含まれるべきデータを含む１つの文字列Recordとをパラメータとして受け取る。付加に成功すれば、これは、データファイルにおいて付加されたレコードのインデックスの整数を返し、そうでなければinvalidを返す。
deleteRecord(StoreId, RecordId)−この関数は、２つの整数、すなわち、開かれたファイルのインデックスを含むStoreIdと、ファイルから除外されるべきレコードのインデックスを含むRecordIdとをパラメータとして受け取る。削除に成功すれば、これは、その削除されたレコードのインデックスの整数を返し、そうでなければinvalidを返す。
getRecord(StoreId, RecordId)−この関数は、２つの整数、すなわち、開かれたファイルのインデックスを含むStoreIdと、検索されるべきレコードのインデックスを含むRecordIdとをパラメータとして受け取る。読み出し動作に成功すれば、これは、その検索されたレコードのインデックスの整数を返し、そうでなければinvalidを返す。
getNextRecordId(StoreId, RecordId)−この関数は、２つの整数、すなわち、開かれたファイルのインデックスを含むStoreIdと、検索されるべき先行レコードのインデックスを含むRecordIdとをパラメータとして受け取る。次のレコードのインデックスの発見に成功、これは、上記インデックスを整数として返し、そうでなければinvalidを返す。
getRecordSize(StoreId, RecordId)−この関数は、２つの整数、すなわち、開かれたファイルのインデックスを含むStoreIdと、サイズを取得すべきレコードのインデックスを含むRecordIdとをパラメータとして受け取る。レコードのインデックスの発見に成功すれば、これは、そのサイズのバイト数の整数を返し、そうでなければinvalidを返す。
setRecord(StoreId, RecordId, RecordValue)−この関数は、開かれたファイルのインデックスを含む整数StoreIdと、変更されるべきレコードのインデックスを含む整数RecordIdと、記録されるべき新規な値を含む文字列RecordValueとをパラメータとして受け取る。この関数は、レコードがそのサイズを変えない限り、与えられたレコード内の情報の更新に有益である。変更が成功した場合は、そのレコードのRecordIdが返され、そうでなければ返り値はinvalidになる。レコードのサイズが同じでなければ、これはinvalidを返す。この場合、それは除外されなければならず、新たなレコードにおける新たな情報が記録されるべきである。
createDatabase(BaseName, SourceName)−この関数は、ソースファイルSourceNameから、Basenameという名前でレコードストアを生成し、これらはともにパラメータとして提供される。この関数は、成功した場合にはゼロ又は正の整数を返し、レコードストアを生成することができなければ、invalidを返す。
findRecord(DB, Key, Pos, Separator, Ordered)−この関数は、Separator（セパレータ）に対する位置Posに存在する文字列Keyを探索する。所望のフィールドに関連してファイルDBが編成される場合には、パラメータOrderedはtrueに等しくなってもよく、DBにおけるバイナリ探索の実現が可能になる。
setOrderKey(DB, Pos, Separator)−この関数は、関数findFirstRecord()及びfindNextRecord()のために、Separatorに対する位置Ｐｏｓに従ってDBファイル内の探索順序を定義する。
findFirstRecord(StoreId)−この関数は、開かれたファイルのハンドル（StoreId）をパラメータとして受け取り、その最初のレコードインデックスを返す。関数setOrderKey()は、以前に呼び出されていなければならない。関数setOrderKey(DB, Pos, Separator)によって定義される順序に従って、最初のレコードの位置に関連する整数インデックスを返し、失敗した（例えば、ファイルを開くことができない）場合は、invalidを返す。
findNextRecord(StoreId)−この関数は、開かれたファイルのハンドル（StoreId）をパラメータとして受け取り、次のレコードインデックスを返す。関数findFirstRecord()は、以前に呼び出されていなければならない。関数によって定義される順序に従って、次のレコードの位置に関連する整数インデックスを返し、失敗した（例えば、ファイルを開くことができない）場合は、invalidを返す。
findRepeatedRecord(DB, Key, Pos, Separator, Ordered)−この関数は、findRecord()と同様に作用するが、反復されるキーによるレコードの発生を考慮している。発見されたレコードのＩｄを返す。
defragStore(StoreName)−この関数は、削除されたレコードを、storeNameという名前のレコードストアから物理的に除去する。レコードストアは、呼び出されたときに開いていてはならない。失敗すれば、これはinvalidを返す。
appendLastRecord(StoreId, string)−この関数は、最後の物理的レコードの内容が削除されていなければ、当該内容に対して文字列引数を付加する。これは、addRecord()の直後に呼び出されるべきである。これは、RecordIdを返す。
addRecordFromVars(StoreId, varList)−この関数は、セミコロンで分離されたｖａｒの名前のリストvarListに定義されている変数を用いて、StoreIdによって識別される開かれたレコードストアへレコードを追加する。これは、追加されるレコードのｉｄを返すが、それは、関数setVarsFromRecord()又はgetVarFromRecord()を用いる後の利用のために保存されるべきである。
setVarsFromRecord(StoreId, RecordId)−この関数は、StoreIdにより識別される開かれたレコードストアのRecordIdで識別されるレコードから得られる変数を用いて、ＷＭＬコンテキストを設定する。これは、関数addRecordFromVars()によって保存されているはずの、追加されて読み出されたレコードのｉｄを返す。
getVarFromRecord(StoreId, RecordId, VarName)−この関数は、StoreIdにより識別される開かれたレコードストアのRecordIdで識別されるレコードから、VarNameという名前の変数の値を返す。上記変数がレコードによって定義されていなければ、これは空文字列を返す。
setView(DB, Key, Pos, Separator)−この関数は、Separatorに対する位置Posにおいてフィールド上の値キーを有する、レコードストアDBのナビゲーションフィルタを定義する。レコードストアは、同じフィールドによって順序付けられていることが想定される。この関数を用いて生成されるビューは、基本的なナビゲーション機能に対して、レコードストアにおける完全に透過的な選択を提供する。
deleteView(DB)−この関数は、レコードストアDBのために現時点で設定されているビューによって選択されるレコードを削除する。
setFilterView(DB, Key, Pos, Separator)−この関数は、Separatorに対する位置Posにおいてフィールド上の値キーを有する、レコードストアDBのナビゲーションフィルタを定義する。レコードストアは、いかなるフィールドによる順序付けも想定されていない。この関数を用いて生成されるビューは、基本的なナビゲーション機能に対して、レコードストアにおける完全に透過的な選択を提供するが、ビューの外部のレコードは、RecordStore.getNextRecordId()が呼び出されるときに順次スキップされる。
【００５８】
２．４．２  ＣＯＮＣＯＬＥ（コンソール）の拡張されたライブラリ．
このライブラリは、アプリケーションのデバッグに使用される関数のセットを含む。
【００５９】
関数のリスト：
print(string)−この関数は、クライアントシステムの情報窓に、デバッグするテキストstringを示す。テキストの後に改行文字は挿入されない。表示に成功すれば１を返し、そうでなければinvalidを返す。
printLn(string)−この関数は、クライアントシステムの情報窓に、デバッグテキストstringを示す。これは、テキストの後に改行文字を挿入する。表示に成功すれば１を返し、そうでなければinvalidを返す。
【００６０】
２．４．３  ＣＲＹＰＴＯ（暗号）の拡張されたライブラリ．
このライブラリは、ウェブを介してより高いセキュリティで送信されるべき情報の暗号化及び復号化に使用される関数のセットを含む。
【００６１】
関数のリスト：
encrypt(Message, SessionKey)−この関数は、ＤＥＳアルゴリズムで暗号化されたmessageを返す。messageのサイズが５１２バイトより大きい場合、又は暗号化に成功しない場合には、messageはinvalidを返す。SessionKey（セッション鍵）は、１６進数エンコードされた８バイト鍵に対応する１６バイト文字列である。返り値は、Message引数の２倍の長さを有する、１６進数エンコードされたＡＳＣＩＩ（アスキー）文字列である。
decrypt(Message, SessionKey)−この関数は、ＤＥＳアルゴリズムで復号化されたmessageパラメータを返す。Messageのサイズが１０２４バイトより大きい場合、又は暗号化に成功しない場合には、messageはinvalidを返す。SessionKeyは、１６進数エンコードされた８バイト鍵に対応する１６バイト文字列である。Messageパラメータは、返り値の２倍の長さを有する、１６進数エンコードされたＡＳＣＩＩ文字列であるものとされている。
encrypt2DES(Message, SessionKey)−この関数は、ＤＥＳアルゴリズムで暗号化されたmessageパラメータを返す。暗号化を行う前に、これは、メッセージに、その長さについてのＢＣＤ表現のプレフィクスを付加する。Messageのサイズが５１２バイトより大きい場合、又は暗号化に成功しない場合には、messageはinvalidを返す。SessionKeyは、１６進数エンコードされた８バイト鍵に対応する１６バイト文字列である。返り値は、Message引数の２倍の長さを有する、１６進数エンコードされたＡＳＣＩＩ文字列である。
decrypt2DES(Message, SessionKey)−この関数は、ＤＥＳアルゴリズムで復号化されたmessageパラメータを返す。Messageのサイズが１０２４バイトより大きい場合、又は暗号化に成功しない場合には、messageはinvalidを返す。Messageパラメータは、返り値の２倍の長さを有する１６進数エンコードされたＡＳＣＩＩ文字列に、上記文字列の長さサイズを付加したものであることが想定される。
xor(string1, string2)−この関数は、１６進数エンコードされた２つのＡＳＣＩＩ文字列を受け取り、これらのバイナリ値間の排他的論理和に対応する１６進数エンコードされたＡＳＣＩＩ文字列を返す。
encrypt2DESHexa(Message, SessionKey)−この関数は、ＤＥＳアルゴリズムで暗号化されたmessageパラメータを返す。暗号化を行う前に、これは、メッセージに、その長さについてのＢＣＤ表現のプレフィクスを付加する。Message引数は、１６進数エンコードされたＡＳＣＩＩ文字列であるとされている。Messageのサイズが１０２４バイトより大きい場合、又は暗号化に成功しない場合には、messageはinvalidを返す。SessionKeyは、１６進数エンコードされた８バイト鍵に対応する１６バイト文字列である。返り値は、Message引数と同じ長さを有する、１６進数エンコードされたＡＳＣＩＩ文字列である。
decrypt2DESHexa(Message, SessionKey)−この関数は、ＤＥＳアルゴリズムで復号化されたmessageパラメータを返す。Messageのサイズが１０２４バイトより大きい場合、又は暗号化に成功しない場合には、messageはinvalidを返す。SessionKeyは、１６進数エンコードされた８バイト鍵に対応する１６バイト文字列である。Messageパラメータは、返り値と同じ長さを有する１６進数エンコードされたＡＳＣＩＩ文字列に、上記文字列の長さサイズを付加したものであることが想定される。
encryptHexa(Message, SessionKey)−encryptと同様であるが、messageは１６進数表現である。返り値は、Message引数の２倍の長さを有する、１６進数エンコードされたＡＳＣＩＩ文字列である。
decryptHexa(Message, SessionKey)−encryptと同様であるが、messageは１６進数表現である。返り値は、ＤＥＳアルゴリズムで復号化されたmessageパラメータである。
【００６２】
２．４．４  ＰＲＩＮＴＥＲ（プリンタ）のライブラリ．
このライブラリは、印刷に使用される関数のセットを含む。
【００６３】
関数のリスト：
open()−この関数は、プリンタへの出力を開く。これは、成功すれば、取得されたハンドルを返し、そうでなければinvalidを返す。
setWidthMode(mode)−この関数は、mode（モード）パラメータをベースにして、プリンタへ送られるフォントの幅を設定する。modeは、整数又は浮動小数点に準拠したものへの変換でなければならない。これは、成功すればtrueを返し、失敗した場合もしくはパラメータmodeが正しくない場合にはinvalidを返す。
setHeightMode(mode)−この関数は、パラメータmodeをベースにして、プリンタへ送られるフォントの高さを設定する。modeは、整数又は浮動小数点に準拠したものへの変換でなければならない。これは、成功すればtrueを返し、失敗した場合もしくはパラメータmodeが正しくない場合にはinvalidを返す。
print(string)−この関数は、stringの内容を印刷する。印刷が成功すればtrueを返し、そうでなければinvalidを返す。
printLn(string)−この関数は、stringの内容を印刷し、印刷の後に改行文字を追加する。印刷が成功すればtrueを返し、そうでなければinvalidを返す。
close()−この関数は、プリンタへの出力をクローズし、空文字列（""）を返す。
printLogo(LOGOFileName)−この関数は、印刷されるＬＧＯフォーマットのビットマップが位置したファイルへのパスを、パラメータとして受け取る。この関数は、印刷に失敗すれば負の値を返し、成功すれば「１」を返す。
【００６４】
２．４．４  ＣＡＲＤ（カード）のライブラリ．
このライブラリは、金融機関のカードのＢＩＮ範囲のチェックに使用される関数のセットを含む。
【００６５】
関数のリスト：
checkRanges(currentPAN, privateLabelSuffix)−この関数は、変数ＭＡＸ｜ｂ｜Ｘ及びＭＩＮ｜ｂ｜Ｘ上において、ＰＯＳ環境から読み出されるものに対して、与えられたカードのＰＡＮの範囲をチェックする。ここで、│ｂ│は、与えられたprivateLabelSuffixを示し、Ｘはそのラベルの範囲のカウンタを表す。Ｘは０で始まる。currentPANが範囲Ｘに適合すれば、ＩＮＦ｜ｂ｜Ｘになる。それがいずれの範囲にも適合しなければ、この関数はinvalidを返す。プライベートラベルの接尾部が与えられなければ、デフォルト値「ＰＡＮ」であるとされる。
checkRangesInStore(currentPAN, StoreName)−この関数は、StoreNameのレコードストアのレコードから読み出されるものに対して、与えられたカードＰＡＮの範囲をチェックする。各レコードは、セミコロンで分離された３要素の文字列、例えば「4400;4999;returnedinfo」を有することが想定される。ＰＡＮは、各レコードの最初の２要素間に適合するまで、当該２要素に対してチェックされる。この関数は、適合する最初のレコードの第３の要素を返す。どのレコードの範囲にも適合しなければ、invalidを返す。
【００６６】
２．４．５  ＳＹＳＴＥＭ（システム）のライブラリ．
このライブラリは、システム時間ユーティリティにアクセスするために使用される関数のセットを含む。
【００６７】
関数のリスト：
currentTimeSecs()−この関数は、１９７０年１月１日００時００分００秒からの現時点におけるＰＯＳ時刻を、秒を単位として返す。
datetime2Seconds(datetime)−この関数は、１９７０年１月１日００時００分００秒からdatetimeにより「YYYYMMDDHHMMSS」のフォーマットで表される日時までの経過秒数を返す。
seconds2datetime(seconds)−この関数は、１９７０年１月１日００時００分００秒以降の経過秒数に対応する日時を返す。返り値のフォーマットは「YYYYMMDDHHMMSS」である。
isValidDate(datetime)−この関数は、datetime引数が「YYYYMMDDHHMMSS」のフォーマットで有効な日付／時刻を表していればtrueを返す。
datetime（）−この関数は、現在のＰＯＳ日時を返す。返り値のフォーマットは「YYYYMMDDHHMMSS」である。
currentTicks()−この関数は、ＰＯＳをスタートさせて以降の経過時間をミリ秒単位で返す。
【００６８】
２．４．６  ＩＳＯのライブラリ．
このライブラリは、ＩＳＯ８５８３メッセージに対処するための関数のセットを含む。
【００６９】
charToHex(String)−この関数は、入力としてStringを受け取り、ＡＳＣＩＩの入力文字列の１６進数表現を有する別の文字列を返す。
hexToChar(String)−この関数は、（ＡＳＣＩＩの）Stringの１６進数表現であるStringを入力として受け取り、表現されたStringを返す。返すStringは常に、ソースStringの半分のサイズを有する。ソースStringの長さが奇数であれば、この関数はinvalidを返す。
readPackager(String)−この関数は、ＩＳＯ８５８３メッセージのパッキングに使用されるパッケージャ（packager）を更新する。入力Stringは、パッケージャの定義を有するファイルのＰＡＴＨ（パス）である。
【００７０】
返り値は、エラーコードである。返り値がゼロであれば、エラーは発生していない。
【００７１】
パッケージャを定義するファイルのフォーマットは、以下の通りである。
【００７２】
［表１］
――――――――――――――――――――――――――――――――――――
FIELDID=PACKAGER;LEN<;INNERPACKAGER FILEPATH>
Example:
#これはコメントである
0=IFB_NUMERIC;4
1=IFB_BITMAP;16
2=IFB_LLNUM;19
3=IFB_NUMERIC;6
#4=IFB_NUMERIC;12
34=IFB_LLLIBINARY;999;f:subdef.pdf
――――――――――――――――――――――――――――――――――――
【００７３】
ファイルのサイズを削減するために、また構文解析を行う時間を減少させるために、パッケージャ定義ファイルには空白文字を入れない。このファイルは、通常のテキストファイル（テキストフォーマット）である。
【００７４】
ＩＳＯフィールドは、ＩＳＯメッセージにおいてデータが送られるフォーマットを識別する、パッケージャを有する。フィールドは、オプションとして、内部フィールドを有してもよい。内部パッケージャは、クライアントシステムにフィールドの構文解析を実行させるように定義されてもよい。これを行うために、内部パッケージャの定義を含むファイルパスが指定されてもよい。
【００７５】
可能なパッケージャは、下記の通りである：ＩＦＢ＿ＢＩＴＭＡＰ、ＩＦ＿ＨＥＸ、ＩＦＡ＿ＬＬＨＥＸ、ＩＦＡ＿ＬＬＬＨＥＸ、ＩＦＢ＿ＬＬＨＥＸ、ＩＦＢ＿ＬＬＬＨＥＸ、ＩＦ＿ＢＩＮＡＲＹ、ＩＦＡ＿ＬＬＢＩＮＡＲＹ、ＩＦＡ＿ＬＬＬＢＩＮＡＲＹ、ＩＦＢ＿ＬＬＢＩＮＡＲＹ、ＩＦＢ＿ＬＬＬＢＩＮＡＲＹ、ＩＦ＿ＣＨＡＲ、ＩＦＡ＿ＬＣＨＡＲ、ＩＦＡ＿ＬＬＣＨＡＲ、ＩＦＡ＿ＬＬＬＣＨＡＲ、ＩＦＢ＿ＬＬＣＨＡＲ、ＩＦＢ＿ＬＬＬＣＨＡＲ、ＩＦＡ＿ＮＵＭＥＲＩＣ、ＩＦＡ＿ＬＬＮＵＭ、ＩＦＡ＿ＬＬＬＮＵＭ、ＩＦＢ＿ＮＵＭＥＲＩＣ、ＩＦＢ＿ＬＬＮＵＭ、ＩＦＢ＿ＬＬＬＮＵＭ、ＩＦＡ＿ＡＭＯＵＮＴ、ＩＦＢ＿ＡＭＯＵＮＴ、ＩＦＢ＿ＬＬＬＩＨＥＸ、ＩＦＢ＿ＬＬＬＩＢＩＮＡＲＹ、ＩＦＢ＿ＬＬＬＩＣＨＡＲ、及びＩＦＢ＿ＬＬＬＩＮＵＭ。
【００７６】
パッケージャには、６つのタイプ、すなわち、Ｎｕｍｅｒｉｃ、Ａｍｏｕｎｔ、Ｃｈａｒａｃｔｅｒ、Ｈｅｘａ、Ｂｉｎａｒｙ、及びＢｉｔｍａｐがある。
【００７７】
文字Ｌ、ＬＬ又はＬＬＬは、フィールドの最大サイズを示す。フィールドがＩＦＡ＿ＬＬＬＮＵＭであれば、そのサイズが９９９より大きくはならないことを意味する。
【００７８】
接頭部ＩＦＡ又はＩＦＢは、フィールドの数値部分がＡＳＣＩＩ又はＢＣＤで格納されることを表す。
【００７９】
いくつかのパッケージャ名（例：ＩＦＢ＿ＬＬＬＩＮＵＭ）における「Ｉ」は、フィールドが識別されることを表す。これは、内部フィールドが識別されるべきである内部パッケージャを定義する場合に有益である。
【００８０】
Ｎｕｍｅｒｉｃ：このパッケージャは、数値表現を有する文字列（例えば「１２３４５」）を受け取る。
【００８１】
［表２］
結果：
――――――――――――――――――――――――――――――――――――
IFA_NUMERIC: 12345  （文字列として送られる数字）
IFA_LLNUM: 0512345  （ＡＳＣＩＩ表現のフィールドサイズ）
IFA_LLLNUM: 00512345  （ＡＳＣＩＩ表現のフィールドサイズ）
IFB_NUMERIC: x12 x34 x50  （ＢＣＤ表現で格納されている数字）
IFB_LLNUM: x05 x12 x34 x50  （同じくＢＣＤ表現のフィールドサイズ）
IFB_LLLNUM: x00 x05 x12 x34 x50  （同じくＢＣＤ表現のフィールドサイズ）
IFB_LLLINUM: x00 x05 x23 x12 x34 x50  （ｉｄは２３。同じくＢＣＤ表現）
――――――――――――――――――――――――――――――――――――
【００８２】
Ａｍｏｕｎｔ：このパッケージャはｎｕｍｅｒｉｃに類似するものであるが、信号を表す文字が先行している点が異なる。このパッケージャへの入力は、「Ｄ１２０５０」のような文字列であってもよい。
【００８３】
［表３］
結果：
――――――――――――――――――――――――――――――――――――
IFA_AMOUNT: C12345  （文字列として送られる数字）
IFB_AMOUNT: x43 x12 x34 x50  （数字はＢＣＤ表現で送られる）
――――――――――――――――――――――――――――――――――――
【００８４】
Ｃｈａｒａｃｔｅｒ：このパッケージャは、「this text is ok! 12345」のような文字列を受け取る。
【００８５】
［表４］
結果：
――――――――――――――――――――――――――――――――――――
IFA_CHAR: 12345  （文字列として送られるフィールド）
IFA_LCHAR: 512345  （ＡＳＣＩＩ表現のフィールドサイズ）
IFA_LLCHAR: 0512345  （ＡＳＣＩＩ表現のフィールドサイズ）
IFA_LLLCHAR: 00512345  （ＡＳＣＩＩ表現のフィールドサイズ）
IFB_CHAR: x31 x32 x33 x34 x35  （文字列として送られるフィールド）
IFB_LLCHAR: x05 x31 x32 x33 x34 x35  （ＢＣＤ表現のフィールドサイズ）
IFB_LLLCHAR: x00 x05 x31 x32 x33 x34 x35  （同じくＢＣＤ表現のフィールドサイズ）
IFB_LLLICHAR: x00 x05 x23 x31 x32 x33 x34 x35  （ｉｄは２３。同じくＢＣＤ表現）
――――――――――――――――――――――――――――――――――――
【００８６】
Ｈｅｘａ：このパッケージャは、バイナリフィールドを（１６進数で）表現する文字列を受け取る。この１６進数文字列はバイナリフィールドに変換され、メッセージに付加される。
【００８７】
［表５］
結果：
――――――――――――――――――――――――――――――――――――
IF_HEX: x31 x32 x33 x34 x35  （２進数で送られるフィールド）
IFA_LLHEX: x30 x35 x31 x32 x33 x34 x35  （ＡＳＣＩＩ表現のサイズ（05））
IFA_LLLHEX: x30 x30 x35 x31 x32 x33 x34 x35  （ＡＳＣＩＩ表現のサイズ（005））
IFB_LLHEX: x05 x31 x32 x33 x34 x35  （ＢＣＤ表現のサイズ（05））
IFB_LLLHEX: x00 x05 x31 x32 x33 x34 x35  （ＢＣＤ表現のサイズ（005））
――――――――――――――――――――――――――――――――――――
【００８８】
Ｂｉｎａｒｙ：このパッケージャはバイナリバッファを受け取り、メッセージ内にバイナリフィールドを生成する。ＷＭＬＳｃｒｉｐｔにはバイナリタイプが存在しないので、このパッケージャは内部フィールドのラッピング（wrap）を行うために意図的に生成された。内部フィールドはｎｕｍｅｒｉｃ＋ｃｈａｒであってもよいが、外部フィールドはバイナリとして定義されるべきである。内部フィールドのパッキングに際しては、バイナリバッファの結果（外部フィールド）がエンジンにより自動的にバイナリとしてパックされる。
【００８９】
［表６］
結果：
――――――――――――――――――――――――――――――――――――
IF_BINARY: x31 x32 x33 x34 x35  （バイナリで送られるフィールド）
IFA_LLBIN: x30 x35 x31 x32 x33 x34 x35  （ＡＳＣＩＩ表現のサイズ（05））
IFA_LLLBIN: x30 x30 x35 x31 x32 x33 x34 x35  （ＡＳＣＩＩ表現のサイズ（005））
IFB_LLBIN: x05 x31 x32 x33 x34 x35  （ＢＣＤ表現のサイズ（05））
IFB_LLLBIN: x00 x05 x31 x32 x33 x34 x35  （ＢＣＤ表現のサイズ（005））
――――――――――――――――――――――――――――――――――――
【００９０】
Ｂｉｔｍａｐ：これは、メッセージにバイナリビットマップを格納する特別なパッケージャである。このビットマップは、メッセージフィールドの存在に基づいて生成される。このパッケージャは、フィールド１に使用される。
【００９１】
transactMessage(String host, Int port, String fieldlist, String channel, String header, String trailler, String mandatoryFields)−この関数は、構成されるパッケージャ及び使用されるfieldlist（フィールドリスト）に基づいてメッセージを送受信する。フィールドリストは、メッセージにおいて送られるフィールド名のラッピングを行う文字列である。複数のトークンは、文字「；」によって分離される。フィールドは、ルールf<filed ID>により命名される。送られる名前がサブフィールド名であれば、ルールはf<filed ID>s<sub ID>である。
【００９２】
フィールド・リストの例は、以下の通りである：
"f0;f2;f3;f28;f11;f34s0;f34s2s0;f34s2s2;f34s3;f34s5;f41;f70"
【００９３】
f34はf34s0、f34s2、f34s3及びf34s5で構成され、f34s2はf34s2s0及びf34s2s2で構成される。この場合は、３つのレベルの内部フィールドが存在することがわかる。
【００９４】
メッセージにおいて送られるヘッダ及びトレーラは、送られるバイナリのヘッダ及びトレーラを表す１６進数文字列である。
【００９５】
例えば、「0600030001」は、 x06 x00 x03 x00 x01を生成する。
【００９６】
選択されるチャンネルは、メッセージにおいてメッセージ長が格納される方法を反映する。利用可能なチャンネルは、「ＡＳＣＩＩ」、「ＲＡＷ」、「ＮＡＣ」及び「ＮＣＣ」である。
【００９７】
［表７］
例（メッセージサイズは２５６である）: 
――――――――――――――――――――――――――――――――――――
ASCII: x30 x32 x35 x36 ("256")
RAW: x00 x00 x01 x00 (0000-0000 0000-0000 0000-0001 0000-0000)
NAC: x01 x00 (0000-0001 0000-0000)
NCC: x02 x56 (BCD)
――――――――――――――――――――――――――――――――――――
【００９８】
fieldlistパラメータにおいて送られるフィールドの値は、値を変数としてメモリに格納しなければならない。これらは、「WMLBrowser.setvar(fieldname, value);」で設定されてもよい。
【００９９】
メッセージはサーバへ送られ、スクリプトは応答の待機をブロックする。エラーが発生すれば、それは関数の返り値として検索され、そうでなければゼロが返される。
【０１００】
応答メッセージは、パッケージャのルールによって構文解析される。発見されたフィールド及びサブフィールドもまた、変数としてメモリに保存される。この応答変数の命名規則は送信の場合と同じであるが、ＩＤに先行する「ｆ」の代わりに、「ｒ」が接尾部になる。
【０１０１】
mandatoryFields（必須フィールド）引数は、fieldlistと同様にフォーマット処理される文字列である。これは、応答のチェックを実行させる。ある必須フィールドが欠落しているときにはエラーが発生し、トランザクションは処理されない。
【０１０２】
関数が返り値を発生する瞬間などから以降、アプリケーションは変数を回復し、それらの変数を検証し、かつ所望の処理を実行しなければならない。受信確認（領収書）が印刷されてもよい。
【０１０３】
transactFromRecord(String host, Int port, Int storeId, Int recordId, String channel, String header, String trailer, String mandatoryFields)−この関数は、構成されるパッケージャ及び設定されるＩＳＯフィールドに基づいてメッセージを送受信する。フィールドは、レコードストアのレコード内に格納される。レコードストアの識別情報はstoreIdパラメータとしてわたされ、レコードの識別情報は記録されたパラメータとしてわたされる。ＩＳＯフィールドによりレコードを構築するためには、RecordStoreライブラリのaddRecordFromVars()関数を使用する必要がある。
【０１０４】
この関数は、ＩＳＯトランザクションのための引数（この場合は、ＩＳＯフィールド）を設定する代替方法を提供する。
【０１０５】
メッセージにおいて送られるヘッダ及びトレーラは、送られるバイナリのヘッダ及びトレーラを表す１６進数文字列である。
【０１０６】
例えば、「0600030001」は、 x06 x00 x03 x00 x01を生成する。
【０１０７】
選択されるチャンネルは、メッセージにおいてメッセージ長が格納される方法を反映する。利用可能なチャンネルは、「ＡＳＣＩＩ」、「ＲＡＷ」、「ＮＡＣ」及び「ＮＣＣ」である。
【０１０８】
［表８］
例（メッセージサイズは２５６である）: 
――――――――――――――――――――――――――――――――――――
ASCII: x30 x32 x35 x36 ("256")
RAW: x00 x00 x01 x00 (0000-0000 0000-0000 0000-0001 0000-0000)
NAC: x01 x00 (0000-0001 0000-0000)
NCC: x02 x56 (BCD)
――――――――――――――――――――――――――――――――――――
【０１０９】
mandatoryFields引数は、応答内に存在するか否かについてチェックされるべきフィールドのリストである。
【０１１０】
mandatoryFieldsリストの例は、以下の通りである：
"f0;f2;f3;f28;f11;f34s0;f34s2s0;f34s2s2;f34s3;f34s5;f41;f70"
【０１１１】
f34はf34s0、f34s2、f34s3及びf34s5で構成され、f34s2はf34s2s0及びf34s2s2で構成される。この場合は、３つのレベルの内部フィールドが存在することがわかる。
【０１１２】
mandatoryFieldsは、応答をチェックさせる。ある必須フィールドが欠落しているときにはエラーが発生し、トランザクションは処理されない。
【０１１３】
応答メッセージフィールドはレコードストアの新しいレコード内に格納され、そのｉｄが関数の返り値になる。フィールドを変数で回復させるためには、RecordStoreライブラリのSetVarsFromRecord()関数を呼び出す必要がある。変数は、transactMessage()の場合と同じ命名規則を用いて設定される。
【０１１４】
transactFromRecordToVar(String host, Int port, Int storeId, Int recordId, String channel, String header, String trailer, String mandatoryFields)−この関数は、構成されるパッケージャ及び設定されるＩＳＯフィールドに基づいてメッセージを送受信する。フィールドは、レコードストアのレコード内に格納されるが、返り値はISORESPという名前のＷＭＬ変数に設定される。結果的に得られる最終的な長さがＷＭＬ変数の最大長さ（５１２）を超えたとき、超過したバイトは、ｎ＝１，…としてISORESPnという名前を有する複数の５００バイト変数に分割され、さらに、ＷＭＬ変数ISONRESPが、ISORESPを含む上記結果の格納に必要な変数の合計数で設定される。レコードストアの識別情報はstoreIdパラメータとして送出され、レコードの識別情報はrecordedパラメータとして送出される。ＩＳＯフィールドによりレコードを構築するためには、RecordStoreライブラリのaddRecordFromVars()関数を使用する必要がある。
【０１１５】
この関数は、ＩＳＯトランザクションのための引数（この場合は、ＩＳＯフィールド）を設定する代替方法を提供する。
【０１１６】
メッセージ内で送られるヘッダ及びトレーラは、送られるバイナリのヘッダ及びトレーラを表す１６進数文字列である。
【０１１７】
例えば、「0600030001」は、 x06 x00 x03 x00 x01を生成する。
【０１１８】
選択されるチャンネルは、メッセージにおいてメッセージ長が格納される方法を反映する。利用可能なチャンネルは、「ＡＳＣＩＩ」、「ＲＡＷ」、「ＮＡＣ」及び「ＮＣＣ」である。
【０１１９】
［表９］
例（メッセージサイズは２５６である）: 
――――――――――――――――――――――――――――――――――――
ASCII: x30 x32 x35 x36 ("256")
RAW: x00 x00 x01 x00 (0000-0000 0000-0000 0000-0001 0000-0000)
NAC: x01 x00 (0000-0001 0000-0000)
NCC: x02 x56 (BCD)
――――――――――――――――――――――――――――――――――――
【０１２０】
mandatoryFields引数は、応答内に存在するか否かについてチェックされるべきフィールドのリストである。
【０１２１】
mandatoryFieldsリストの例は、以下の通りである：
"f0;f2;f3;f28;f11;f34s0;f34s2s0;f34s2s2;f34s3;f34s5;f41;f70"
【０１２２】
f34はf34s0、f34s2、f34s3及びf34s5で構成され、f34s2はf34s2s0及びf34s2s2で構成される。この場合は、３つのレベルの内部フィールドが存在することがわかる。
【０１２３】
mandatoryFieldsは、応答をチェックさせる。ある必須フィールドが欠落しているときにはエラーが発生し、トランザクションは処理されない。
【０１２４】
応答メッセージフィールドはレコードストアの新しいレコード内に格納され、そのｉｄが関数の返り値になる。フィールドを変数で回復させるためには、RecordStoreライブラリのSetVarsFromRecord()関数を呼び出す必要がある。変数は、transactMessage()の場合と同じ命名規則を用いて設定される。
【０１２５】
hexToInt(String hexa, Boolean BigEndian)−この関数は、整数の１６進数表現を受け取る。スクリプトエンジンにおけるこの整数は４バイト長であり、よって１６進数パラメータは、整数バイトを表現する２、４、６又は８文字の長さの文字列であってもよい。この表現は、「ビッグエンディアン」又は「リトルエンディアン」であることが可能であり、これはブール値パラメータBigEndianにおいて通知される（ビッグエンディアン表現で動作する場合は、これをtrueに設定する）。返り値は、所望される整数である。
intToHex(Int i, Boolean BigEndian)−この関数は、整数を、整数の１６進数表現に変換する。
【０１２６】
さらに、クライアントシステムは、ＥＭＶ標準インタフェースを介してピンパッド装置及びＰＯＳ  ＥＭＶカーネルへアクセスするために使用される関数のセットを含む、PinPadと呼ばれるライブラリを含む。
【産業上の利用可能性】
【０１２７】
本発明は、様々な業務分野に応用されるものであり、とりわけ、健康管理サービス／保険、ロイヤルティ、リモートバンキング、請求書への支払い、プリペイドに補充に関する金融、ギフトカード、振替、年齢確認、時間及び労務管理などの分野で応用される。
【０１２８】
本明細書で説明したアプリケーションは、本発明により提供される複数の可能性のうちの一実施例である。異なる接続手段、装置及びネットワークを使用すれば、多くの異なるアプリケーションモードを設計することができる。本発明の真の範囲は、請求の範囲によって画成される。
【図面の簡単な説明】
【０１２９】
【図１】異なる通信プロトコルを介して複数のネットワークへ接続されるＰＯＳ端末装置を示す図である。
【図２】従来技術によって教示される各ＰＯＳ端末装置の個々のカスタマイズを示す図である。
【図３】カスタマイズされた任意のＰＯＳ端末装置とアプリケーションサーバとの通信を本発明が可能にする方法を示す図である。
【図４】本発明により実行されるアップロード−ダウンロードの図及び電子的な業務処理の図を示す。
【図５】ＰＯＳクライアントシステムのアプリケーションのアップロード−ダウンロードシーケンスを示す図である。
【図６】ＰＯＳクライアントシステムの電子的な業務処理のシーケンスを示す図である。
【図７】ＰＯＳクライアントシステムのアーキテクチャ及びプロトコル層を示す図である。
【図１】
2008502957.tif 000011
【図２】
2008502957.tif 000012
【図３】
2008502957.tif 000013
【図４】
2008502957.tif 000014
【図５】
2008502957.tif 000015
【図６】
2008502957.tif 000016
【図７】
2008502957.tif 000017
【国際調査報告】
2008502957.tif 000018