如何在 z/OS 上为 COBOL 设置 git 项目?

Igo*_*ski 4 git cobol zos

我有一个 git 项目,主要包含 z/OS COBOL 源代码。

当我使用以下命令将其克隆到我的 z/OS 系统时:

git clone myproject
Run Code Online (Sandbox Code Playgroud)

我注意到所有克隆的文件都是 ASCII (ISO8859-1) 格式。有没有办法将工作树保留在 z/OS 上的 EBCDIC 1047 中?

chtag -p产生以下结果:

t ISO8859-1    T=on  hello.cob
Run Code Online (Sandbox Code Playgroud)

与此同时,我目前正在使用 iconv 转换文件,但有更好的方法吗?

Cro*_*ind 5

很长一段时间以来,Git 都有 gitattributes,这是回答这个问题的起点。您可以在此处的Git 文档中阅读更多相关信息。

\n

与您在文档中找到的内容相比,z/OS 在这方面的行为有点不同。但这是有原因的。虽然 Git 文档提到working-tree-encoding您应该使用zos-working-tree-encoding指定 IBM-1047 来代替。它最初是由 Rocket 开发的,但后来也被其他版本采用(请参阅下面 Mike 的评论)。它记录在这里:https://docs.rocketsoftware.com/bundle/openappdev_ug_20/page/brb1683803214347.html

\n

我不确定这一点,但我的理解是,通过这种方式,非 z/OS 主机上的 Git 签出在尝试将文件转换为 EBCDIC 代码页时不会遇到问题。如果您确定您的项目不会在非 z/OS 系统上签出,您也可以使用working-tree-encoding.

\n

您的案例的示例 .gitattributes 文件如下所示:

\n
*.cob        zos-working-tree-encoding=ibm-1047\n
Run Code Online (Sandbox Code Playgroud)\n

.gitattributes 文件必须采用 UTF-8(或 ISO8859-1,但尽量坚持使用 UTF-8。)

\n

注意:您可能会发现来自 IBM 的一些示例,其中还包含 git-encoding 参数来指定 Git 如何在内部处理文件。不应再使用它,默认为 UTF-8(也在 z/OS 上)。Rocket在这里对此进行了描述。

\n

注 2:根据个人经验,IBM-1047 通常是不够的,因为它不包含 \xe2\x82\xac 符号,这就是为什么我们倾向于使用像 ibm-1141 这样的国家代码页(在德国这里) )。对于世界其他地方来说,这可能并不有趣。

\n