1. はじめに

1.1 目的

従来クライアント/サーバ方式によるデータベースの検索・更新システムは"stateful"すなわちセッション指向のプロトコルの上に構築されていた。ところが最近のインターネットの主流はwebブラウザ/サーバで使用されているHTTP[1]のようにセッションの概念をもたない"stateless"なプロトコルである。本プロトコルはデータベースの検索・更新システムに対し、セッションに依存しないクライアントとサーバ間のメッセージ交換方式を規定するものであり、HTTPのような"stateless"なプロトコルの上に実装可能なようにデザインされている。また従来のセッション指向のプロトコルへの実装も可能なようにデザインされている。

 

1.2 プロトコルの仕組みの概要

1.2.1 プロトコルの特徴

本プロトコルによる通信は、リクエストとそれに対するレスポンスという枠組で行なわれる。リクエストを行なうプログラムをクライアントと呼び、それを受けとるプログラムをサーバと呼ぶ。本プロトコルの特徴は、クライアントとサーバ間でハンドルをやり取りする点にある。ハンドルとは、ハンドル確保のリクエストによりサーバよりクライアントに割り当てられるものであり、ハンドルを解放するまで有効なクライアント識別情報である。また、ハンドルにはフレームがバンドルしている。フレームは同一のハンドルに対し任意のリクエストの結果サーバに生成された情報を識別するものである。クライアントは複数のハンドルを取得可能である。また、同一のハンドルに対し複数のフレームを取得可能である。

ハンドルの実装例として、ハンドル確保のリクエストに対しサーバがクライアントに対応するユーザ情報等をバンドルすることが可能である。また、本プロトコルでは、少なくともフレームに、データベースの検索の結果生成される検索結果集合をバンドルさせることを規定している。これは、RETRIEVEメソッドやSCANメソッドのように検索結果集合を取り扱うメソッドを規定しているためである。

 

1.2.2 メッセージ交換の概要

データベースを検索し、任意のデータベースレコードを更新する一連の処理を例に本プロトコルのメッセージ交換の概要を示す。本プロトコルにおけるリクエストは1つのリクエストライン、必要に応じて複数のヘッダフィールド/ボディ部内のレコードから構成される。また、レスポンスは1つのステータスライン、必要に応じて複数のヘッダフィールド/ボディ部内のレコードから構成される。

 

(1) クライアントはハンドル確保のリクエスト(GETHANDLEメソッドリクエスト)をサーバに送信する。サーバは本リクエストが妥当であれば当該クライアントに対しハンドルを割り当てレスポンスとして返送する。その際、ハンドルにバンドルするフレームとしてデフォルトのフレームを返送する。

 

(2) クライアントはハンドルの確保に成功した場合に次のリクエスト処理を行う。例えばデータベースの検索が必要になった場合、取得したハンドルとフレーム(または新たなフレーム)並びに検索条件式等をもとに検索リクエスト(SEARCHメソッドリクエスト)をサーバに送信する。サーバはリクエスト内のハンドルが妥当なものであれば、リクエストに基づきデータベースの検索を試み、検索結果をレスポンスとして返送する。その際、サーバは検索結果集合等をリクエストにより指定されたフレームにバンドルする。また、検索結果、該当するデータベースレコードを複数返送することも可能である。

 

(3) クライアントはデータベースにレコードの登録が必要になった場合、取得したハンドルと登録レコード等をもとに登録リクエスト(INSERTメソッドリクエスト)をサーバに送信する。サーバはリクエスト内のハンドルが妥当なものであれば、リクエストに基づきデータベースへのレコードの登録を試みる。その結果をレスポンスとしてクライアントに返送する。

 

(4) クライアントはサーバへのリクエストが不要になった場合、ハンドル解放のリクエスト(RELEASEHANDLEメソッドリクエスト)をサーバに送信する。サーバは本リクエストが妥当であればハンドル並びにハンドルにバンドルされた情報(フレーム等)を解放し、その結果をレスポンスとして返送する。

 


1.3 用語の説明

 本プロトコルで使用している用語に対し特に説明が必要と思われる主な用語について記述する。

 

コネクション(connection)

通信の目的のために2者の間に仮想回線を開設すること。

 

リクエスト(request)

本プロトコルのリクエストメッセージ(3章、4章で定義されている)。

 

レスポンス(response)

本プロトコルのレスポンスメッセージ(3章、4章で定義されている)。

 

クライアント(client)

リクエストを送る目的でコネクションを確立するプログラム。

 

サーバー(server)

リクエストに対しレスポンスを返して答えるためにコネクションを受けつけるプログラム

 

メソッド

本プロトコルが提供するサービスで、リクエスト並びにレスポンスを種別する。



2. 表記上の慣習と一般的な文法

2.1 拡張BNF(Backus-Naur Form)記法

本プロトコルの内容は、拡張BNF記法を用いて記述されている。拡張BNF記法は、以下のような構造を持っている。

 

     name = definition

 

ルールの名前(name)は、単に名前そのもので("<"や">"では囲まない)、その定義(definition)とは「=」で区切られる。スペースは、継続行のインデントが1行以上にわたるルールの定義を示すために使われる場合にのみ意味を持つ。いくつかの基本的なルールは、SP、TAB、CRCF、DIGIT、ALPHAなどの大文字で表現されている。角括弧("<"や">")は、その存在がルール名の使用を識別するのに役立つ場合には、定義の中で使用される。

 

     "literal"

 

引用符で囲まれたテキストはリテラルテキストを意味する。特に記述されていなければ、テキストは大文字、小文字の区別をしない。

 

     rule1 | rule2

 

 ("|")をはさむ要素は、選択可能なものである。例えば、"yes | no"は、yesとnoのどちらでもよいということを意味する。

 

     (rule1 rule2)

 

括弧で囲まれた要素は、単一の要素として扱われる。即ち、"(elem (foo | bar) elem)"は、"elem foo elem"と"elem bar elem"というトークンの列を表現する。

 

     *rule

 

"*"という文字は、繰り返しの要素の前に置かれる。上記の例の完全な表現形式は、"<n>*<m>element"で、最低<n>回と最大でも<m>回要素が出現することを示す。デフォルトの値は、0と無限であり、"*(element)"は、0も含めていかなる数の要素にも対応する。"1*element"は少なくとも1個の要素に対応し、"1*2element"は1つまたは2つの要素に対応する。

 

     [rule]

 

箱括弧は、オプションの要素を示す。"[foo bar]"は、"*1(foo bar)"と同じである。

 

     N rule

 

"<n>(element)"は繰り返しの特殊な形態であり、"<n>*<n>(element)"と同じである。これは、(element)が<n>回出現することを表す。2DIGITは、2桁の数字であり、3ALPHAは3つのアルファベット文字列である。

 

     #rule

 

構造子"#"は、"*"と似た意味を持ち、要素のリストを定義するために定義されている。完全な表現形式は、"<N>#<M>ELEMENT"であり、1つ以上の(",")で区切られた少なくとも<N>最大でも<M>の要素を表す。区切りには、いくつかのスペースの列(LWS)が加わってもよい。この記法は、リストの通常の表現形態を非常に簡単にする。例えば、

"( *LWS ELEMENT *( *LWS "," *LWS ELEMENT ))"のようなルールは、"1#ELEMENT"として示すことができる。この構造子が使われる場合には、ヌル要素が許容されている。しかし、存在する要素の個数には数えられない。例えば、"(ELEMENT), , (ELEMENT)"は許されているが、2つの要素としてしか数えられない。このため、少なくとも1つの要素が要求されている場合には、最低1つのヌルでない要素が存在しなければならない。デフォルトの値は、0と無限であり、"#(ELEMENT)"は0を含めて如何なる数の要素のリストにもなりえる。"1#ELEMENT"は、少なくとも1つ以上の要素を表現し、"1#2ELEMENT"は1または2の要素を表現する。

 

     ; comment

 

ルールテキストの右側に置かれたセミコロンは、それ以降から行末までがコメントであることを示す。これは、仕様の規定に対して有用な注釈をつけるための簡便な方法である。

 


2.2 基本ルール

基本的な構文構造を記述するために、この仕様書では以下のようなルールが使用されている。

 

       OCTET      = <すべての8ビット文字>

       CHAR       = <すべてのASCII文字(octets 0 - 127)>

       UPALPHA     = <すべてのASCIIの大文字(AからZまで)>

       LOALPHA     = <すべてのASCIIの小文字("a"から"z"まで)>

       ALPHA       = UPALPHA | LOALPHA

       DIGIT       = <すべてのASCII数字("0"から"9"まで)>

       CTL       = <すべてのASCIIコントロール文字(octets 0 - 31)及びDEL(127)>

       CR       = <ASCII CR, キャリッジリターン(13)>

       LF       = <ASCII LF, ラインフィード(10)>

       SP       = <ASCII SP, スペース(32)>

       HTAB       = <ASCII HT, タブ(9)>

       <">       = <ASCII ダブルクオータ>

       CRLF       = LF       ; 本仕様書ではCRLFはLF一文字と定義

  

本プロトコルのヘッダーを複数の行に分割する場合には、継続行はスペースの並びで始まるようにしなければならない。連続したスペースは、意味的にはSPと同じ(改行による折り返しも含めて)である。

 

       LWS       = [CRLF] ( SP | HTAB )

 

多くの本プロトコルのヘッダーフィールドの値は、LWSまたは特殊文字により区切られる。これらの特殊文字をパラメーターの値として使用する場合には、引用符つきの文字列に入れておかなくてはならない。

 

       word       = token | quoted-string

       token       = 1*<CTLsまたはtspecialsを除くすべてのCHAR>

       tspecials       = "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> | "/" | "[" | "]" | "?" | "=" | SP | HTAB

 

テキストの文字列は、ダブルクオータまたは角括弧を用いて引用されている場合には、1つの単語として取り扱われる。

 

       quoted-string   = ( <"> *(qdtext) <"> ) | ( "<" *(qatext) ">" )

       qdtext              = <<">とCTLsを除くすべてのCHAR、ただしLWSは含めるものとする>

       qatext             = <"<"、 ">"とCTLsを除く,すべてのCHAR、ただしLWSは含めるものとする>

 

以下のテキストルールは、記述的なフィールド内容に対してのみ用いられる。

 

       text       = <CTLsを除くすべてのOCTET、ただしLWSは含めるものとする>



3. メッセージ

本プロトコルのメッセージは、クライアントのリクエストとサーバのレスポンスからなっている。

 

       This-protocol-message       = Request 

                              | Response

 

       Request                     = Request-Line              ; 3.2節参照

                              [Request-Header]              ; 3.4節参照

                              Object-Header              ; 3.4節参照

                              CRLF

                              [ Object-Body ]              ; 3.5節参照

 

       Response                    = Status-Line              ; 3.3節参照

                              [Response-Header]              ; 3.4節参照

                              Object-Header              ; 3.4節参照

                              CRLF

                              [ Object-Body ]              ; 3.5節参照

 

3.1 コード

3.1.1 メッセージ転送コード

クライアントとサーバ間で転送されるのはOCTETs である。

 

3.1.2 記述コード

リクエストライン(Request-Line)、リクエストヘッダ(Request-Header)、ステータスライン(Status-Line)、レスポンスヘッダ(Response-Header)、オブジェクトヘッダ(Object-Header)の記述コードはASCIIを使用する。

オブジェクトボディの記述コードはオブジェクトヘッダ中のEncodingフィールド(3.4.3参照)による。


3.2 Request-Line

リクエストラインは、メソッドトークンではじまり、ハンドル、フレームとプロトコールのバージョン、リクエストコード、リクエストフレーズが続き、CRLFで終わる。各要素は、スペースで区切られる。最後のCRLF以外には、CRやLFを挿入してはならない。

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

 

(1) Method

メソッドはサーバへのリクエストを示すトークンである。メソッドは、大文字、小文字を区別し、拡張が可能である。

メソッドの詳細については、4章を参照。

 

       Method              = "GETHANDLE" | "RELEASEHANDLE" | "RELEASEFRAME" |

                       "SEARCH" | "RETRIEVE" | "SCAN" | "INDEXLIST" |

                       "INSERT" | "UPDATE" | "DELETE" |

                       "SERVERPROCEDURECALL" | extension-method

 

(2) Handle

ハンドルはサーバがクライアントを特定するためのキーとなるエレメントである。ハンドルは"GETHANDLE"メソッドを用いたリクエスト(GETHANDLEリクエストと呼ぶ)によりサーバから取得することができる。クライアントはハンドル確保後RELEASEHANDLEリクエストによりハンドルが解放されるまでハンドルの内容を変更してはならない。尚、ハンドルは一つのクライアントに対し複数生成することも可能である(GETHANDLEリクエストを複数発行可能である)。

 

       Handle              = 10CHAR

 

(3) Frame

フレームは同一のハンドルに対するリクエストに対し、サーバが生成する情報を識別するものである。ハンドルがクライアントで変更してはならないのに対し、フレームはクライアントで変更可能である。この場合、サーバは変更前のフレームとは別のフレームとして取り扱うべきである。

 

       Frame              = 3DIGIT

 

(4) CATP-Version

CATPバージョンは、リクエストで用いられるCATPのバージョンを示す。本プロトコルのCATPバージョンは、"CATP/1.0"を用いる。

 

       CATP-Version   = "CATP" "/" 1*DIGIT "." 1*DIGIT

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"                  ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 


3.3 Status-Line

ステータスラインは、メソッドトークンではじまり、ハンドル、フレーム、プロトコールバージョンとそれに続く、数字のステータスコードとそれに関連した言葉からなっており、それぞれの要素はスペースで区切られている。最後のCRLF以外には、CRやLFを挿入してはならない。

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じである(3.2 (1)参照)。

 

(2) Handle

ハンドルはステータスラインがGETHANDLEリクエストに対すものである場合、サーバで割り当てたハンドルを意味する。また、GETHANDLE以外のリクエストの場合はクライアントがリクエストラインに指定したハンドルと同じである。このフィールドのフォーマットは、リクエストラインのそれと同じである(3.2 (2)参照)。

 

(3) Frame

フレームはステータスラインがGETHANDLEリクエストに対すものである場合、サーバで割り当てたフレームを意味する。また、GETHANDLE以外のリクエストの場合は、クライアントがリクエストラインに指定したフレームと同じである。このフィールドのフォーマットは、リクエストラインのそれと同じである(3.2 (3)参照)。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。このフィールドのフォーマットは、リクエストラインのそれと同じである(3.2 (4)参照)。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-Code

ステータスコードは、サーバがリクエストを理解し、それに答えようとした試みに対する結果を示す3桁の整数のコードである。

 

       Status-Code    = 3DIGIT

 

ステータスコードの最初の桁は、CATPのレスポンスのクラスを定義している。最後の2つの桁は、コードをカテゴリー化する役割は持たない。最初の桁には、下記の5つの値が存在する。

 

       1xx       : 未定義             (将来の使用のために予約)

       2xx       : 成功              リクエストされたアクションは適切に受理され処理された。

       3xx       : 警告成功    リクエストされたアクションは適切に受理され警告を伴って処理された。

                            クライアント(ユーザ)にて適切に対処する必要がある。

       4xx       : クライアントエラー       リクエストに間違った構文があるか、または実行がもともと不可能である。

       5xx       : サーバエラー  サーバはリクエストを遂行できなかった。

 

尚、下2桁の詳細はサーバの実装に依存する。

 

(6) Reason-Phrase

説明句は、ステータスコードへの短い説明を与えること意図したものである。ステータスコードは、コンピュータによる使用、説明句は人間による使用を意図して作成された。クライアントは、説明句の理由を解釈する必要はないし、それをユーザへ示さなくてもよい。

 

       Reason-Phrase   = text

 


3.4 Header

ヘッダは一つ以上のフィールドから構成される。

 

       Header              = 1*Field

       Field              = Tag ":" Value CRLF

       Tag              = token

       Value              = text

 

3.4.1 Request-Header

 

       Request-Header  = Header

 

詳細は4章の各リクエストのリクエストヘッダを参照。

 

3.4.2 Response-Header

 

       Response-Header = Header

 

詳細は4章の各レスポンスのレスポンスヘッダを参照。

 

3.4.3 Object-Header

オブジェクトヘッダはオブジェクトボディ(Object- Body)の情報を記述するヘッダである。

 

       Object-Header  = Header

       Object-Header  = Content-Length

                       [Encoding]

 

(1) Content-Length

コンテントレングスはオブジェクトボディのサイズをオクテット単位で指定する。

 

       Content-Length  = "Content-Length" ":" 1*DIGIT CRLF              ; 単位オクテット

 

(2) Encoding

エンコーディングはオブジェクトボディのエンコーディング方式を指定する。

 

       Encoding             =  "Encoding" ":" ( "JIS7" | "ISO2022JP | GB | GBK | UTF8 )

 


3.5 Object-Body

オブジェクトボディには単一レコードと複数レコードがある。オブジェクトボディの詳細は4章の各リクエスト/レスポンスを参照。

 

       Object-Body    = Record | Multi-record

 

(1) Record

単一のレコードを意味する。Recordの形式は各リクエスト並びにレスポンスにより異なる。

 

(2) Multi-record

複数のレコードを意味する。Multi-recordは各Recordをレコードデリミタで区切って使用する。

 

       Multi-record    = 1*(Record-delimiter Record) Close-delimiter

       Record-delimiter = "--" boundary CRLF

       Close-delimiter  = "--" boundary "--" CRLF

       boundary              = 0*69( bchar | SP ) bchar    ; boundaryはMulti-record内で同一とする

       bchar              = DIGIT | ALPHA | "'" | "(" | ")" | "+"

                       | "_" | "," | "-" | "." | "/" | ":" | "=" | "?"

 

Recordの形式は各リクエスト並びにレスポンスにより異なる。

 

(3) 診断メッセージ

サーバが必要に応じて返送する診断メッセージは、オブジェクトボディに単一レコードとして設定される。

 

       Diagnostic-record = Record

       Record              = 1*Message

       Message              = text CRLF



4. メソッド

本プロトコルで使用可能なメソッドについて記述する。尚、本文中のリクエストライン、ステータスライン、オブジェクトヘッダについては3章を参照。

 

4.1 GETHANDLEメソッド

GETHANDLEメソッドはクライアントがサーバに対しハンドルを要求するメソッドである。

 

4.1.1 リクエスト

4.1.1.1 Request-Line

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

 

(1) Method

 

Method              = "GETHANDLE"

 

(2) Handle

ハンドルには10桁の任意の数字を指定する。但し、このハンドルの値はサーバにて参照されない。

 

(3) Frame

フレームには3桁の任意の数字を指定する。但し、このフレームの値はサーバにて参照されない。

 

(4) CATP-Version

クライアントがサポートしている最新のCATPバージョンを指定する。

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"                  ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 

4.1.1.2 Request-Header

リクエストヘッダにはユーザの認証情報を記述する。

 

       Request-Header  = Authetication-info

 

(1) Authetication-info

クライアントに対するユーザの認証情報を指定する。

 

       Authetication-info = "Authenticate" ":" Authenticate CRLF

       Authenticate    = text

 

4.1.1.3 Object-Header

(1) Content-Length

本メソッドはオブジェクトボディを必要としないため、Content-Lengthに0を指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。本メソッドでは省略しても良い。

      

4.1.1.4 Object-Body

本メソッドはオブジェクトボディを必要としない。

 


4.1.2 レスポンス

4.1.2.1 Status-Line

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じものを指定する。

 

(2) Handle

ステータスコードが成功を意味する場合、サーバで割り当てたハンドルを指定する。この場合、クライアントは以降のリクエスト(GETHANDLE以外)でこのハンドルをリクエストラインに指定する必要がある。ステータスコードが成功以外の場合、本値は意味を持たない。

 

(3) Frame

ステータスコードが成功を意味する場合、サーバで割り当てたフレームを指定する。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-CodeとReason-Phrase

サーバでのリクエストに対する処理結果を意味する。各コードの詳細並びにReason-Phraseはサーバの実装による。

 

(a) 2xx   : 成功

本メソッドがサーバにおいて正常に処理されたことを意味する。この場合、ステータスラインのハンドル並びにフレームは有効であり、以降のリクエストで使用可能であることを意味する。

 

(b) 4xx   : クライアントエラー

リクエストに間違った構文があるか、または実行がもともと不可能であることを意味する。この場合、ステータスラインのハンドル並びにフレームは無効であり、以降のリクエストで使用できないことを意味する。

 

(c) 5xx   : サーバエラー 

サーバはリクエストを遂行できなかったことを意味する。この場合、ステータスラインのハンドル並びにフレームは無効であり、以降のリクエストで使用できないことを意味する。

 

4.1.2.2 Response-Header

 

       GetHandle-Response-Header     = [Support-method-info]

 

(1) Support-method-info

サーバで実装している本プロトコルのメソッドを指定する。本フィールドが省略された場合、ステータスラインのCATPバージョンで示されるプロトコルバージョンのすべてのメソッドを実装していることを意味する。

 

       Support-method-info              = "Support-method" ":" Support-method CRLF

       Support-method         = 1#method        ; methodは3.2(1)のMethod参照

 

4.1.2.3 Object-Header

(1) Content-Length

オブジェクトボディに診断メッセージが存在する場合、そのレングスを指定する。存在しない場合は0を指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

 

4.1.2.4 Object-Body

ステータスコードが正常以外の場合に診断メッセージを指定することができる。



4.2 RELEASEHANDLEメソッド

RELEASEHANDLEメソッドはクライアントがサーバに対しハンドルの解放を要求するメソッドである。この要求によりハンドルにバンドルされている全てのフレームも解放される。

 

4.2.1 リクエスト

4.2.1.1 Request-Line

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

 

(1) Method

 

Method              = "RELEASEHANDLE"

 

(2) Handle

開放を要求するハンドルを指定する。指定するハンドルはGETHANDLEリクエストによって取得したものでなければならない。

 

(3) Frame

フレームには3桁の任意の数字を指定する。但し、このフレームの値はサーバにて参照されない。

 

(4) CATP-Version

クライアントがサポートしている最新のCATPバージョンを指定する。

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"                  ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 

4.2.1.2 Request-Header

本メソッドはリクエストヘッダを必要としない。

 

4.2.1.3 Object-Header

(1) Content-Length

本メソッドはオブジェクトボディを必要としないため、Content-Lengthに0を指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。本メソッドでは省略しても良い。

      

4.2.1.4 Object-Body

本メソッドはオブジェクトボディを必要としない。

 


4.2.2 レスポンス

4.2.2.1 Status-Line

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じものを指定する。

 

(2) Handle

ハンドルはクライアントがリクエストラインに指定したハンドルと同じものを指定する。

 

(3) Frame

フレームはクライアントがリクエストラインに指定したフレームと同じものを指定する。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-CodeとReason-Phrase

サーバでのリクエストに対する処理結果を意味する。各コードの詳細並びにReason-Phraseはサーバの実装による。

 

(a) 2xx   : 成功

本メソッドがサーバにおいて正常に処理されたことを意味する。この場合、ステータスラインに指定されたハンドル並びにそれにバンドルされていたフレームが全て解放されたことを意味する。

 

(b) 4xx   : クライアントエラー

リクエストに間違った構文があるか、または実行がもともと不可能であることを意味する。この場合、ステータスラインで指定されたハンドルは解放されていないことを意味する。

 

(c) 5xx   : サーバエラー 

サーバはリクエストを遂行できなかったことを意味する。この場合、ステータスラインで指定されたハンドルの状態は保証されない。

 

4.2.2.2 Response-Header

本メソッドはレスポンスヘッダを必要としない。

 

4.2.2.3 Object-Header

(1) Content-Length

オブジェクトボディに診断メッセージが存在する場合、そのレングスを指定する。存在しない場合は0を指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

 

4.2.2.4 Object-Body

ステータスコードが正常以外の場合に診断メッセージを指定することができる。



4.3 RELEASEFRAMEメソッド

RELEASEFRAMEメソッドはクライアントがサーバに対しフレームの解放を要求するメソッドである。

 

4.3.1 リクエスト

4.3.1.1 Request-Line

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

 

(1) Method

 

Method              = "RELEASEFRAME"

 

(2) Handle

開放を要求するフレームがバンドルしているハンドルを指定する。指定するハンドルはGETHANDLEリクエストによって取得したものでなければならない。

 

(3) Frame

開放を要求するフレームを指定する。

 

(4) CATP-Version

クライアントがサポートしている最新のCATPバージョンを指定する。

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"                  ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 

4.3.1.2 Request-Header

本メソッドはリクエストヘッダを必要としない。

 

4.3.1.3 Object-Header

(1) Content-Length

本メソッドはオブジェクトボディを必要としないため、Content-Lengthに0を指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。本メソッドでは省略しても良い。

      

4.3.1.4 Object-Body

本メソッドはオブジェクトボディを必要としない。

 


4.3.2 レスポンス

4.3.2.1 Status-Line

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じものを指定する。

 

(2) Handle

ハンドルはクライアントがリクエストラインに指定したハンドルと同じものを指定する。

 

(3) Frame

フレームはクライアントがリクエストラインに指定したフレームと同じものを指定する。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-CodeとReason-Phrase

サーバでのリクエストに対する処理結果を意味する。各コードの詳細並びにReason-Phraseはサーバの実装による。

 

(a) 2xx   : 成功

本メソッドがサーバにおいて正常に処理されたことを意味する。すなわち、ステータスラインに指定されたフレームが解放されたことを意味する。

 

(b) 4xx   : クライアントエラー

リクエストに間違った構文があるか、実行がもともと不可能である、または存在しないフレームが指定されたことを意味する。この場合フレームは解放されていないことを意味する。

 

(c) 5xx   : サーバエラー 

サーバはリクエストを遂行できなかったことを意味する。この場合フレームが正しく解放されたかどうかは不明である。

 

4.3.2.2 Response-Header

本メソッドはレスポンスヘッダを必要としない。

 

4.3.2.3 Object-Header

(1) Content-Length

オブジェクトボディに診断メッセージが存在する場合、そのレングスを指定する。存在しない場合は0を指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

 

4.3.2.4 Object-Body

ステータスコードが正常以外の場合に診断メッセージを指定することができる。



4.4 SEARCHメソッド

クライアントがサーバにデータベースの検索を要求するメソッドである。サーバは、リクエストで指定された検索条件でデータベースを検索し、リクエストに応じた形式でデータベースレコードをレスポンスとして返す。また、リクエストラインに新しいフレームが指定された場合、サーバはそのフレームを新たに割り当て、検索の結果生成された検索結果集合等をバンドルする必要がある。

 

4.4.1 リクエスト

4.4.1.1 Request-Line

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

 

(1) Method

 

Method              = "SEARCH"

 

(2) Handle

GETHANDLEリクエストによって取得したハンドルを指定する。

 

(3) Frame

本リクエストの結果生成される検索結果集合をバンドルするフレームを指定する。フレームはクライアントにおいてフレームの定義の範囲内で新たに指定することができる。この場合、サーバは指定されたハンドルの下にフレームを新たに割り当て、検索結果集合等をバンドルする必要がある。また、以前生成したフレームを指定してもよい(最初に割り当てられたフレームはGETHANDLEレスポンスで返される)。この場合、サーバは検索結果集合等をもとに指定されたフレームを更新する。

 

(4) CATP-Version

クライアントがサポートしている最新のCATPバージョンを指定する。

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"           ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 

4.4.1.2 Request-Header

 

       Request-Header  = Database-names

                       [Small-set-element-set-names]

                       [Medium-set-element-set-names]

                       [Small-set-upper-bound]

                       [Large-set-lower-bound]

                       [Medium-set-present-number]

 

(1) Database-names

検索対象のデータベース名を指定する。データベース名はリスト形式で複数指定可能である。

 

       Database-names  = "Database-names" ":" 1#Database-name CRLF

       Database-name   = token

 

(2) Small-set-element-set-names

データベースの検索の結果、ヒット件数がSmall-set-upper-bound((4)参照)の場合に取得したいデータベースレコードの編集形式を指定する。

 

       Small-set-element-set-names     = "Small-set-element-set-names" ":" Edit-type CRLF

       Edit-type                    = 1DIGIT

 

尚、Edit-typeと編集形式の対応は、サーバの実装による。

 

(3) Medium-set-element-set-names

データベースの検索の結果、ヒット件数がSmall-set-upper-bound((4)参照)より大きく、かつLarge-set-lower-bound((5)参照)より小さい場合に取得したいデータベースレコードの編集形式を指定する。

 

       Medium-set-element-set-names    = "Medium-set-element-set-names" ":" Edit-type CRLF

       Edit-type                    = 1DIGIT

 

尚、Edit-typeと編集形式の対応は、サーバの実装による。

 

(4) Small-set-upper-bound

データベースの検索の結果、ヒットしたデータベースレコードを全件取得する場合のヒット件数の上限値を指定する。クライアントが本値を指定した場合、サーバは本値とヒット件数を比較し”ヒット件数 <= 本値”の場合Small-set-element-set-namesで指定された形式のデータベースレコードを返す。

 

       Small-set-upper-bound       = "Small-set-upper-bound" ":" Value CRLF

       Value                     = 1*DIGIT

 

(5) Large-set-lower-bound

データベースの検索の結果、ヒットしたデータベースレコードを1件も転送しないヒット件数の下限値を指定する。クライアントが本値を指定した場合、サーバは本値とヒット件数を比較し”ヒット件数 >= 本値”の場合データベースレコードを返送しない。

 

       Large-set-lower-bound       = "Large-set-lower-bound" ":" Value CRLF

       Value                     = 1*DIGIT

 

(6) Medium-set-present-number

データベースの検索の結果、ヒット件数が”Small-set-upper-bound < ヒット件数 < Large-set-lower-bound”の場合に転送するデータベースのレコード件数を指定する。

 

       Medium-set-present-number      = "Medium-set-present-number" ":" Value CRLF

       Value                     = 1*DIGIT

 

4.4.1.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。

 

4.4.1.4 Object-Body

オブジェクトボディには検索条件式を単一レコードで指定する。検索条件式は、RPN(逆ポーランド記法)を用いる。

 

       Object-Body    = Record                               ; 単一レコード

       Record              = RPN-Query

       RPN-Query     = Argument | <Argument + Argument + Operator>        ;  "+"は後続を意味する

       Argument             = Operand | RPN-Query       

       Operand              = Tag "=" Value

       Tag              = token                                ; データベースのフィールドタグ

       Value              = <"> text <">                       ; text内の<">は<\><">と記述 

       operator              = AND | OR | AND-NOT

 


4.4.2 レスポンス

4.4.2.1 Status-Line

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じものを指定する。

 

(2) Handle

ハンドルはクライアントがリクエストラインに指定したハンドルと同じものを指定する。

 

(3) Frame

フレームはクライアントがリクエストラインに指定したフレームと同じものを指定する。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-CodeとReason-Phrase

サーバでのリクエストに対する処理結果を意味する。各コードの詳細並びにReason-Phraseはサーバの実装による。

 

(a) 2xx   : 成功

本メソッドがサーバにおいて正常に処理されたことを意味する。すなわち、サーバは検索結果集合等を生成し、リクエストラインで指定されたフレームにバンドルしたことを意味する。

 

(b) 4xx   : クライアントエラー

リクエストに間違った構文があるか、実行がもともと不可能である。

 

(c) 5xx   : サーバエラー 

サーバはリクエストを遂行できなかったことを意味する。

 

4.4.2.2 Response-Header

 

       Response-Header = Database-names

                       Result-count

                       Number-of-records-returned

                       Next-result-set-position

 

(1) Database-names

検索の結果ヒットしたデータベース名を指定する。データベース名はリスト形式で複数指定可能である。

 

       Database-names  = "Database-names" ":" 1#Database-name CRLF

       Database-name   = token

 

(2) Result-count

データベース検索の結果ヒットしたデータベースレコード数を指定する。

 

       Result-count    = "Result-count" ":" 1*DIGIT CRLF

 

(3) Number-of-records-returned

オブジェクトボディ(Object-Body)に設定されたレコード数を指定する。

 

       Number-of-records-returned      = "Number-of-records-returned" ":" 1*DIGIT CRLF

 

(4) Next-result-set-position

検索結果集合内の次のポインタを指定する。クライアントは、続きのデータベースレコードを取得したい場合RETRIVEメソッドに本ポインタを指定することができる。

 

       Next-result-set-position       = "Next-result-set-position" ":" 1*DIGIT CRLF

 

4.4.2.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

 

4.4.2.4 Object-Body

オブジェクトボディには検索の結果、該当するデータベースレコードまたは診断レコードを設定する。データベースレコードの場合、その形式並びに設定されるレコード件数はRequest-Headerの各フィールドの指定に従う。また、複数レコードをオブジェクトボディに設定する場合は"multi-part"タイプ(3.5節参照)の処理方式に従う。

尚、下記の場合はオブジェクトボディ部にデータベースレコードは設定されない。

Status-Codeが成功以外を示す場合

Result-countが0の場合

Request-Headerの各フィールドの解析の結果、転送レコード数が0になる場合

 

       Object-Body    = Diagnostic-record | Database-record

       Database-record  = Record | Multi-record                     ; Multi-recordについては3.5節参照

       Record              = 1*DB-field

       DB-field              = Field | Group-field                            ; 単一フィールドとグループフィールド

       Group-Field    = Group-field-start 1*DB-field Group-field-end

       Group-field-start = "<" Group-name ">" CRLF

       Group-field-end  = "</" [Group-name] ">" CRLF

       Group-name    = token

       Field              = Tag "=" Value CRLF

       Tag              = token                                ; データベースのフィールドタグ

       Value              = text



4.5 RETRIEVEメソッド

クライアントがサーバにSEARCHまたはSCANリクエストに対するデータベースレコードを要求するメソッドである。サーバは、リクエストで指定されたフレームにバンドルしている検索結果より、指定されたデータベースレコードをレスポンスとして返す。

 

4.5.1 リクエスト

4.5.1.1 Request-Line

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

(1) Method

 

Method              = "RETRIEVE"

 

(2) Handle

GETHANDLEリクエストによって取得したハンドルを指定する。

 

(3) Frame

SEARCHまたはSCANリクエストで指定したフレームを指定する。

 

(4) CATP-Version

クライアントがサポートしている最新のCATPバージョンを指定する。

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"           ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 

4.5.1.2 Request-Header

 

       Request-Header  = Result-set-start-position

                       Number-of-records-requested

                       [Element-set-names]

 

(1) Result-set-start-position

フレームにバンドルされている検索結果集合内の相対位置を指定する。サーバは本値からNumber-of-records-requested分に対応するデータベースレコードをデータベースから取得しレスポンスとして返す。

 

       Result-set-start-position       = "Result-set-start-position" ":" 1*DIGIT CRLF

 

(2) Number-of-records-requested

フレームにバンドルされている検索結果集合内の相対位置からの要求件数を指定する。

 

       Number-of-records-requested     = "Number-of-records-requested" ":" 1*DIGIT CRLF

 

(3) Element-set-names

データベースレコードの編集形式を指定する。

 

       Element-set-names       = "Element-set-names" ":" Edit-type CRLF

       Edit-type             = 1DIGIT

 

尚、Edit-typeと編集形式の対応は、サーバの実装による。

 


4.5.1.3 Object-Header

(1) Content-Length

本メソッドはオブジェクトボディを必要としないため、Content-Lengthに0を指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。本メソッドでは省略しても良い。
レスポンスのオブジェクトボディのエンコーディング方式を指定する。省略した場合は,"JIS7"となる。

      

4.5.1.4 Object-Body

本メソッドはオブジェクトボディを必要としない。

 

4.5.2 レスポンス

4.5.2.1 Status-Line

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じものを指定する。

 

(2) Handle

ハンドルはクライアントがリクエストラインに指定したハンドルと同じものを指定する。

 

(3) Frame

フレームはクライアントがリクエストラインに指定したフレームと同じものを指定する。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-CodeとReason-Phrase

サーバでのリクエストに対する処理結果を意味する。各コードの詳細並びにReason-Phraseはサーバの実装による。

 

(a) 2xx   : 成功

本メソッドがサーバにおいて正常に処理されたことを意味する。

 

(b) 4xx   : クライアントエラー

リクエストに間違った構文があるか、実行がもともと不可能である。

 

(c) 5xx   : サーバエラー 

サーバはリクエストを遂行できなかったことを意味する。

 

4.5.2.2 Response-Header

 

       Response-Header = Number-of-records-returned

                       Next-result-set-position

 

(1) Number-of-records-returned

オブジェクトボディ(Object-Body)に設定されたレコード数を指定する。

 

       Number-of-records-returned      = "Number-of-records-returned" ":" 1*DIGIT CRLF

 

(2) Next-result-set-position

検索結果集合内の次のポインタ

 

       Next-result-set-position       = "Next-result-set-position" ":" 1*DIGIT CRLF

 


4.5.2.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

 

4.5.2.4 Object-Body

オブジェクトボディには、該当するデータベースレコードまたは診断レコードを設定する。データベースレコードの場合、その形式並びに設定されるレコード件数はRequest-Headerの各フィールドの指定に従う。また、複数レコードをオブジェクトボディに設定する場合は"multi-part"タイプ(3.5節参照)の処理方式に従う。

尚、下記の場合はオブジェクトボディ部にデータベースレコードは設定されない。

Status-Codeが成功以外を示す場合

Request-Headerの各フィールドの解析の結果、転送レコード数が0になる場合

 

       Object-Body    = Diagnostic-record | Database-record

       Database-record  = Record | Multi-record              ; Multi-recordについては3.5節参照

       Record              = 1*DB-field

       DB-field              = Field | Group-field                     ; 単一フィールドとグループフィールド

       Group-Field    = Group-field-start 1*Field Group-field-end

       Group-field-start = "<" Group-name ">" CRLF

       Group-field-end  = "</" [Group-name] ">" CRLF

       Group-name    = token

       Field              = Tag "=" Value CRLF

       Tag              = token                         ; データベースのフィールドタグ

       Value              = text



4.6 SCANメソッド

クライアントがサーバに検索結果集合の絞り込みを要求するメソッドである。サーバは、フレームにバンドルされた検索結果集合をリクエストで指定された検索条件をもとに絞り込み、リクエストに応じた形式でデータベースレコードをレスポンスとして返す。

 

4.6.1 リクエスト

4.6.1.1 Request-Line

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

 

(1) Method

 

Method              = "SCAN"

 

(2) Handle

GETHANDLEリクエストによって取得したハンドルを指定する。

 

(3) Frame

本リクエストの結果がバンドルするフレームを指定する。フレームはクライアントにおいてフレームの定義の範囲内で新たに指定することができる。この場合、サーバは指定されたハンドルの下にフレームを新たに割り当て、スキャン結果(検索結果集合等)をバンドルすることになる。また、以前生成したフレームを指定してもよい(最初に割り当てられたフレームはGETHANDLEレスポンスで返される)。この場合、サーバはスキャン結果(検索結果集合等)をもとに指定されたフレームを更新する。

 

(4) CATP-Version

クライアントがサポートしている最新のCATPバージョンを指定する。

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"    ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 

4.6.1.2 Request-Header

 

       Request-Header  = Target-frame

                       [Small-set-element-set-names]

                       [Medium-set-element-set-names]

                       [Small-set-upper-bound]

                       [Large-set-lower-bound]

                       [Medium-set-present-number]

 

(1) Target-frame

スキャンの対象となるフレームを指定する。

 

       Target-frame    = "Target-frame" ":" Frame CRLF

       Frame              = 3DIGIT

 


(2) Small-set-element-set-names

スキャンの結果、ヒット件数がSmall-set-upper-bound((4)参照)の場合に取得したいデータベースレコードの編集形式を指定する。

 

       Small-set-element-set-names     = "Small-set-element-set-names" ":" Edit-type CRLF

       Edit-type                    = 1DIGIT

 

尚、Edit-typeと編集形式の対応は、サーバの実装による。

 

(3) Medium-set-element-set-names

スキャンの結果、ヒット件数がSmall-set-upper-bound((4)参照)より大きく、かつLarge-set-lower-bound((5)参照)より小さい場合に取得したいデータベースレコードの編集形式を指定する。

 

       Medium-set-element-set-names    = "Medium-set-element-set-names" ":" Edit-type CRLF

       Edit-type                    = 1DIGIT

 

尚、Edit-typeと編集形式の対応は、サーバの実装による。

 

(4) Small-set-upper-bound

スキャンの結果、ヒットしたデータベースレコードを全件取得する場合のヒット件数の上限値を指定する。クライアントが本値を指定した場合、サーバは本値とヒット件数を比較し”ヒット件数 <= 本値”の場合Small-set-element-set-namesで指定された形式のデータベースレコードを返す。

 

       Small-set-upper-bound       = "Small-set-upper-bound" ":" Value CRLF

       Value                     = 1*DIGIT

 

(5) Large-set-lower-bound

スキャンの結果、ヒットしたデータベースレコードを1件も転送しないヒット件数の下限値を指定する。クライアントが本値を指定した場合、サーバは本値とヒット件数を比較し”ヒット件数 >= 本値”の場合データベースレコードを返送しない。

 

       Large-set-lower-bound       = "Large-set-lower-bound" ":" Value CRLF

       Value                     = 1*DIGIT

 

(6) Medium-set-present-number

スキャンの結果、ヒット件数が”Small-set-upper-bound < ヒット件数 < Large-set-lower-bound”の場合に転送するデータベースのレコード件数を指定する。

 

       Medium-set-present-number      = "Medium-set-present-number" ":" Value CRLF

       Value                     = 1*DIGIT

 

4.6.1.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。

 

4.6.1.4 Object-Body

オブジェクトボディには検索条件式(絞り込み条件式)を単一レコードで指定する。検索条件式は、RPN(逆ポーランド記法)を用いる。

 

       Object-Body    = Record                        ; 単一レコード

       Record              = RPN-Query

       RPN-Query     = Argument | <Argument + Argument + Operator>        ;  "+"は後続を意味する

       Argument             = Operand | RPN-Query

       Operand              = Tag "=" Value

       Tag              = token                         ; データベースのフィールドタグ

       Value              = <"> text <">                ; text内の<">は<\><">と記述

       operator              = AND | OR | AND-NOT

 


4.6.2 レスポンス

4.6.2.1 Status-Line

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じものを指定する。

 

(2) Handle

ハンドルはクライアントがリクエストラインに指定したハンドルと同じものを指定する。

 

(3) Frame

フレームはクライアントがリクエストラインに指定したフレームと同じものを指定する。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-CodeとReason-Phrase

サーバでのリクエストに対する処理結果を意味する。各コードの詳細並びにReason-Phraseはサーバの実装による。

 

(a) 2xx   : 成功

本メソッドがサーバにおいて正常に処理されたことを意味する。すなわち、サーバは検索結果集合等を生成し、リクエストラインで指定されたフレームにバンドルしたことを意味する。

 

(b) 4xx   : クライアントエラー

リクエストに間違った構文があるか、実行がもともと不可能である。

 

(c) 5xx   : サーバエラー 

サーバはリクエストを遂行できなかったことを意味する。

 

4.6.2.2 Response-Header

 

       Response-Header = Result-count

                       Number-of-records-returned

                       Next-result-set-position

 

(1) Result-count

スキャンの結果ヒットしたデータベースレコード数を指定する。

 

       Result-count    = "Result-count" ":" 1*DIGIT CRLF

 

(2) Number-of-records-returned

オブジェクトボディ(Object-Body)に設定されたレコード数を指定する。

 

       Number-of-records-returned      = "Number-of-records-returned" ":" 1*DIGIT CRLF

 

(3) Next-result-set-position

検索結果集合内の次のポインタを指定する。クライアントは、続きのデータベースレコードを取得したい場合RETRIVEメソッドに本ポインタを指定することができる。

 

       Next-result-set-position       = "Next-result-set-position" ":" 1*DIGIT CRLF

 


4.6.2.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

 

4.6.2.4 Object-Body

オブジェクトボディにはスキャンの結果、該当するデータベースレコードまたは診断レコードを設定する。データベースレコードの場合、その形式並びに設定されるレコード件数はRequest-Headerの各フィールドの指定に従う。また、複数レコードをオブジェクトボディに設定する場合は"multi-part"タイプ(3.5節参照)の処理方式に従う。

尚、下記の場合はオブジェクトボディ部にデータベースレコードは設定されない。

Status-Codeが成功以外を示す場合

Result-countが0の場合

Request-Headerの各フィールドの解析の結果、転送レコード数が0になる場合

 

       Object-Body    = Diagnostic-record | Database-record

       Database-record  = Record | Multi-record              ; Multi-recordについては3.5節参照

       Record              = 1*DB-field

       DB-field              = Field | Group-field                     ; 単一フィールドとグループフィールド

       Group-Field    = Group-field-start 1*Field Group-field-end

       Group-field-start = "<" Group-name ">" CRLF

       Group-field-end  = "</" [Group-name] ">" CRLF

       Group-name    = token

       Field              = Tag "=" Value CRLF

       Tag              = token                         ; データベースのフィールドタグ

       Value              = text



4.7 INDEXLISTメソッド

クライアントがサーバにデータベースのインデックス一覧情報を検索要求するメソッドである。サーバは、リクエストで指定されたインデックスキーワードに対するインデックス一覧をレスポンスとして返す。尚、本メソッドはフレームにバンドルされている検索結果集合を更新しない。

 

4.7.1 リクエスト

4.7.1.1 Request-Line

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

 

(1) Method

 

Method              = "INDEXLIST"

 

(2) Handle

GETHANDLEリクエストによって取得したハンドルを指定する。

 

(3) Frame

フレームには3桁の任意の数字を指定する。但し、このフレームの値はサーバにて参照されない。

 

(4) CATP-Version

クライアントがサポートしている最新のCATPバージョンを指定する。

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"           ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 

4.7.1.2 Request-Header

 

       Request-Header  = Database-names

                       [Number-of-entries]

 

(1) Database-names

検索対象のデータベース名を指定する。データベース名はリスト形式で複数指定可能である。

 

       Database-names  = "Database-names" ":" 1#Database-name CRLF

       Database-name   = token

 

(2) Number-of-entries

データベースの検索の結果、取得したいインデックスの数を指定する。本フィールドは前方一致等のワイルドカード機能がサーバで実装されている場合に有効である。サーバは本値分のインデックス情報を必ず返送しなければいけないわけではない。本フィールドが省略された場合のデフォルト値はサーバの実装による。

 

       Number-of-entries = "Number-of-entries" ":" 1*DIGIT CRLF

 

4.7.1.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。

 


4.7.1.4 Object-Body

オブジェクトボディには検索対象のインデックスキーワードを指定する。

 

       Index-keyword   = Tag ":" Value CRLF

       Tag              = token                  ; 検索対象タグ

       Value              = text

 

4.7.2 レスポンス

4.7.2.1 Status-Line

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じものを指定する。

 

(2) Handle

ハンドルはクライアントがリクエストラインに指定したハンドルと同じものを指定する。

 

(3) Frame

フレームはクライアントがリクエストラインに指定したフレームと同じものを指定する。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-CodeとReason-Phrase

サーバでのリクエストに対する処理結果を意味する。各コードの詳細並びにReason-Phraseはサーバの実装による。

 

(a) 2xx   : 成功

本メソッドがサーバにおいて正常に処理されたことを意味する。

 

(b) 4xx   : クライアントエラー

リクエストに間違った構文があるか、実行がもともと不可能である。

 

(c) 5xx   : サーバエラー 

サーバはリクエストを遂行できなかったことを意味する。

 

4.7.2.2 Response-Header

 

       Response-Header = Number-of-fields-returned

 

(1) Number-of-fields-returned

オブジェクトボディ(Object-Body)に設定されたインデックス情報の数を指定する。

 

       Number-of-fields-returned       = "Number-of-fields-returned" ":" 1*DIGIT CRLF

 

4.7.2.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

 


4.7.2.4 Object-Body

オブジェクトボディには検索の結果、該当するインデックス情報レコードまたは診断レコードを設定する。インデックス情報レコードは、インデックス情報をフィールドとする単一レコードである。

尚、下記の場合はオブジェクトボディ部にインデックス情報レコードは設定されない。

Status-Codeが成功以外を示す場合

Result-countが0の場合

 

       Object-Body    = Diagnostic-record | Index-info-record

       Index-info-record = Record  

       Record              = 1*Field

       Field              = Index-keyword "=" Number-of-record CRLF

       Index-keyword   = token           ; インデックスキーワード

       Number-of-record = 1*DIGIT  ; インデックスキーワードに対応するデータベースレコード数



4.8 INSERTメソッド

クライアントがサーバにデータベースレコードの新規登録を要求するメソッドである。サーバは、リクエストで指定されたデータベースにレコードを登録し、その結果をレスポンスとして返す。また、リクエストの指定によっては登録したレコードを指定された編集形式でレスポンスとして返す。

 

4.8.1 リクエスト

4.8.1.1 Request-Line

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

 

(1) Method

 

Method              = "INSERT"

 

(2) Handle

GETHANDLEリクエストによって取得したハンドルを指定する。

 

(3) Frame

フレームには3桁の任意の数字を指定する。但し、このフレームの値はサーバにて参照されない。

 

(4) CATP-Version

クライアントがサポートしている最新のCATPバージョンを指定する。

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"                  ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 

4.8.1.2 Request-Header

 

       Request-Header  = Database-names

                       [Returned-edit-type]

 

(1) Database-names

登録対象のデータベース名を指定する。データベース名は一つだけ指定可能である。

 

       Database-names  = "Database-names" ":" Database-name CRLF

       Database-name   = token

 

(2) Returned-edit-type

登録が成功した場合で、そのデータベースレコードの返送を望む場合の編集形式を指定する。本フィールドが省略された場合、登録したデータベースレコードの返送はされない。

 

       Returned-edit-type       = "Returned-edit-type" ":" Edit-type CRLF

       Edit-type             = 1DIGIT

 

尚、Edit-typeと編集形式の対応は、サーバの実装による。

 


4.8.1.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。

 

4.8.1.4 Object-Body

オブジェクトボディには、登録するデータベースレコードを設定する。登録可能なデータベースレコード数は1件であり、単一レコードとなる。

 

       Object-Body    = Database-record

       Database-record  = Record

       Record              = 1*DB-field

       DB-field              = Field | Group-field                     ; 単一フィールドとグループフィールド

       Group-Field    = Group-field-start 1*Field Group-field-end

       Group-field-start = "<" Group-name ">" CRLF

       Group-field-end  = "</" [Group-name] ">" CRLF

       Group-name    = token

       Field              = Tag "=" Value CRLF

       Tag              = token                         ; データベースのフィールドタグ

       Value              = text

 

4.8.2 レスポンス

4.8.2.1 Status-Line

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じものを指定する。

 

(2) Handle

ハンドルはクライアントがリクエストラインに指定したハンドルと同じものを指定する。

 

(3) Frame

フレームはクライアントがリクエストラインに指定したフレームと同じものを指定する。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-CodeとReason-Phrase

サーバでのリクエストに対する処理結果を意味する。各コードの詳細並びにReason-Phraseはサーバの実装による。

 

(a) 2xx   : 成功

       本メソッドがサーバにおいて正常に処理されたことを意味する。

 

(b) 3xx   : 警告成功

       本メソッドがサーバにおいて警告つきで処理されたことを意味する。

 

(c) 4xx   : クライアントエラー

リクエストに間違った構文があるか、実行がもともと不可能である。

 

(d) 5xx   : サーバエラー 

サーバはリクエストを遂行できなかったことを意味する。

 

4.8.2.2 Response-Header

       Response-Header = [Registered-record-id]

 

(1) Registered-record-id

データベースレコードの登録の結果、新しく採番されたレコードのID指定する。

 

       Registered-record-id       = "Record-id" ":" Record-id CRLF

       Record-id             = token

 

4.8.2.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

 

4.8.2.4 Object-Body

オブジェクトボディには登録したデータベースレコードまたは診断レコードを設定する。データベースレコードの場合、その形式はRequest-HeaderのReturned-edit-typeフィールドの指定に従う。尚、データベースレコードは単一レコードである。

尚、下記の場合はオブジェクトボディ部にデータベースレコードは設定されない。

Status-Codeが成功以外を示す場合

Request-HeaderのReturned-edit-typeフィールドが省略された場合

 

       Object-Body    = Diagnostic-record | Database-record

       Database-record  = Record

       Record              = 1*DB-field

       DB-field              = Field | Group-field                     ; 単一フィールドとグループフィールド

       Group-Field    = Group-field-start 1*Field Group-field-end

       Group-field-start = "<" Group-name ">" CRLF

       Group-field-end  = "</" [Group-name] ">" CRLF

       Group-name    = token

       Field              = Tag "=" Value CRLF

       Tag              = token                         ; データベースのフィールドタグ

       Value              = text



4.9 UPDATEメソッド

クライアントがサーバにデータベースレコードの更新を要求するメソッドである。サーバは、リクエストで指定されたデータベースを指定されたレコードで更新し、その結果をレスポンスとして返す。また、リクエストの指定によっては更新したレコードを指定された編集形式でレスポンスとして返す。

 

4.9.1 リクエスト

4.9.1.1 Request-Line

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

 

(1) Method

 

Method              = "UPDATE"

 

(2) Handle

GETHANDLEリクエストによって取得したハンドルを指定する。

 

(3) Frame

フレームには3桁の任意の数字を指定する。但し、このフレームの値はサーバにて参照されない。

 

(4) CATP-Version

クライアントがサポートしている最新のCATPバージョンを指定する。

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"                  ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 

4.9.1.2 Request-Header

 

       Request-Header  = Database-names

                       [Returned-edit-type]

 

(1) Database-names

更新対象のデータベース名を指定する。データベース名は一つだけ指定可能である。

 

       Database-names  = "Database-names" ":" Database-name CRLF

       Database-name   = token

 

(2) Returned-edit-type

更新が成功した場合で、そのデータベースレコードの返送を望む場合の編集形式を指定する。本フィールドが省略された場合、更新したデータベースレコードの返送はされない。

 

       Returned-edit-type       = "Returned-edit-type" ":" Edit-type CRLF

       Edit-type             = 1DIGIT

 

尚、Edit-typeと編集形式の対応は、サーバの実装による。

 


4.9.1.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。

 

4.9.1.4 Object-Body

オブジェクトボディには、更新するデータベースレコードを設定する。更新可能なデータベースレコード数は1件であり、単一レコードとなる。

 

       Object-Body    = Database-record

       Database-record  = Record

       Record              = 1*DB-field

       DB-field              = Field | Group-field                     ; 単一フィールドとグループフィールド

       Group-Field    = Group-field-start 1*Field Group-field-end

       Group-field-start = "<" Group-name ">" CRLF

       Group-field-end  = "</" [Group-name] ">" CRLF

       Group-name    = token

       Field              = Tag "=" Value CRLF

       Tag              = token                         ; データベースのフィールドタグ

       Value              = text

 

4.9.2 レスポンス

4.9.2.1 Status-Line

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じものを指定する。

 

(2) Handle

ハンドルはクライアントがリクエストラインに指定したハンドルと同じものを指定する。

 

(3) Frame

フレームはクライアントがリクエストラインに指定したフレームと同じものを指定する。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-CodeとReason-Phrase

サーバでのリクエストに対する処理結果を意味する。各コードの詳細並びにReason-Phraseはサーバの実装による。

 

(a) 2xx   : 成功

       本メソッドがサーバにおいて正常に処理されたことを意味する。

 

(b) 3xx   : 警告成功

       本メソッドがサーバにおいて警告つきで処理されたことを意味する。

 

(c) 4xx   : クライアントエラー

リクエストに間違った構文があるか、実行がもともと不可能である。

 

(d) 5xx   : サーバエラー 

サーバはリクエストを遂行できなかったことを意味する。

 


4.9.2.2 Response-Header

       Response-Header = [Updated-record-id]

 

(1) Updated-record-id

更新されたデータベースレコードのレコードID指定する。

 

       Updated-record-id       = "Record-id" ":" Record-id CRLF

       Record-id             = token

 

4.9.2.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

 

4.9.2.4 Object-Body

オブジェクトボディには更新されたデータベースレコードまたは診断レコードを設定する。データベースレコードの場合、その形式はRequest-HeaderのReturned-edit-typeフィールドの指定に従う。尚、データベースレコードは単一レコードである。

尚、下記の場合はオブジェクトボディ部にデータベースレコードは設定されない。

Status-Codeが成功以外を示す場合

Request-HeaderのReturned-edit-typeフィールドが省略された場合

 

       Object-Body    = Diagnostic-record | Database-record

       Database-record  = Record

       Record              = 1*DB-field

       DB-field              = Field | Group-field                     ; 単一フィールドとグループフィールド

       Group-Field    = Group-field-start 1*Field Group-field-end

       Group-field-start = "<" Group-name ">" CRLF

       Group-field-end  = "</" [Group-name] ">" CRLF

       Group-name    = token

       Field              = Tag "=" Value CRLF

       Tag              = token                         ; データベースのフィールドタグ

       Value              = text



4.10 DELETEメソッド

クライアントがサーバにデータベースレコードの削除を要求するメソッドである。サーバは、リクエストで指定されたデータベースから指定されたレコードを削除し、その結果をレスポンスとして返す。

 

4.10.1 リクエスト

4.10.1.1 Request-Line

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

(1) Method

Method              = "DELETE"

 

(2) Handle

GETHANDLEリクエストによって取得したハンドルを指定する。

 

(3) Frame

フレームには3桁の任意の数字を指定する。但し、このフレームの値はサーバにて参照されない。

 

(4) CATP-Version

クライアントがサポートしている最新のCATPバージョンを指定する。

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"                  ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 

4.10.1.2 Request-Header

 

       Request-Header  = Database-names

                       Delete-record-id

 

(1) Database-names

レコード削除対象のデータベース名を指定する。データベース名は一つだけ指定可能である。

 

       Database-names  = "Database-names" ":" Database-name CRLF

       Database-name   = token

 

(2) Delete-record-id

削除対象のデータベースレコードのIDを指定する。

 

       Delete-record-id  = "Record-id" ":" Record-id CRLF

       Record-id             = token

 

4.10.1.3 Object-Header

(1) Content-Length

本メソッドはオブジェクトボディを必要としないため、Content-Lengthに0を指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。本メソッドでは省略しても良い。

      

4.10.1.4 Object-Body

本メソッドはオブジェクトボディを必要としない。

 


4.10.2 レスポンス

4.10.2.1 Status-Line

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じものを指定する。

 

(2) Handle

ハンドルはクライアントがリクエストラインに指定したハンドルと同じものを指定する。

 

(3) Frame

フレームはクライアントがリクエストラインに指定したフレームと同じものを指定する。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-CodeとReason-Phrase

サーバでのリクエストに対する処理結果を意味する。各コードの詳細並びにReason-Phraseはサーバの実装による。

 

(a) 2xx   : 成功

本メソッドがサーバにおいて正常に処理されたことを意味する。

 

(b) 4xx   : クライアントエラー

リクエストに間違った構文があるか、実行がもともと不可能である。

 

(c) 5xx   : サーバエラー 

サーバはリクエストを遂行できなかったことを意味する。

 

4.10.2.2 Response-Header

 

       Response-Header = [Deleted-record-id]

 

(1) Deleted-record-id

削除されたレコードのID指定する。

 

       Deleted-record-id = "Record-id" ":" Record-id CRLF

       Record-id             = token

 

4.10.2.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

 

4.10.2.4 Object-Body

オブジェクトボディには診断レコードがある場合に、そのレコードを設定する。

 

       Object-Body    = Diagnostic-record



4.11 SERVERPROCEDURECALLメソッド

クライアントがサーバにサーバ上のプロシジャの実行を要求するメソッドである。サーバは、リクエストで指定されたプロシジャを実行し、その結果をレスポンスとして返す。

 

4.11.1 リクエスト

4.11.1.1 Request-Line

 

       Request-Line   = Method SP Handle SP Frame SP CATP-Version SP

                       Request-Code SP Request-Phrase CRLF

 

(1) Method

 

Method              = "SERVERPROCEDURECALL"

 

(2) Handle

GETHANDLEリクエストによって取得したハンドルを指定する。

 

(3) Frame

フレームには3桁の任意の数字を指定する。

 

(4) CATP-Version

クライアントがサポートしている最新のCATPバージョンを指定する。

 

(5) Request-Code

リクエストコードは、リクエストを表すコードである数字3桁の0を指定する。

 

       Request-Code   = "000"                  ; 数字3桁の0

 

(6) Request-Phrase

リクエストの説明句として、下記のトークンを指定する。

 

       Request-Phrase  = "REQUEST"

 

4.11.1.2 Request-Header

       Request-Header  = Procedure-name

                       *Argument

 

(1) Procedure-name

サーバのプロシジャ名を指定する。

 

       Procedure-name  = "Procedure-name" ":" Name CRLF

       Name              = token

 

(2) Argument

Procedure-nameで示されるプロシジャに渡す引数を指定する。

尚、引数の定義はサーバの実装による。

 

4.11.1.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

      

4.11.1.4 Object-Body

Procedure-nameで示されるプロシジャに渡すオブジェクトボディを指定する。

尚、オブジェクトボディの定義はサーバの実装による。

 


4.11.2 レスポンス

4.11.2.1 Status-Line

 

       Status-Line     = Method SP Handle SP Frame SP CATP-Version SP

                       Status-Code SP Reason-Phrase CRLF

 

(1) Method

メソッドはクライアントがリクエストラインに指定したメソッドと同じものを指定する。

 

(2) Handle

ハンドルはクライアントがリクエストラインに指定したハンドルと同じものを指定する。

 

(3) Frame

フレームはクライアントがリクエストラインに指定したフレームと同じものを指定する。

 

(4) CATP-Version

 CATPバージョンは、サーバで使用されるプロトコールのバージョンを指定する。クライアントがリクエストラインで指定したCATPバージョンが、サーバがサポートしているバージョンよりも古い場合、サーバはそのバージョンをサポートしていることが望まれる。その場合クライアント指定のCATPバージョンをステータスラインに指定する。

 

(5) Status-CodeとReason-Phrase

サーバでのリクエストに対する処理結果を意味する。各コードの詳細並びにReason-Phraseはサーバの実装による。尚、処理結果とはリクエストされたプロシジャの実行結果ではない。それを起動しようとした試みに対する結果である。

 

(a) 2xx   : 成功

本メソッドがサーバにおいて正常に処理されたことを意味する。

 

(b) 4xx   : クライアントエラー

リクエストに間違った構文があるか、実行がもともと不可能である。

 

(c) 5xx   : サーバエラー 

サーバはリクエストを遂行できなかったことを意味する。

 


4.11.2.2 Response-Header

 

       Response-Header = *Response-info

 

(1) Response-info

プロシジャ名で示されるプロシジャのレスポンス情報を指定する。

尚、レスポンス情報の定義はサーバの実装による。

 

4.11.2.3 Object-Header

(1) Content-Length

オブジェクトボディのレングスを指定する。

 

(2) Encoding

オブジェクトボディのエンコーディング方式を指定する。オブジェクトボディが存在しない場合は省略しても良い。

 

4.11.2.4 Object-Body

オブジェクトボディにはリクエストされたプロシジャの実行結果、または診断レコードを設定する。

 

       Object-Body    = Diagnostic-record | Procedure-result-record

      

尚、Procedure-result-recordの定義はサーバの実装による。



5. 参考文献

[1]   木内貴弘訳 "ハイパーテキストトランスファープロトコール第1.0版仕様書(日本語翻訳版)",

 <http://www.epistat.m.u-tokyo.ac.jp/internet/draft-fielding-http-spec-01-jp.txt>, 1995年  4月10日

 

[2]   HTTP Working Group INTERNET-DRAFT "Hypertext Transfer Protocol -- HTTP/1.1", 

 <http://www.ics.uci.edu/pub/ietf/http/>,January 19, 1996

 

[3] Z39.50 Maintenance Agency Official Text for Z39.50-1995 "Information Retrieval (Z39.50): Application Service Definition and Protocol Specification" ANSI/NISO Z39.50-1995,July 1995

 <http://lcweb.loc.gov/z3950/agency/>

 

[4] D. H. Crocker.  "Standard for the Format of ARPA Internet TextMessages." STD 11, RFC 822, UDEL, <http://ds.internic.net/rfc/rfc822.txt>, August 1982.