替换大型机数据集中的字符串

时间:2011-11-24 08:31:43

标签: mainframe

我们可以用Mainframe中的另一个字符串替换部分数据吗? 例如假设我有一个长度为80的PS。 从第72列到第80列,存在一些行号。 我想通过特定的字符串说TEST更改这些行号。 我们可以使用任何形式的“C ALL”来实现这一目标吗? ABC文件---

=COLS> -1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
000004    text123                                                      12360002
000005    textabc                                                      12370002

此致 Saisha

4 个答案:

答案 0 :(得分:7)

您可以在ISPF编辑器中轻松完成此操作(您的示例中很清楚):C p‘#’ ‘TEST’ 72-80将使用“TEST”替换第72列到第80列中的任何数字字符串。

答案 1 :(得分:0)

您至少有两个选择:

a)将DFSORT用于INREC IF语句,或;

b)使用FILE-AID。

以下是FILE-AID批处理的示例:

//STEPNAME EXEC PGM=FILEAID,PARM=TSO
//DD01     DD DSN=INPUT.FILE,DISP=SHR
//DD01O    DD DSN=OUTPUT.FILE1,DISP=OLD
//SYSOUT   DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSLIST  DD SYSOUT=*
//SYSTOTAL DD SYSOUT=*
//SYSIN    DD *
$$DD01 COPY  EDITALL=(72,6,C'AAAA',C'BBBBBBBB') 

答案 2 :(得分:0)

您有许多选项,其中没有一项可以对数据进行“就地”更改。也就是说,他们将读取输入并将新文件写为输出。

  • 无论您有哪种SORT产品(DFSORTSYNCSORT(莫名其妙地不会在线发布他们的手册)等,都可能会这样做。可以通过CALL访问这些实用程序,但它们通常作为作业流中的独立步骤执行。虽然这些产品不是免费提供的z / OS,但是如果没有一个这样的大型机商店,那将是非常罕见的。
  • awk,它不太可能以任何简单的方式进行调用。这是免费的z / OS。
  • sed,它不太可能以任何简单的方式进行调用。这是免费的z / OS。
  • File-Aid,我无法代表的CALLability。这是第三方产品,不是免费的。你的商店里可能有也可能没有。
  • 自己写。如果需要CALLable,那么您可以用您选择的语言编写它。如果它不需要是CALLable,那么您还有更多选项,EasytrieveSASSPSS,(所有这些都是成本较低的第三方产品),以及{ {3}},Java等免费下载。您也可以编写独立Perl或使用Rexx或Rexx创建Clist ISPF,然后您可以在edit macro中执行。

毫无疑问还有其他选择。

答案 3 :(得分:0)

我个人认为源代码中的序列号无用且令人讨厌。 (这也是73-80,而不是72-80顺便说一句)。当源代码保存在卡片上时,它们对于重新排序源“甲板”非常有用,这些“甲板”意外掉落,卡片散落在各处。如今,由于源存储在磁盘上并在线编辑,它们完全没有用处,也没有人再次使用它们。每当我找到它们时,我都会将它们改为空格。这也允许源以可变长度格式存储,节省可观的磁盘空间;-)第1列到第7列中的COBOL序列号同样没有用处。将这些更改为空格可提高可读性,并使这些列中的任何合法注释更加突出。