1

我需要准备一些输入数据来运行程序,数据应该是以下格式。

 UID (1-11)|TxtLen (12-16)| Text (17-62)

我可以使用 sort 正确定位字段并获取 UID 和文本字段。'TxtLen' 应该包含从文本字段开头到文本字段中最后一个字符的字符数。

i.e. “Hello”’s TxtLen is 5, “Hel lo”’s TxtLen is 6, “Hello World”’s TxtLen is 11, etc...

我想知道是否有办法仅通过 JCL 获取 TxtLen,或者是否需要一个程序来执行此操作?

-谢谢

4

2 回答 2

6

您将需要一个程序。

我在 Stack Overflow 上看到相当多的大型机问题,询问“仅 JCL”是否可行。请记住,JCL主要是一种执行程序的方法,实际上除此之外几乎没有什么作用。例如,当你说

我可以使用 sort 正确定位字段并获取 UID 和文本字段

sort是一个程序。它恰好是大多数系统上的一个程序(尽管有不同供应商的实现,IBM 有一个,SyncSort 有一个,CA 有一个,等等)在大型机系统上常见的还有很多其他程序。

只是为了迂腐,JCL 实际上并没有做任何事情JES在解释 JCL 时完成工作。

对于您的特定情况,您可以创建一个 SORT 出口,或在Rexx中处理您的数据,或者您可以使用一些Unix 系统服务 命令并通过BPXBATCHCOZBATCH执行这些命令。

于 2012-06-18T02:26:14.327 回答
1

我已经使用 REXX 程序完成了这样的临时转换。该程序非常简单:

  • 分配输入和输出文件
  • 打开两个文件开始循环:
  • 读取输入
  • 提取文本字段并去除尾随空格
  • 获取修剪后的文本字段的长度和格式为 5 位数字
  • 覆盖号回到 Len 字段位置的记录中
  • 写出更新的记录重复循环直到文件结束
  • 关闭两个文件
  • 释放分配的文件

如果您需要一些实际代码,请告诉我。我发现 REXX 在字符串函数和操作方面优于 COBOL。我什至已经从 COBOL 创建并调用了 REXX 例程来实现这一点。

于 2012-10-25T04:12:16.580 回答