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

Nei*_*ir0 9 programming-languages mainframe

我必须从旧的遗留代码中找到一些逻辑.我的经理说是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;
Run Code Online (Sandbox Code Playgroud)

Bil*_*ger 24

编辑:

这一直困扰着我.推理它不是EXEC而不是Rexx,但显然在CMS中运行,这离开了E​​XEC 2.

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

无论是从EXEC 2开始还是在EXEC 2旁边,我都不知道.它可能只是以类似的方式运行,或者只是支持"外壳"到CMS或CP,以执行"系统功能".

所以,它可能不是......

这是EXEC2.

VM/CMS有两种"旧"命令语言,最老的,最有限的是EXEC.Rexx是"新"命令语言.

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

因此,现在正是这种"shell脚本语言"与IBM的VM操作系统有关,这是最初的"虚拟机",它包括运行多个"单用户操作系统"副本的能力. CMS(会话监控系统,我相信),它只在VM上运行,而且是"CMS FILEDEF"进入的地方(它正在向CMS"外壳"),以及VM可以作为单个或多个实例运行,吹制IBM操作系统,如DOS/VSE,MVS,VM(再次,它可以运行其他"访客"操作系统)和现在z/OS,z/VSE,我不知道,但可能是Linux.

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

从内存开始,EXEC以*(注释)开头,EXEC2不需要,而Rexx与/*到*/,在CMS上可以跨越多行.