cpiParseBufferFormatted

目的

この関数は、既存の cpiParseBuffer() インプリメンテーション関数によって提供される機能の拡張で、以下を提供します。
  1. 入力メッセージを表すために使用されるエンコードおよびコード化文字セット。
  2. そのメッセージのメッセージ・セット、タイプ、および形式。

このインプリメンテーションが CPI_VFT 構造で提供されている場合、cpiParseBuffer() または cpiParseBufferEncoded() のどちらも指定できません。 指定した場合、cpiDefineParserClass() 関数は失敗し、戻りコード CCI_INVALID_IMPL_FUNCTION が出されます。

定義されている場所 タイプ メンバー
CPI_VFT 条件付き iFpParseBufferFormatted

構文

int cpiParseBufferFormatted(
  CciParser*     parser,
  CciContext* context,
  int            encoding,
  int            ccsid,
  CciChar*       set,
  CciChar*       type,
  CciChar*       format); 

パラメーター

parser
パーサー・オブジェクトのアドレス (入力)。
context
パーサー・オブジェクトが所有するコンテキストのアドレス (入力)。
encoding
メッセージ・バッファーのエンコード (入力)。
ccsid
メッセージ・バッファーの ccsid (入力)。
set
メッセージが属するメッセージ・セット (入力)。
type
メッセージ・タイプ (入力)。
format
メッセージ形式 (入力)。

戻り値

パーサーが所有権を持っているメッセージ・バッファーの残りの部分のサイズ (バイト数)。

サンプル

この例は、サンプル・パーサー・ファイル BipSampPluginParser.c から取られています (428 行から 466 行)。

int cpiParseBufferFormatted(
  CciParser*     parser,
  CciContext* context,
  int            encoding,
  int            ccsid,
  CciChar*       set,
  CciChar*       type,
  CciChar*       format
){
  PARSER_CONTEXT_ST* pc = (PARSER_CONTEXT_ST *)context ;
  int                rc;

  /* Get a pointer to the message buffer and set the offset */
  pc->iBuffer = (void *)cpiBufferPointer(&rc, parser);
  pc->iIndex = 0;

  /* Save the format of the buffer */
  pc->iEncoding = encoding;
  pc->iCcsid = ccsid;

  /* Save size of the buffer */
  pc->iSize = cpiBufferSize(&rc, parser);

  /* Prime the first byte in the stream */
  pc->iCurrentCharacter = cpiBufferByte(&rc, parser, pc->iIndex);

  /* Set the current element to the root element */
  pc->iCurrentElement = cpiRootElement(&rc, parser);

  /* Reset flag to ensure parsing is reset correctly */
  pc->iInTag = 0;

  if (pc->trace) {
    fprintf(pc->tracefile, "PLUGIN: <- cpiParseBufferFormatted()
    retvalue=%d¥n", pc->iSize);
    fflush(pc->tracefile);
  }
関連概念
ユーザー定義のパーサー
ユーザー定義拡張機能
関連タスク
C でのパーサーの作成
関連資料
cpiParseBuffer
cpiParseBufferEncoded
C パーサー・インプリメンテーション関数
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
as08170_