Connect:IBM z / OS Mainframe上的直接语法

时间:2016-01-13 20:39:42

标签: parsing mainframe connect-direct

我正在编写一个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

到目前为止有任何错误的假设?

鉴于此,我希望上述路径无效,因为它将被解释为

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

换句话说,其中一个级别会有一个额外的反斜杠。但我知道Connect Direct工作并正确地将路径解释为

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

串联运算符和/或行继续如何影响此处所需的斜杠数?还有哪些其他语法变量可能会导致相同的有效Windows路径?

1 个答案:

答案 0 :(得分:1)

从文档( IBM Sterling Connect:Direct for z / OS用户指南):

  

特殊用途包围

     

您必须经常将特殊字符作为字符串的一部分进行维护。至   保持特殊字符,将字符串括在括号中   字符。包围字符是反斜杠(\),单个   引号(')和双引号(")。

     

包围反斜杠是a的特殊处理的指标   字符串。

     

Sterling Connect:Direct不会将它们作为字符串的一部分进行维护   最终解决方案。使用包围反斜杠:

     

1继续包含多个特殊字符的字符串   行

     

2确保字符串中的引号保持

     

以下是在a中使用包围反斜杠的示例   命令:PACCT = \'DEPT \ MIS \ || -
\ 602'\

     

Sterling Connect:Direct按如下方式解析命令:

     

的pacct =” DEPT \ MIS602’

将其与此引用相结合( Sterling Connect:Direct for Microsoft Windows系统指南 - 它可能还在其他位置的 Windows 文档中详细介绍了Connect:Direct)

  

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'

Windows 将显示

 \\\\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的信息中心免费获取,可直接在线使用或以PDF格式下载。你的选择。只需选择您最喜欢的搜索引擎,找到适合您的产品版本的文档。