2010-12-13 12 views
15

Sono uno studente laureando in Informatica. Il mio dipartimento insegna la maggior parte dei suoi corsi utilizzando Java (anche se ho seguito un corso sull'architettura di sistema che utilizzava C per dimostrare la programmazione del processore, la gestione della memoria, ecc .... ma sto divagando).Apprendimento COBOL senza accesso al mainframe

Voglio saperne di più su COBOL, ma non ho accesso a un sistema mainframe. Qualcuno può consigliare un gratuito compilatore COBOL per Windows che mi consenta di passare attraverso alcuni tutorial COBOL di base?

Disclaimer: sì, ho già provato su Google questo, sperando che alcune persone con esperienza possano fornire ulteriori informazioni.

Grazie!

+0

COBOL nella scuola di specializzazione? Wow. Mi sentirei meglio se insegnassero qualcosa come Lisp invece che solo Java. – duffymo

+2

@duffymo - FWIW, ho fatto anche una lezione di programmazione funzionale, insegnata con PLT Scheme. :) –

+1

È questo per una classe, o qualcosa che stai facendo da solo?La tua domanda fa sembrare il secondo, ma se è vero sei certificabile. Ho fatto un sacco di COBOL al college, poi mi sono bloccato a lavorare con lui professionalmente per tre anni. Non è davvero una lingua divertente. – AgentConundrum

risposta

22

Altri poster hanno suggerito Tiny COBOL, ma date un'occhiata anche allo OpenCOBOL. OpenCOBOL è un cross-compilatore di C e ha una comunità di sviluppo abbastanza attiva.

COBOL non è una lingua difficile da apprendere. A meno che non si stia cercando di entrare in un negozio di mainframe, lo dedicare molto tempo allo studio di COBOL potrebbe non avere molto ripagamento della carriera.

Come ha sottolineato Belisarius, non è tanto la lingua quanto l'ambiente che deve essere appreso. Per analogia, non c'è molto da imparare sul linguaggio C neanche. Tuttavia, solo conoscere C non ti porterà molto lontano - devi lavorare con l'enorme libreria standard che viene fornita con esso. COBOL è simile nel rispetto di . La differenza è che COBOL non viene fornito con un'enorme libreria standard, ma fa parte di un pacchetto che spesso include: CICS, DB/2, MQ-Series e una serie di altri servizi di libreria (Servizi LE in un ambiente IBM).

COBOL può essere trovata al di fuori di un ambiente mainframe, ma il mainframe è la sua "vera casa". Come generalizzazione, "mainframe" implica un mainframe IBM che esegue Z/OS (molti potrebbero fare eccezione a questa dichiarazione). Questa pubblicazione: Introduction to the Mainframe - z/OS è un buon posto per avere un'idea di come sia un ambiente mainframe IBM.

Le cose che trovo caratterizzare COBOL sono:

  • COBOL è un linguaggio procedurale. Alcuni fornitori hanno aggiunto le estensioni OO e i nuovi standard di lingua COBOL includono le estensioni OO, ma questo è in gran parte l'allestimento della finestra. COBOL è fondamentalmente un linguaggio procedurale.

  • Dichiarazione di dati. La cosa PICTURE/USAGE è un po 'una mente bender. La dichiarazione dei dati combina la rappresentazione dei dati interni (binario, decimale compresso, virgola mobile, carattere, ecc.) Con la presentazione (numero di cifre, zero iniziali, segno, ecc.) In un'unica dichiarazione.

  • REDEFINES utilizzato per fornire viste differenti della stessa memoria sottostante.

  • Dichiarazioni gerarchiche di dati. La gerarchia dei dati viene definita utilizzando i numeri di livello. Il livello 1 definisce la parte superiore della gerarchia e i numeri crescenti definiscono i livelli inferiori. I livelli 66 (in congiunzione con RENAMES), 77, 88 hanno significati speciali.

  • Flusso di controllo.Molti programmatori (anche alcuni veterani programmatori COBOL) visualizzano SECTION/PARAGRAPH in modo simile a una chiamata di procedura. Sono completamente diversi. SECTION/PARAGRAPH do non seguire la normale semantica chiamata/ritorno orientata allo stack. COBOL utilizza un meccanismo univoco per gestire il ritorno dalle sezioni/paragrafi PERFORMed.

  • Programmi monolitici con tonnellate di variabili globali. Non è raro trovare i file di origine COBOL in migliaia di righe con diverse centinaia di variabili globali. COBOL non deve essere scritto in questo modo - credo che questa sia un'eredità risalente a un tempo in cui le chiamate alla procedura erano considerate costose ma PERFORMing a SECTION/PARAGRAPH era molto efficiente. L'abitudine sembra avere bloccato e nuovi programmi COBOL tendono a essere scritti anche come mostri monolitici.

  • Incubo di gestione delle stringhe. COBOL calcola i calcoli finanziari molto bene. Non gestisce molto bene la gestione delle stringhe . I verbi di gestione delle stringhe INSPECT, STRING e UNSTRING possono fare un numero di cose interessanti, ma riescono anche ad essere piuttosto aggravanti.

  • COPY/REPLACING e REPLACE direttive del compilatore devono essere comprese. Si comportano in qualche modo in modo diverso dall'inclusione dei file nella maggior parte delle altre lingue. La maggior parte dei negozi utilizza COPY solo per la registrazione dei dati comuni o la dichiarazione di dati , altri li utilizzano anche per codice procedurale comune (con REPLACING eo REPLACE).

Data una conoscenza pratica di C, si dovrebbe essere in grado di raccogliere su COBOL senza troppe difficoltà.

+0

+1 per _COBOL utilizza un meccanismo unico per la gestione rientro da sezioni eseguite/paragraphs_ cose piuttosto brutte possono essere fatte dai programmatori indisciplinati :) –

+0

Un commento sul _dating di nuovo ad un tempo in cui le chiamate di procedura sono stati considerati costly_: Credo che la tradizione è stato anche in parte a causa della mancanza di CVS (sia nella fonte che nelle incarnazioni compilate). Mi ricordo la costruzione di ben CVS soffiato in _Vollie_ (un prodotto defunta, alla ICCF) solo per convincere i programmatori di riutilizzare _something_ –

0

Hai provato TinyCobol? I penso L'ho usato una volta e non era male.

Qualche tempo fa, MicroFocus aveva una versione gratuita del proprio compilatore IDE + (Net Express), ma non la offrono più. Sono piuttosto sicuro di avere una copia dell'installatore da qualche parte su qui, anche se non sono sicuro che sarebbe ancora legale installarlo se non offrono più il prodotto. Posso dare un'occhiata più tardi questa sera (sarebbe sul mio altro computer, che è attualmente senza testa e inattivo) e vedere cosa mi viene in mente.

+0

grazie, entusiasta come mi accingo imparare COBOL (risatina), io sicuramente non vorrebbe rompere le leggi in questo modo. Darei un'occhiata a TinyCobol però, grazie per il suggerimento! –

6

Non affronterò la tua domanda specifica, poiché molti anni fa ho smesso di funzionare come programmatore di sistemi mainframe (e con mainframe in generale ... e questo include COBOL). Tuttavia, ci sono due punti che voglio sottolineare:

  1. COBOL è un facile da imparare lingua. All'inizio ti sembrerà che la sintassi sia scoraggiante. Un sacco di "divisioni", "sezioni", "paragrafi" ... prova solo a capire perché esistono. Nessuno scrive quelle etichette. Il modo in cui COBOL utilizza e ridefinisce le strutture dati è forse il concetto più interessante, cerca di comprenderlo bene.

  2. Questo è il punto chiave. Ho detto "COBOL è facile". Ora le cattive notizie: essere un programmatore COBOL giusto è il NON facile. Ma questo non ha nulla a che fare con COBOL, è l'ambiente. Il mainframe è grande e ci sono molti "ecosistemi". Hai DB2, CICS, alcuni JCL e VSAM come minimo e forse una dozzina di altri, a seconda dell'installazione. Stampanti, nastri e altri hardware specializzati e difficili da gestire. Ognuno di loro richiede molti anni per essere domato, e questo è il vero valore di un buon programmatore di mainframe. Microfocus disponeva di un costoso prodotto di compilazione/ambiente in grado di emulare alcune di queste funzionalità, ma penso che sia fuori mercato ora.
    In ogni caso, la destrezza con queste caratteristiche è solitamente acquisita "nel negozio" e molto difficile (credetemi) per ottenere da un libro o un corso.

Detto questo, non si aspettano di ottenere un lavoro mainframe (diverso da un super-juniores uno) dopo aver appreso e domare COBOL. Questo è solo un primo piccolo passo.

HTH!

1

C'era un compilatore Cobol-to-C ed Eclipse IDE di una società chiamata "The Kompany". Il prodotto è stato chiamato "Kobol". Ti permetterebbe di scrivere Cobol usando un ambiente basato su Eclipse che sarebbe simile a quello che useresti per un mainframe (Rational Developer for Z). Hanno una versione demo gratuita e una versione studente IIRC economica.

Troverete che Cobol è facile da imparare, facile da scrivere e difficile da fotografare con i piedi. Questo è uno dei motivi per cui è così popolare tra le istituzioni finanziarie.

Penso che sia fantastico aggiungere Cobol alla casella degli strumenti.

0

Micro focus ora offre gratuitamente la loro Edizione personale di Visual COBOL per uso non commerciale. Questo COBOL funziona con Microsoft Visual Studio come linguaggio .Net o Eclipse. Viene fornito con una versione Lite di Visual Studio, quindi non devi comprarlo. Puoi scaricarlo da https://www.microfocus.com/product-downloads/vcpe/vcpe22/index.aspx

L'open source OpenCOBOL su www.opencobol.org/ ora ha cambiato nome e posizione. Ora chiamato GNU Cobol può essere trovato su sourceforge.net/projects/open-cobol/. Questo è un COBOL eccellente che implementa una parte sostanziale degli standard COBOL ANS 85 e ISO 2002.

Il sito GNU COBOL ha anche un collegamento a Programmer Guide di Gary Cutler per OpenCOBOL 1.1 che è un eccellente riferimento di lingua. Se stai cercando materiale didattico puoi provare il mio tutorial COBOL all'indirizzo www.csis.ul.ie/cobol/course

Esiste anche una versione online molto utile di COBOL che utilizza il compilatore OpenCOBOL. Può essere trovato a http://www.compileonline.com/compile_cobol_online.php Scopri il loro programma "Hello world" troppo lungo. In ISO 2002 COBOL la DIVISIONE DI IDENTIFICAZIONE non è necessaria e poiché il programma si arresta quando viene raggiunta la fine del testo, non è necessario nemmeno STOP RUN. Solo le tre linee mostrate di seguito sono effettivamente necessarie. Prova tu stesso.

PROGRAM-ID. HELLO-WORLD. 
PROCEDURE DIVISION. 
    DISPLAY 'Hello, world'.