日语 COBOL 代码:G 文字和标识符的规则?

2024-02-18

我们正在处理IBMEnterprise日语COBOL源代码。

准确描述 G 类型文字中允许的内容的规则, 标识符的允许范围尚不清楚。

IBM 手册指出 G'....' 文字 引号内的第一个字符必须为 SHIFT-OUT, 以及 SHIFT-IN 作为结束引号之前的最后一个字符。 我们的 COBOL 词法分析器“知道”这一点,但反对 G 文字 在真实代码中找到的。结论:IBM手册是错误的, 或者我们误读了它。客户不让我们看到代码, 所以诊断问题非常困难。

编辑:为了清楚起见,修改/扩展了以下文本:

有谁知道G文字形成的确切规则, 以及它们为何(不)符合 IBM 参考手册的内容? 理想的答案是 G 文字的正则表达式。 这就是我们现在使用的(由另一位作者编码,叹息):

#token non_numeric_literal_quote_g [STRING]
  "<G><squote><ShiftOut> (  
     (<NotLineOrParagraphSeparatorNorShiftInNorShiftOut>|<squote><squote>|<ShiftOut>)  
     (<NotLineOrParagraphSeparator>|<squote><squote>)

     | <ShiftIn> ( <NotLineOrParagraphSeparatorNorApostropheNorShiftInNorShiftOut>|
                   <ShiftIn>|<ShiftOut>)

     | <squote><squote>

 )* <ShiftIn><squote>"

其中 是另一个正则表达式的宏。想必他们 名称足够好,因此您可以猜出它们包含什么。

这里是IBM 企业 COBOL 参考 http://publib.boulder.ibm.com/infocenter/pdthelp/v1r1/topic/com.ibm.entcobol.doc_3.4/igy3lr31.pdf。 第 3 章“字符串”,第 32 页的小标题“DBCS 文字”是相关阅读。 我希望通过提供准确的参考,经验丰富的 IBM 员工可以告诉我们我们是如何误读的:-{ 我特别不清楚“DBCS 字符”一词的含义 当它说“一个或多个字符任一字节在 X'00...X'FF 范围内” DBCS 字符怎么可能不是pairs8位字符代码? 如果您检查现有的 RE,它会匹配 3 种类型的字符对。

下面的一个答案表明 配对是错误的。 好吧,我可能相信这一点,但这意味着 RE 只会拒绝 包含单个 的文字字符串。我不相信那是 当我们似乎遇到了 G 文字的每个实例时,我们遇到了这个问题。

类似地,COBOL 标识符显然可以组成 带有 DBCS 字符。标识符到底允许什么? 同样,正则表达式是理想的选择。

EDIT2:我开始认为问题可能不在于 RE。 我们正在读取 Shift-JIS 编码的文本。我们的读者将其转换为 文本转换为 Unicode。但 DBCS 角色确实 不是 Shift-JIS;相反,它们是二进制编码的数据。可能 正在发生的事情是 DBCS 数据正在被转换 就像 Shift-JIS 一样,这会破坏该功能 将“两个字节”识别为 DBCS 元素。例如, 如果 DBCS 字符对是 :81 :1F,则 ShiftJIS 读取器 会将这一对转换为单个 Unicode 字符, 然后它的两字节性质就丢失了。如果你不会数数, 你找不到最后的报价。如果你找不到最后的引言, 你无法识别字面意思。那么问题就会出现 我们需要在中间切换输入编码模式 词法分析过程。哎呀。


尝试在您的规则中添加单引号,看看它是否通过进行此更改,

  <squote><squote> => <squote>{1,2}

如果我没记错的话,N 和 G 文字之间的一个区别是 G 允许单引号。您的正则表达式不允许这样做。

编辑:我以为你让所有其他 DBCS 文字都正常工作,只是 G 字符串有问题,所以我只是指出 N 和 G 之间的区别。现在我仔细看看你的 RE。它有问题。在我使用的Cobol中,你可以将ASCII与日语混合使用,例如,

  G"ABC<ヲァィ>" <> are Shift-out/shift-in

您 RE 假定仅使用 DBCS。我会放松这个限制并重试。

我认为不可能完全用正则表达式来处理 G 文字。仅使用有限状态机无法跟踪匹配的报价和 SO/SI。你的 RE 是如此复杂,因为它试图做不可能的事情。我只是简化它并手动处理不匹配的标记。

您还可能面临编码问题。该代码可能采用 EBCDIC(片假名)或 UTF-16 格式,将其视为 ASCII 将不起作用。 SO/SI 有时在 Windows 上转换为 0x1E/0x1F。

我只是想帮助你在黑暗中拍摄而不看到实际的代码:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

日语 COBOL 代码:G 文字和标识符的规则? 的相关文章

随机推荐

  • 如何对 Eloquent 子查询进行排序

    我有两个连接的表 团队和成员 这些模型通过 n m 关系连接 在我的团队视图中 我将创建一个 foreach 循环来获取所述团队的成员 如下所示 foreach team gt teammember as member member gt
  • 如何检测ListView Item的位置?

    如何根据列表视图项目在屏幕上的位置向其添加填充 例如 如果 listView 项位于屏幕中间 我希望将其内边距增加 10 点 如果 listView 项位于屏幕顶部附近 我希望将其内边距增加 15 点 您可以通过附加一个来实现这一点Scro
  • 安卓 WifiLock 无法使用?

    我需要每 x 分钟通过 WiFi 和 HTTP 从本地网络上的服务器提取数据 服务在后台运行 我使用 AlarmManager 来触发查询 设备上的 Wifi 睡眠策略设置为 从不 问题是 设备在屏幕关闭时进入睡眠状态 并且 wifi 锁似
  • 在不使用 $rootScope 的情况下使用 Angular ui 路由器防止 stateChange

    我的用户可以离开状态 但在我想显示模式对话框 你想保存吗 之前 仅当用户数据脏时才意味着已更改 我不想要的是将 EditController 中的 isDirty 属性粘贴到 rootScope 转到 stateChangeStart 事件
  • 如何使用复合文字来表示具有任意基数的“fprintf()”多个格式化数字?

    我想将多个数字转换为某种表示形式 然后使用的标志 宽度和精度 printf 说明符 首选是避免全局或static缓冲区 关键问题似乎是如何提供char 对于每个转换后的数字 fprintf ostream some format foo i
  • 使用 2 种不同的配置运行 SSIS 包

    我们有一个名为 ExportData 的 SSIS 作业 它接受 ExportType 参数 ExportType 参数可以是 schedule 或 unschedule 我创建了名为 ExportType 的变量 并创建了 SSIS 配置
  • 在 d3.js 中合并数据

    我是 Pythonista 正在尝试学习 d3 js 微笑 我有一个带有套接字的服务器 我的页面订阅了它 服务器以 JSON 形式发送更新 id0 0 38 id1 0 70 id8 0 71 我写了以下简单的页面
  • 比较对象永远不会返回 true

    我试图比较相同类型的两个对象 在方法 doesHave 中 但我从未返回 true 这是我的代码 private ArrayList
  • Swift 数组到元组数组

    我有以下两个数组 let xaxis monday tuesday wednesday thursday friday let yaxis 1 2 3 4 5 我想将它们合并到一个数组中 如下所示 monday 1 tuesday 2 we
  • 使用 requestAnimationFrame 控制 fps?

    这好像是requestAnimationFrame是现在事实上的动画方式 它在大多数情况下对我来说效果很好 但现在我正在尝试做一些画布动画 我想知道 有什么方法可以确保它以特定的 fps 运行吗 我知道 rAF 的目的是为了获得始终如一的平
  • 更改 MySQL Workbench 查询中的注释字体颜色

    是否可以将字体颜色从浅灰色更改为更鲜艳的颜色 GET TODAY S EVENTS ONLY lt this is the font I want to change where event date CURDATE 我目前在 Window
  • ASP.NET 捕获所有路由和转义正斜杠

    我使用 MVC 的包罗万象的路由来提供应用程序中资源的路径 它看起来像这样 routes MapRoute null Resource resourcePath new controller Resource action Open 动作是
  • Guzzle:处理 400 个错误请求

    我在 Laravel 4 中使用 Guzzle 从另一台服务器返回一些数据 但我无法处理错误 400 错误请求 status code 400 reason phrase Bad Request using client gt get ht
  • Github - 流量 - 奇怪的“Git 克隆”统计数据

    我有一个 Github 存储库 其中包含一些令人困惑的 Git 克隆统计信息 如下所示 该存储库没有大量访问者或 Stars 但在 9 月 29 日显示了相对较多的克隆 GitHub流量帮助页面 https help github com
  • 如何在 SVG / raphael 中的贝塞尔曲线末端绘制箭头?

    我有一条由此生成的曲线 var path M x1 toFixed 3 y1 toFixed 3 L arrow left x arrow left y L arrow right x arrow right y L x1 toFixed
  • Python 错误:io.UnsupportedOperation:fileno

    我正在使用服务器和客户端程序here http www bogotobogo com python python network programming tcp server client chat server chat client s
  • 等待 IO 的可重用测试代码

    我正在尝试在 WCF 公开的方法 服务上使用 async await 一切工作正常 但我想模拟实际等待 IO 的服务方法 以便服务调用将注册到 IO 完成端口 并将线程放回到线程池中 澄清一下 我只是尝试确认 IO 完成端口的使用情况 并更
  • 通过 Wi-Fi 扫描 MFI 产品

    在 iOS 8 中 Apple 允许我们通过 Wifi direct 连接到设备并与其共享 WiFi 网络凭据 我们可以在 wifi 设置页面中执行此操作 也可以在应用程序中执行此操作 我正在尝试启动扫描来查找 wifi MFI 设备 我可
  • 从 aws lambda 函数调用 django 函数视图

    我想在 AWS Lambda 上运行我的 django 视图 为此 我创建了一个 lambda 函数来调用该视图函数 AWS lambda 函数是这样的 gt import app views as v def functionA hand
  • 日语 COBOL 代码:G 文字和标识符的规则?

    我们正在处理IBMEnterprise日语COBOL源代码 准确描述 G 类型文字中允许的内容的规则 标识符的允许范围尚不清楚 IBM 手册指出 G 文字 引号内的第一个字符必须为 SHIFT OUT 以及 SHIFT IN 作为结束引号之