0

Connect:Direct ファイルを解析し、そこからソースと宛先の情報を抽出する C# プログラムを作成しています。

私はメインフレーム コードにあまり詳しくありません。特に、宛先の Windows パスの構文を理解しようとしています。以下は私の解釈ですが、遭遇する可能性のある有効な構文のバリエーションを処理できるパーサーを作成するために埋めたい穴があります。

2 つのバックスラッシュが 1 つを表すように、バックスラッシュ文字はエスケープ文字でなければなりません。ただし、連結操作 || 、その中にモンキーレンチを投げているようです。スラッシュ文字は行継続文字だと思います。引用符で囲まれたパスも、両側がバックスラッシュで囲まれています。これが何を示しているのかわかりません。囲まれた文字列にエスケープ文字が含まれていることを意味している可能性があると推測しています。これは、2 つのバックスラッシュが 1 つに等しいことを示唆しています。

NDMHGM30 PROCESS  SNODE=MYSNODE PACCT='G,HG1'                  -
 &SUBS=SUBSYS(ESP2)                                                 -
 &DMNDH=ESPM2D.DEMANDH                                              -
 &APPL=APPL(STHG102M.0)
STEP1  COPY FROM (PNODE DSN=GIO.HG1.CDB.ACCTEXT.T1(0)               -
               DISP=SHR)                                            -
       COMPRESS EXT                                                 -
       TO (SNODE                                                    -
 DSN=\'\\\\MyServerName\\IMDATA\\CLASS_SOURCE\\SYSTEM_INPUTS\   ||  -
     \\\CDB\\ACCOUNT.TXT'\                                      -
       SYSOPTS="STRIP.BLANKS(NO)"                                   -
               DISP=RPL)
   IF ( STEP1=0 ) THEN
STEP1A   RUN TASK (PGM=ESP,                                         -
 PARM=("&SUBS NOSTACK;AJ USERREQ.GHG30GOD &APPL COMPLETE;END"))
    ELSE
STEP1B   RUN TASK (PGM=ESP,                                         -
 PARM=("&SUBS NOSTACK;TR &DMNDH USER1('GHG30BAD');END"))
   EIF

これまでのところ間違った仮定はありますか?

それを考えると、上記のパスは次のように解釈されるため、無効になると予想されます。

\\MyServerName\IMDATA\CLASS_SOURCE\SYSTEM_INPUTS\\CDB\ACCOUNT.TXT

つまり、いずれかのレベルに余分なバックスラッシュがあります。しかし、Connect Direct が機能し、パスを次のように正しく解釈することはわかっています。

\\MyServerName\IMDATA\CLASS_SOURCE\SYSTEM_INPUTS\CDB\ACCOUNT.TXT

連結演算子や行継続は、ここで必要なスラッシュの数にどのように影響しますか? 同じ有効な Windows パスを生成する有効な他の構文変数は何ですか?

4

1 に答える 1

1

ドキュメント ( IBM Sterling Connect:Direct for z/OS ユーザー ガイド) から:

特殊目的ブラケット

多くの場合、文字列の一部として特殊文字を保持する必要があります。特殊文字を保持するには、文字列を角かっこで囲みます。括弧文字は、バックスラッシュ (\)、単一引用符 (')、および二重引用符 (") です。

かっこのバックスラッシュは、文字列の特別な処理の指標です。

Sterling Connect:Direct は、それらを最終的な解決で文字列の一部として維持しません。かっこのバックスラッシュを使用して、次のことを行います。

1 複数行にわたって特殊文字を含む文字列を続ける

2 文字列内の引用符が維持されていることを確認する

以下は、コマンドでブラケット バックスラッシュを使用する例です。-
\602'\

Sterling Connect:Direct は、コマンドを次のように解決します。

PACCT='DEPT\MIS602'</p>

それをこの参照と組み合わせてください ( Sterling Connect:Direct for Microsoft Windows System Guide - Connect:Direct のWindows資料の他の場所でも詳しく説明されている可能性があります)。

Microsoft Windows サービスは円記号 (\) をエスケープ文字として扱うため、ファイル パスの円記号ごとに 2 つの円記号を入力します。

理解したい行は次のとおりです。

 DSN=\'\\\\MyServerName\\IMDATA\\CLASS_SOURCE\\SYSTEM_INPUTS\   ||  -
     \\\CDB\\ACCOUNT.TXT'\

これらの 2 行のそれぞれで、最初と最後のバックスラッシュ (\) は次の理由によるものです。

特殊文字を含む文字列を複数行にわたって継続する

Sterling Connect:Direct は、それらを最終的な解像度で文字列の一部として維持しません。

Sterling Connect:Direct はこれを次のように解決します。

 DSN='\\\\MyServerName\\IMDATA\\CLASS_SOURCE\\SYSTEM_INPUTS\\CDB\\ACCOUNT.TXT'

ウィンドウが表示されます

 \\\\MyServerName\\IMDATA\\CLASS_SOURCE\\SYSTEM_INPUTS\\CDB\\ACCOUNT.TXT'

Windowsはエスケープ処理を行い、次のようになります。

 \\MyServerName\IMDATA\CLASS_SOURCE\SYSTEM_INPUTS\CDB\ACCOUNT.TXT

バックスラッシュ (\) のこの特定の使用は、継続文字 (行の最後の文字としての -) の存在と特殊文字 (ドキュメントに記載されているもの) の存在によるものであり、連結 (||) の使用 (参考までに、使用している文字セット内の記号は X'4F' であり、必ずしも | 記号である必要はありません)。

すべてのプラットフォーム用のすべてのSterling Connect:Direct資料は、IBM の Information Center から無料で入手でき、オンラインで直接使用するか、PDF としてダウンロードできます。あなたの選択。お気に入りの検索エンジンを選択して、お使いのバージョンの製品のドキュメントを見つけてください。

于 2016-01-14T11:54:10.730 に答える