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 パスを生成する有効な他の構文変数は何ですか?