2013-02-21 17 views
9

Devo trovare una logica da un vecchio codice legacy. Il mio manager dice che è COBOL, non ne sono sicuro. Ho provato a trovare alcune parole chiave sui tutorial di cobol senza fortuna.Qualcuno può dirmi che lingua è questa?

Ecco alcuni frammenti di codice:

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 Probabilmente, non è sicuro? –

+1

Forse SAS? Ecco un link a un 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 è un linguaggio di programmazione SAS? Guardato il link e ho capito che è una specie di strumento, o no? – Neir0

risposta

24

MODIFICA:

Questo mi ha infastidito. Ragionando che non era EXEC e non Rexx, ma era chiaramente in esecuzione in CMS, che lasciava EXEC 2.

Tuttavia, ora credo che sia NOMAD stesso. Difficile da confermare, ma qui, http://www.tallant.com/portfolio/webpages/web/nomad/nomad2.html, sono esempi di alcuni codici.

Sia che funzioni da/a fianco a EXEC 2, non lo so. Può semplicemente funzionare in modo simile, o semplicemente avere il supporto per "eseguire il bombardamento" su CMS o CP secondo necessità per eseguire "funzioni di sistema".

Quindi, è probabilmente non ...

È EXEC2.

Esistono due lingue di comando "vecchie" con VM/CMS, la più vecchia e la più limitata è EXEC. Rexx era il "nuovo" linguaggio di comando.

Se pensi che questo sia male, immagina come è l'EXEC. EXEC ed EXEC2 hanno somiglianze con CLIST, ma non so se hanno un antenato congiunto.

Quindi, è ciò che è attualmente "un linguaggio di scripting della shell" da fare con il sistema operativo della macchina virtuale di IBM, che è la "macchina virtuale" originale e che include la possibilità di eseguire più copie di un "utente singolo" sistema operativo "chiamato CMS (Conversational Monitor System, credo) che viene eseguito solo su VM e dove viene inserito" CMS FILEDEF "(è" shelling out "su CMS), così come VM può essere eseguito, come singolo o multiplo istanze, sistemi operativi IBM completi come DOS/VSE, MVS, VM (di nuovo, che possono quindi eseguire altri sistemi operativi "Guest") e in questi giorni z/OS, z/VSE e, non lo so, ma probabilmente Linux.

Modifica. È pessima pratica includere il commento "/ " " /". Se la prima riga di un file inizia e finisce in questo modo, si suppone che i contenuti siano Rexx. VM supporta tutte e tre le "lingue" ma esegue interpreti diversi a seconda di come inizia il programma.

Dalla memoria, EXEC inizia con un * (commento), EXEC2 non ha bisogno di questo, e Rexx con/* a * /, che su CMS può estendersi su più di una riga.

+1

Nonostante due modifiche già, ho dimenticato di menzionare che VM è un sistema operativo IBM Mainframe. –

+0

Potrebbe essere una buona idea precisare che questa è probabilmente una procedura NOMAD con EXEC2 incorporato. Molte delle istruzioni contenute nello script devono essere NOMAD perché non sono EXEC2. Un po 'come succede quando un documento HTML contiene javascript incorporato, il risultato non è puro HTML o javascript. Buona troia ... – NealB

+0

Ho cercato di più. Un EXEC 2 inizia e TRACE. Dalla memoria (stupito nulla tranne documenti scansionati disponibili) un comando in un EXEC 2 che non è stato "riconosciuto" come EXEC 2 sarebbe andato all '"ambiente" dal quale era stato eseguito, se non ancora risolto in CMS, se non ancora risolto in CP o qualcosa del genere, così facile da ottenere quel tipo di mix. –

-1

Non sono sicuro di questo, ma sembra che possa essere REXX. Date un'occhiata:

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

+0

Grazie. Ho guardato rapidamente. E ho notato che l'uso delle variabili è stato abbandonato. Nei miei snipets, le variabili vengono usate prima con & Ex: & ALLPROG = 'YES'; – Neir0

+0

Non ha nulla di simile a Rexx, Its Clist o qualche variazione di esso –

3

Questo è CLIST. Comunemente trovato su IBM Mainframes.

EDIT

Sulla seconda ripresa, questo non è CLIST. Sembra un cugino stretto di CLIST (di cui i vecchi sistemi IBM avevano poche varianti). La mia ipotesi migliore è che si tratti di un EXEC piuttosto vecchio di qualche tipo in esecuzione in CMS.

La linea:

CMS FILEDEF QAA2 DISK QAA2 NOMAD A6 (LRECL 100; 

si presenta come una via di fuga per CMS per allocazione dei file in modo che mi fa pensare di CMS.

Qualcuno ha suggerito che potrebbe essere SAS. Anche i sistemi SAS su IBM possono avere un aspetto CLISTish, ma non credo che sia SAS (solo con SAS funzionava solo poche volte molto tempo fa, quindi su di esso devo essere corretto).

Non sono sicuro che sia anche EXEC2. Ho scavato il VM SP EXEC 2 Reference Manual. Alcune delle cose nell'esempio non sembrano "tradurre" in EXEC2: PROC, DECLARE, LENGTHB, CALL e CAT ad esempio non sono descritte nel manuale. Ho usato il CMS negli anni 80 per un po 'e in realtà ho dovuto scrivere cose simili a questo, ma è stato tanto tempo fa e non ricordo molto della sintassi .

Tutto quello che posso dire è che questa roba sembra una derivata dei linguaggi di scripting trovati sui sistemi IBM della metà degli anni '80.

Certamente non è COBOL o REXX.

+0

Un'altra riga di problema è "SCREEN QUERY LOADED QAAF OTW DO;" anche le dichiarazioni DECLARE non sono normali TSO-clist –

-1

Questo è un codice CLIST.

In precedenza, c'era molto codice CLIST e ora REXX ha preso il suo posto. Ma ancora CLIST viene utilizzato in molti sistemi Mainframe.

+1

No, non lo è. CLIST non è disponibile in un ambiente in cui è disponibile anche CMS. Se ritieni che sia CLIST (sotto MVS/z/OS), ti preghiamo di spiegare in che modo accede così facilmente a CMS, che è un sistema operativo separato, che sebbene potrebbe essere in esecuzione "a fianco" di un altro sistema operativo, entrambi i sistemi operativi cosa che hanno il mondo intero per se stessi. –