2013-02-21 14 views
9

Ich muss eine Logik aus einem alten Legacy-Code finden. Mein Manager sagt, ist COBOL, ich bin mir nicht sicher. Ich habe versucht, einige Schlüsselwörter auf Cobol Tutorials ohne Glück zu finden.Kann mir jemand sagen, welche Sprache das ist?

Hier sind einige Code-Schnipsel:

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; 
+0

PLSQL Wahrscheinlich nicht sicher? –

+1

Möglicherweise SAS? Hier ist ein Link zu einem PDF. [LINK] (http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CD0QFjAB&url=http%3A%2F%2Fwww2.sas.com%2Fproceedings%2Fsugi23%2FPosters% 2Fp199.pdf & ei = nGAmUbOmaYu02AWZkYHIDw & usg = AFQjCNE1h9c5t43P3Ww01muqbBShLz52Ug & sig2 = 4KRtdzMCH2SNdOghT32ong & bvm = bv.42661473, d.b2I & cad = rja) –

+0

@bwtrent ist SAS eine Programmiersprache? Blick auf den Link und ich verstand, es ist ein Werkzeug, oder nicht? – Neir0

Antwort

24

EDIT:

Das hat mich nervt. Schlussfolgerung, dass es nicht EXEC und nicht REXX war, aber eindeutig in CMS lief, das EXEC 2 verließ.

Allerdings glaube ich jetzt, dass es NOMAD selbst ist. Schwierig zu bestätigen, aber hier, http://www.tallant.com/portfolio/webpages/web/nomad/nomad2.html, sind Beispiele für einige der Code.

Ob es von/neben EXEC 2 läuft, weiß ich nicht. Es kann einfach in ähnlicher Weise arbeiten oder nur Unterstützung für das "Ausbrechen" zu CMS oder CP haben, wie es notwendig ist, um "Systemfunktionen" auszuführen.

Also, es ist wahrscheinlich nicht ...

Es Exec2 ist.

Es gibt zwei "alte" Befehlssprachen mit VM/CMS, die älteste und am meisten eingeschränkte ist EXEC. Rexx war die "neue" Befehlssprache.

Wenn Sie denken, dass dies schlecht ist, sich vorstellen, was EXEC wie ist. EXEC und EXEC2 haben Ähnlichkeiten mit CLIST, aber ich weiß nicht, ob sie einen gemeinsamen Vorfahren haben.

Also, was ist heutzutage "eine Shell-Skriptsprache" mit IBM VM-Betriebssystem zu tun, die die ursprüngliche "virtuelle Maschine" ist und die Möglichkeit enthält, mehrere Kopien eines "Single-User Betriebssystem "genannt CMS (Conversational Monitor System, glaube ich), die nur auf VM läuft und wo ist die" CMS FILEDEF "kommt (es" schält "auf CMS), sowie VM kann als Einzel- oder Multiple laufen Instanzen, vollwertige IBM-Betriebssysteme wie DOS/VSE, MVS, VM (wieder, die dann andere "Gast" -Betriebssysteme ausführen können) und heutzutage z/OS, z/VSE und, weiß ich nicht, aber wahrscheinlich Linux.

Bearbeiten. Es ist sehr schlechte Praxis, dass es die "/ " " /" Kommentar enthält. Wenn die erste Zeile einer Datei so beginnt und endet, wird der Inhalt als Rexx angenommen. Die VM unterstützt alle drei "Sprachen", führt jedoch je nach Start des Programms unterschiedliche Interpreter aus.

Vom Speicher beginnt EXEC mit einem * (Kommentar), EXEC2 benötigt das nicht, und Rexx mit dem/* zu * /, das auf CMS mehr als eine Zeile umfassen kann.

+1

Trotz zwei Änderungen habe ich vergessen zu erwähnen, dass VM ein IBM Mainframe-Betriebssystem ist. –

+0

Es könnte eine gute Idee sein, darauf hinzuweisen, dass dies wahrscheinlich eine NOMAD-Prozedur mit imgebogenem EXEC2 ist. Einige der Anweisungen im Skript müssen NOMAD sein, da sie nicht EXEC2 sind. Was passiert, wenn ein HTML-Dokument eingebettetes Javascript enthält, ist das Ergebnis weder reines HTML noch Javascript. Gute Schlampe ... – NealB

+0

Ich habe mehr gesucht. Ein EXEC 2 startet & TRACE. Aus dem Speicher (erstaunte nichts als gescannte Dokumente verfügbar) würde ein Befehl in einem EXEC 2, der nicht als EXEC 2 "erkannt" wurde, zu der "Umgebung" gehen, von der er ausgeführt wurde, wenn er immer noch nicht aufgelöst wird oder so ähnlich, so einfach, diese Art von Mischung zu bekommen. –

-1

ich darüber bin nicht sicher, aber es sieht aus wie es REXX sein kann. Werfen Sie einen Blick:

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

+0

Danke. Ich schaute schnell darauf. Und ich habe bemerkt, dass die Verwendung von Variablen anders ist. In meinen Snipets werden die Variablen vorangestellt mit & Ex: & ALLPROG = 'YES'; – Neir0

+0

Sein nichts wie Rexx, Seine Clist oder eine Variante davon –

3

Diese CLIST ist. Häufig auf IBM Mainframes gefunden.

EDIT

Auf den zweiten nehmen, ist dies nicht CLIST. Es sieht jedoch aus wie ein enger Verwandter von CLIST (von denen ältere IBM-Systeme einige Varianten hatten). Meine beste Vermutung ist, dass dies eine ziemlich alte EXEC ist, die unter CMS läuft.

Die Linie:

CMS FILEDEF QAA2 DISK QAA2 NOMAD A6 (LRECL 100; 

sieht aus wie eine Flucht zu CMS für die Zuordnung-Datei, damit Sie mich über CMS macht denken.

Jemand schlug vor, dass es SAS sein könnte. SAS auf IBM-Systemen kann auch ein CLISTish-Look haben, aber ich denke nicht, dass es SAS ist (arbeitete nur mit SAS einige Male vor sehr langer Zeit, also werde ich auch hier korrigiert werden).

Ich bin nicht so sicher, dass dies auch EXEC2 ist. Ich grub die VM SP EXEC 2 Reference Manual. Einige der Dinge in dem Beispiel scheinen nicht in EXEC2 zu "übersetzen": PROC, DECLARE, LENGTHB, CALL und CAT zum Beispiel sind nicht im Handbuch beschrieben. Ich habe CMS in den 80ern für eine Weile verwendet und musste eigentlich ähnliche Sachen schreiben, aber das war eine lange Zeit her und ich erinnere mich nicht mehr viel an die Syntax der .

Über alles kann ich sagen, dass dieses Zeug wie eine Derivat der Skriptsprachen auf IBM-Systemen der Mitte der späten 1980er Jahre aussieht.

Es ist sicherlich nicht COBOL oder REXX.

+0

Ein weiteres Problem Linie ist "SCREEN QUERY LOADED QAAF OTW DO;" auch die DECLARE-Anweisungen sind nicht normal TSO-clist –

-1

Dies ist ein CLIST-Code.

Früher benutzt es viele CLIST Code zu sein, und jetzt hat REXX seinen eigenen Platz genommen. Aber CLIST wird immer noch in vielen Mainframe-Systemen verwendet.

+1

Nein, ist es nicht. CLIST ist nicht in einer Umgebung verfügbar, in der auch CMS verfügbar ist. Wenn Sie wirklich glauben, dass es CLIST ist (unter MVS/z/OS), erklären Sie bitte, wie einfach es ist, auf CMS zuzugreifen, welches ein separates Betriebssystem ist, obwohl es beide Betriebssysteme neben einem anderen Betriebssystem laufen lässt Ding, dass sie die ganze Welt für sich haben. –

Verwandte Themen