【问题标题】:What language is this: PROC, VERIFY, DECLARE, SCREEN, CMS,这是什么语言:PROC、VERIFY、DECLARE、SCREEN、CMS、
【发布时间】:2013-02-21 17:51:41
【问题描述】:

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

这里有一些代码sn-ps:

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;

【问题讨论】:

  • PLSQL 可能,不确定?
  • 可能是 SAS?这是 PDF 的链接。 LINK
  • @bwtrent SAS 是一种编程语言吗?看了一眼链接,我明白它是一种工具,还是不是?
  • 是的,它是一种语言。 WIKI LINK
  • 另一个问题行是“SCREEN QUERY LOADED QAAF OTW DO;”

标签: programming-languages mainframe


【解决方案1】:

编辑:

这一直困扰着我。推理它不是 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和EXEC2与CLIST有相似之处,但不知道它们是否有共同的祖先。

因此,IBM 的 VM 操作系统是当今的“shell 脚本语言”,它是原始的“虚拟机”,它包括运行“单用户操作系统”的多个副本的能力系统”称为 CMS(我相信会话监控系统),它只在 VM 上运行,并且是“CMS FILEDEF”进入的地方(它正在向 CMS“掏空”),VM 也可以作为单个或多个实例运行, 成熟的 IBM 操作系统,例如 DOS/VSE、MVS、VM(同样,它可以运行其他“来宾”操作系统)和现在的 z/OS、z/VSE 以及,我不知道,但可能Linux。

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

根据记忆,EXEC 以 *(注释)开头,EXEC2 不需要,Rexx 以 /* 到 */,在 CMS 上可以跨越多行。

【讨论】:

  • 尽管已经进行了两次编辑,但我忘了提到 VM 是 IBM 大型机操作系统。
  • 指出这可能是一个嵌入了 EXEC2 的 NOMAD 过程可能是个好主意。脚本中的一些语句必须是 NOMAD,因为它们不是 EXEC2。有点像 HTML 文档包含嵌入的 javascript 时发生的情况,结果既不是纯 HTML 也不是 javascript。好骚……
  • 我一直在寻找更多。 EXEC 2 启动 &TRACE。从内存中(除了扫描的文档可用)EXEC 2 中的一个命令没有被“识别”,因为 EXEC 2 将进入它运行的“环境”,如果仍然没有解析到 CMS,如果仍然没有解析到 CP ,或类似的东西,很容易得到那种类型的混音。
  • 完全正确... 这种脚本编写方法已经存在了很长时间。 CLIST 和 REXX 也这样做。事实上,我相信这是许多脚本语言中使用的一个非常常见的“技巧”——如果无法识别某些内容,则执行变量替换并将生成的字符串推送到调用环境命令处理器以进行处理。每个处理器做同样的事情,直到其中一个处理它并返回;或“kaboom”,当堆栈处理器用完时。
  • 更新了新的想法。那些“不太正确”的事情再次出现了“赞成票”,也许:-)
【解决方案2】:

这是CLIST。常见于 IBM 大型机。

编辑

第二次,这不是 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。

【讨论】:

  • 另一个问题行是“SCREEN QUERY LOADED QAAF OTW DO;” DECLARE 语句也不是正常的 TSO-clist
【解决方案3】:

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

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

【讨论】:

  • 谢谢。我连忙看了看。而且我注意到变量的使用完全不同。在我的片段中,变量在 & 前面使用:&ALLPROG = 'YES';
  • 它与 Rexx、它的 Clist 或它的一些变体完全不同
【解决方案4】:

这是一个 CLIST 代码。

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

【讨论】:

  • 不,不是。 CLIST 在 CMS 也可用的环境中不可用。如果您真的觉得它是 CLIST(在 MVS/z/OS 下),请解释它是如何轻松访问 CMS,它是一个单独的操作系统,虽然它可能与另一个操作系统“一起”运行,但这两个操作系统他们拥有整个世界。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 2014-09-03
相关资源
最近更新 更多