JCL - 获取给定区域(大型机)中非空间字符的数量

时间:2012-06-18 01:28:09

标签: mainframe jcl

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

 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,还是需要这样做的程序?

-Thanks

2 个答案:

答案 0 :(得分:5)

你需要一个程序。

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

  

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

sort是一个程序。它恰好是在大多数系统上找到的程序(虽然有不同供应商的实现,IBM有一个,SyncSort有一个,CA有一个,等等。)在大型机系统上常见plenty of other programs

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

根据您的具体情况,您可以创建SORT退出,或在Rexx中处理您的数据,或者您可以使用部分Unix System Services commands并通过{{3}执行}或BPXBATCH

答案 1 :(得分:1)

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

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

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