我必须从旧的遗留代码中找到一些逻辑。我的经理说是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 &RFROM NE &NAV THEN DO;
WRITE '&RFROM = ''' CATB DISPLAY(&RFROM) CATB ''';' ON QAA2;
END;
CLOSE QAA2;
答案 0 :(得分:24)
编辑:
这一直困扰着我。推理它不是EXEC而不是Rexx,但显然在CMS中运行,这离开了EXEC 2.
但是,我现在相信这是NOMAD本身。很难确认,但在这里,http://www.tallant.com/portfolio/webpages/web/nomad/nomad2.html是一些代码的例子。
是否从EXEC 2开始运行,我不知道。它可能只是以类似的方式运行,或者只是支持“shelling out”到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上可以跨越多行。
答案 1 :(得分:3)
这是CLIST。通常在IBM Mainframes上找到。
修改强>
第二次拍摄时,这不是CLIST。它看起来像是CLIST的近亲(其中较旧的IBM系统有一些变体)。我最好的猜测是,这是一种在CMS下运行的相当旧的EXEC。
该行:
CMS FILEDEF QAA2 DISK QAA2 NOMAD A6 (LRECL 100;
看起来像是逃避CMS进行文件分配,这让我想起了CMS。
有人建议可能是SAS。 IBM系统上的SAS也可以有一个CLISTish外观,但我不认为它是SAS(很久以前只与SAS一起工作过几次,所以我也要对此进行纠正)。
我不太确定这也是EXEC2。我挖出来了 VM SP EXEC 2 Reference Manual。 示例中的某些内容似乎并未“转换”为EXEC2:例如,手册中未描述PROC,DECLARE,LENGTHB,CALL和CAT。我用了 CMS回到了80年代并且实际上不得不写类似的东西,但那是很久以前我真的不记得了 的语法。
我可以说的是,这些东西看起来像是1980年代中后期IBM系统上发现的脚本语言的衍生物。
当然不是COBOL或REXX。
答案 2 :(得分:-1)
我不确定这一点,但它看起来可能是REXX。看看:
答案 3 :(得分:-1)
这是一个CLIST代码。
早些时候,有很多CLIST代码,现在REXX已经占据了自己的位置。但仍然在许多大型机系统中使用CLIST。