2012-06-18 19 views
1

我需要准备一些输入数据来运行程序,数据应该采用以下格式。JCL - 获得给定区域(大型机)的非空间字符数

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

我可以使用排序来正确定位字段并获取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

+0

你想记录字符或两个职位之间的字符数? – user823959

+0

你需要约45 IFTHEN =(WHEN =(logexp语句,但他们会非常相似,所以,是的,你可以用Sort来完成整个事情。 –

回答

5

您将需要一个程序。

我在Stack Overflow上看到大量的大型机问题,询问是否可以使用“JCL only”。请记住,JCL主要是执行程序的一种手段,除此之外其他方面实际上做得很少。举例来说,当你说

我可以使用排序正确定位等领域,并获得UID和 文本字段

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

而只是为了迂回,JCL实际上并没有做什么,JES做它的工作,因为它解释JCL。

您的特定情况下,你可以创建一个SORT退出,或在Rexx处理您的数据,或者你可以使用一些Unix System Servicescommands和执行通过BPXBATCHCOZBATCH那些。

+0

同意,如果你想在JCL中使用它,通常意味着您需要对其进行调整而不重新编译代码,因此使用REXX或Eztrieve或更高级的实用程序。 – mckenzm

1

我已经使用REXX程序完成了像这样的临时转换。该计划是相当直接:

  • 分配的输入和输出文件
  • 打开这两个文件 开始循环:
  • 读取输入
  • 提取文本字段,并剥夺尾随空格
  • 获得修剪的文本字段的长度和格式为5位数字
  • 覆盖数字重新记录在Len字段位置
  • 写出更新的记录 重复循环,直到文件结尾
  • 关闭这两个文件
  • 免费分配的文件

让我知道如果你需要一些实际的代码。我发现REXX在字符串函数和操作方面优于COBOL。我甚至用COBOL创建并调用了REXX例程来实现这一点。

相关问题