1

Web サービスのプロバイダーとして、関連付けられた Web 要求の ID フィールドの値を予想される桁数に制限したいのですが、CICS によると、パターン ファセットを使用できないようです。その目的のための xsd/schema の要素。また、知る限り、長さファセット要素は、文字を数字のみに制限することをサポートしていません。

私の同僚である CICS ユーザーに、Web サービス用の WSDL ファイルと、別個ではあるが含まれている xsd ファイルを提供しました。明らかに、CICS Web Services Assistant の DFHWS2LS ツールは、xsd ファイルに含まれるパターン ファセット要素を認識しません。

(私は以下のことを知っています - そして私の同僚が個別に確認しました - 私の Web サービスコードに追加されたログ出力から - ただし、Tomcat で HTTP ダンプ設定がオフになっているため、SOAP リクエストの全文は今のところ利用できません)ログファイルのフラッディングを避けるために、起動スクリプトを使用してください。)

その結果、同僚によって生成された Web クライアント (おそらく COBOL - 不明) は、ID フィールド値が予想される桁数を含む 255 文字 (デフォルトの長さ) の文字列であるが、その後にパディングが続く要求を Web サービスに送信します。空白 - ID フィールド用。

schema/xsd に含まれるサンプルを次に示します。たとえば、ID の長さは 16 です...

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" targetNamespace="snip1" xmlns:tns="snip2" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="myUpdateStatus" type="tns:myUpdateStatus"/>

  <xs:element name="myUpdateStatusResponse" type="tns:myUpdateStatusResponse"/>

  <xs:complexType name="myUpdateStatus">
    <xs:sequence>
      <xs:element name="ssn">
        <xs:simpleType>
          <xs:restriction base='xs:string'>
<!--            DFHWS2LS ignores the following pattern facet-->
            <xs:pattern value='[0-9]{16}'/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="updatedStatus">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:length value="1"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="myUpdateStatusResponse">
    <xs:sequence>
      <xs:element name="return" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

参考までに、私は CICS ユーザーではありません。したがって、ベンダー サポート契約はありません。また、同僚のベンダー サポートに回避策があるかどうかはまだ問い合わせていません。

4

1 に答える 1

1

固定長の文字列 (minLengthおよびmaxLength同じ値を持つ) を使用して、文字列を短くすることができます。とにかく、COBOLではすべての文字列が固定長です。

decimalwithtotalDigits="16"とのタイプを使用fractionDigits="0"して、数字のみのルールを適用できます。COBOL プログラムは でコンパイルする必要がARITH(EXTEND)あり、DFHWS2LS ツールには を示すコントロール カードが必要ですWIDE-COMP3=YES

これで問題は解決しません。それを緩和するかもしれません。文字+-.は引き続きフィールドで使用できます。

COBOL プログラムには、USAGE COMP-3 (パック 10 進数) を指定するこのフィールドの定義があります。

これを書いている時点で、CICS の最新の version.release (5.2)の資料は、DFHWS2LS が pattern ファセットをサポートしていないことを示しています。

于 2015-01-24T15:24:51.003 に答える