这是什么语言:PROC、VERIFY、DECLARE、SCREEN、CMS,



我必须从旧的遗留代码中找到一些逻辑。我的经理说是COBOL,我不确定。我试图在COBOL教程中找到一些关键词,但没有找到。

以下是一些代码片段:

PROC(&QPROG);
VERIFY OFF PROC;DECLARE &MSG1 AS A75;
/* DON'T CALL SCREEN IF IT'S FROM  */
IF &QPROG NE 'YUITG' THEN DO;
   CALL QAAF;
   SCREEN QUERY LOADED QAAF OTW DO;
      PRINT 'SCREEN WILL NOT LOAD';
      EXIT;
  END;
END;
ON ERROR DO;PRINT &&RC;EXIT; END;
IF LENGTHB(&P_WHAT) = 4 THEN DO; &P_WHATT = SUBSTR(&P_WHAT,1,1) CAT
   ', ' CAT SUBSTR(&P_WHAT,2,1) CAT ', ' CAT SUBSTR(&P_WHAT,3,1) CAT
   ' & ' CAT SUBSTR(&P_WHAT,4,1);
END;
DECLARE &KEYWORDD_A(0) AS A1;
DECLARE &KEYWORDD_F(0) AS 99L;
&KEYWORDD_A=
(SUBSTR(&KEYWORDD,1,1),SUBSTR(&KEYWORDD,2,1),SUBSTR(&KEYWORDD,3,1),
SUBSTR(&KEYWORDD,4,1),SUBSTR(&KEYWORDD,5,1),SUBSTR(&KEYWORDD,6,1),
SUBSTR(&KEYWORDD,37,1),SUBSTR(&KEYWORDD,38,1),SUBSTR(&KEYWORDD,39,1),
SUBSTR(&KEYWORDD,40,1));
&KEYWORDD_F = FINDEX(&KEYWORDD_A = ' ',ALL);
IF &PROG EQ &NAV THEN DO;
   &ALLPROG = 'YES';
   &PROG = 'PR2';
END;
-TOP_PROG
CMS FILEDEF QAA2 DISK QAA2 NOMAD A6 (LRECL 100;
WRITE '/* REPORT */' ON QAA2;
WRITE '&GRP        = ''' CATB &GRP CATB ''';' ON QAA2;
WRITE '&MGTRPT     = ''' CATB &QPROG CATB ''';' ON QAA2;
IF &AMPRFROM NE &NAV THEN DO;
   WRITE '&AMPRFROM = ''' CATB DISPLAY(&AMPRFROM) CATB ''';' ON QAA2;
END;
CLOSE QAA2;

编辑:

这一直困扰着我。因为它不是EXEC,也不是Rexx,但显然是在CMS中运行的,所以留下了EXEC 2。

然而,我现在相信这是NOMAD本身。很难确认,但在这里,http://www.tallant.com/portfolio/webpages/web/nomad/nomad2.html,是一些代码的示例。

我不知道它是否从EXEC 2运行。它可能只是以类似的方式运行,或者只是支持CMS或CP执行"系统功能"所需的"炮击"。

所以,它可能不是。。。

它是EXEC2。

VM/CMS有两种"旧"命令语言,最古老也是最受限制的是EXEC。Rexx是"新"的命令语言。

如果你认为这很糟糕,想象一下EXEC是什么样子。EXEC和EXEC 2与CLIST有相似之处,但我不知道它们是否有共同的祖先。

因此,这就是如今IBM的VM操作系统的"shell脚本语言",它是最初的"虚拟机",它包括运行名为CMS(我相信是会话监控系统)的"单用户操作系统"的多个副本的能力,该操作系统只在VM上运行,这就是"CMS FILEDEF"的作用所在(它对CMS来说是"花钱"),VM也可以作为单个或多个实例运行成熟的IBM操作系统,如DOS/VSE、MVS、VM(同样,它可以运行其他"来宾"操作系统),现在还有z/OS、z/VSE,我不知道,但可能是Linux。

编辑。包含"/"/"注释是非常糟糕的做法。如果文件的第一行以这样的方式开始和结束,则假定内容为Rexx。VM支持所有三种"语言",但根据程序的启动方式运行不同的解释器。

在内存中,EXEC以*(注释)开头,EXEC 2不需要,Rexx以/*到*/开头,在CMS上可以跨越多行。

这是CLIST。常见于IBM主机上。

编辑

第二次拍摄时,这不是剪辑。不过,它看起来像是CLIST的近亲(旧的IBM系统有一些变体)。我最好的猜测是,这是一个相当古老的EXEC,在CMS下运行。

线路:

CMS FILEDEF QAA2 DISK QAA2 NOMAD A6 (LRECL 100;

看起来像是对CMS进行文件分配的转义,所以这让我想到了CMS。

有人建议可能是SAS。IBM系统上的SAS也可以有一个CLISTish的外观,但我不认为它是SAS(很久以前只与SAS合作过几次,所以我也会在这方面得到纠正)。

我也不太确定这是EXEC2。我挖了VM SP EXEC 2参考手册。示例中的一些内容似乎没有"转换"为EXEC2:PROC、DECLARE、LENGTHB、CALL和CAT,例如,手册中没有描述。我曾经CMS在80年代有一段时间,实际上不得不写类似的东西,但那是很久以前的事了,我真的记不清了语法。

我所能说的是,这些东西看起来像是20世纪80年代中后期IBM系统上发现的脚本语言的翻版。

它当然不是COBOL或REXX。

我不确定,但看起来可能是REXX。看看:

http://en.wikipedia.org/wiki/Rexx

这是一个CLIST代码。

早些时候,曾经有很多CLIST代码,现在REXX已经占据了自己的位置。但CLIST仍在许多大型机系统中使用。

最新更新