我正在编写一个 C# 程序来解析 Connect:Direct 文件并从中提取源和目标信息。
我对大型机代码不是很流利。特别是,我正在尝试了解目标Windows路径的语法。 以下是我的解释,但我想填补一些漏洞,以便编写一个能够处理我可能遇到的任何有效语法变化的解析器。
反斜杠字符必须是转义字符,以便两个反斜杠表示一个。但是串联操作,||,似乎把猴子扳手扔进去了。我假设斜杠字符是行继续符。引号路径也用每边的反斜杠括起来。我不确定这表示什么。我猜这可能意味着封闭的字符串包含转义字符,这表明两个反斜杠应该等于一个。
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
到目前为止有什么错误的假设吗?
鉴于此,我希望上述路径无效,因为它会被解释为
\MyServerNameIMDATACLASS_SOURCESYSTEM_INPUTS\CDBACCOUNT.TXT
换句话说,其中一个关卡中会有一个额外的反斜杠。但我知道连接直接有效并正确解释路径为
\MyServerNameIMDATACLASS_SOURCESYSTEM_INPUTSCDBACCOUNT.TXT
串联运算符和/或行延续如何影响此处所需的斜杠数?还有哪些语法变量可能也是有效的,这些语法变量会导致相同的有效 Windows 路径?
来自文档(IBM Sterling Connect:Direct for z/OS 用户指南):
特殊用途包围
必须经常将特殊字符作为字符串的一部分进行维护。自 保留特殊字符,将字符串括在括号中 字符。括号字符为反斜杠 (\),单 引号 (') 和双引号 (")。
括号反斜杠是特殊处理的指标 字符串。
Sterling Connect:Direct 不会将它们作为字符串的一部分进行维护 在其最终决议中。使用括号反斜杠可以:
1 继续包含多个特殊字符的字符串 线
2 确保字符串中的引号得到维护
以下是在 命令: PACCT=\'DEPT\MIS\ ||-
\602'\Sterling Connect:Direct 按如下方式解析该命令:
PACCT='DEPT\MIS602'
将其与此参考相结合(Sterling Connect:Direct for Microsoft Windows System Guide - 它可能也在 Connect:Direct 的 Windows 文档中的其他地方详细介绍)
Microsoft Windows 服务将反斜杠 (\) 视为转义 字符,因此为文件中的每个反斜杠键入两个反斜杠 路径。
您要了解的行是这样的:
DSN='\\MyServerName\IMDATA\CLASS_SOURCE\SYSTEM_INPUTS || -
\CDB\ACCOUNT.TXT'
在这两行中的每一行,第一个和最后一个反斜杠 (\) 是出于以下原因:
在多行中继续包含特殊字符的字符串
和
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将进行转义处理,给你这个:
\MyServerNameIMDATACLASS_SOURCESYSTEM_INPUTSCDBACCOUNT.TXT
反斜杠 (\) 的这种特殊用法是由于存在继续字符(- 作为行中的最后一个字符)和特殊字符(文档中列出了这些字符),而不是由于使用了连接 (||)(作为信息,您使用的字符集中的任何符号都是 X'4F', 不一定是 |符号)。
所有平台的 Sterling Connect:Direct 文档均可从 IBM 信息中心免费获取,既可直接在线使用,也可下载为 PDF。只需选择您最喜欢的搜索引擎,并找到您的产品版本的文档。