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 &RFROM NE &NAV THEN DO;
WRITE '&RFROM = ''' CATB DISPLAY(&RFROM) CATB ''';' ON QAA2;
END;
CLOSE QAA2;
Run Code Online (Sandbox Code Playgroud)
Bil*_*ger 24
编辑:
这一直困扰着我.推理它不是EXEC而不是Rexx,但显然在CMS中运行,这离开了EXEC 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上可以跨越多行.