9

古いレガシーコードからいくつかのロジックを見つける必要があります。私のマネージャーは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;
4

4 に答える 4

24

編集:

これは私を悩ませてきました。EXEC や Rexx ではなく、明らかに CMS で実行されていたという理由で、EXEC 2 が終了しました。

しかし、それはNOMADそのものだと今では思っています。確認するのは難しいですが、ここhttp://www.tallant.com/portfolio/webpages/web/nomad/nomad2.htmlはコードの例です。

それがEXEC 2から/と一緒に実行されるかどうかはわかりません。同様の方法で動作するか、「システム機能」を実行するために必要に応じてCMSまたはCPへの「シェルアウト」をサポートするだけです。

だから、おそらくそうではない...

EXEC2です。

VM/CMS には 2 つの「古い」コマンド言語があり、最も古く、最も制限されているのは EXEC です。Rexx は「新しい」コマンド言語でした。

これが悪いと思うなら、EXEC がどのようなものか想像してみてください。EXEC と EXEC2 は CLIST と似ていますが、共通の祖先があるかどうかはわかりません。

したがって、IBM の VM オペレーティング システムと関係があるのは、最近では「シェル スクリプト言語」であり、オリジナルの「仮想マシン」であり、「シングル ユーザー オペレーティング システム」と呼ばれる「シングル ユーザー オペレーティング システム」の複数のコピーを実行する機能を備えています。 VMでのみ実行され、「CMS FILEDEF」が入る場所であるCMS(会話型モニターシステムだと思います)(CMSに「シェルアウト」します)、VMは単一または複数のインスタンスとして完全に実行できます- DOS/VSE、MVS、VM (これもまた、他の「ゲスト」オペレーティング システムを実行できる) などの吹き飛ばされた IBM オペレーティング システムと、最近では z/OS、z/VSE、そしてわかりませんが、おそらく Linux です。

編集。「/ 」「 /」コメントを含めるのは非常に悪い習慣です。ファイルの最初の行がそのように開始および終了する場合、内容は Rexx であると見なされます。VM は 3 つの「言語」すべてをサポートしますが、プログラムの開始方法に応じて異なるインタープリターを実行します。

メモリから、EXEC は * (コメント) で始まり、EXEC2 はそれを必要としません。Rexx は /* から */ までで、CMS では複数行にまたがることがあります。

于 2013-02-22T00:43:02.497 に答える
3

これはCLISTです。IBM メインフレームでよく見られます。

編集

2 番目のテイクでは、これは CLIST ではありません。ただし、CLIST のいとこのように見えます (古い IBM システムにはいくつかのバリエーションがありました)。私の推測では、これは CMS の下で実行されている、ある種のかなり古い EXEC であるということです。

この線:

CMS FILEDEF QAA2 DISK QAA2 NOMAD A6 (LRECL 100;

ファイル割り当てのための CMS へのエスケープのように見えるので、CMS を思い浮かべます。

誰かがそれがSASである可能性があると示唆しました. IBMシステム上のSASもCLIST風に見えるかもしれませんが、SASではないと思います(かなり前にSASで数回しか機能しなかったので、これについても修正する必要があります)。

これがEXEC2かどうかはわかりません。VM SP EXEC 2 Reference Manualを掘り起こしました。例の中には、EXEC2 に「変換」されていないように見えるものがあります。たとえば、PROC、DECLARE、LENGTHB、CALL、および CAT はマニュアルに記載されていません。私は 80 年代にしばらく CMS を使用していて、実際にこれに似たものを書かなければなりませんでしたが、それはずっと前のことで、構文の多くを覚えていません。

私が言えることは、これは 1980 年代半ばから後半にかけての IBM システムで見つかったスクリプト言語の派生物のように見えるということだけです。

それは確かに COBOL や REXX ではありません。

于 2013-02-21T19:08:29.083 に答える
-1

これについてはよくわかりませんが、REXXのようです。見てください:

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

于 2013-02-21T18:02:02.447 に答える
-1

これは CLIST コードです。

以前は、多くの CLIST コードがありましたが、現在は REXX が独自の場所を占めています。しかし、依然として CLIST は多くのメインフレーム システムで使用されています。

于 2013-02-22T16:54:44.077 に答える