Domanda

Adoro passare il tempo a indagare sulle caratteristiche interessanti delle lingue, anche se non avrò la possibilità di usarle presto, ma continuo a sentire solo cose negative su Cobol, ma sono sicuro che deve avere alcune caratteristiche interessanti per farlo diventare importante quanto lo è stato.Quindi quali sarebbero alcune buone caratteristiche che si potrebbero imparare da Cobol?

È stato utile?

Soluzione

La capacità di scrivere formule in modo meno conciso. Ad esempio:

ADD YEARS TO AGE.
MULTIPLY PRICE BY QUANTITY GIVING COST.
SUBTRACT DISCOUNT FROM COST GIVING FINAL-COST.

E 'un vantaggio o uno svantaggio? dipende da come la si guarda ...

Altri suggerimenti

True variabili in virgola fissa e la matematica. Così, per 15 dollari e 75 centesimi la tua rappresentazione interna è stata la cifre binarie 1, 5, 7 e 5. Questa è stata una rappresentazione esatta rispetto al punto di approssimazione floating standard. -Point anche corretti, tutti addizioni e sottrazioni tale variabile-punto fisso stata inoltre.

L'estensione Report Writer è stato molto bravo a generare report e gestire intestazioni, piè di pagina, interruzioni di pagina, le interruzioni di sezione, e qualsiasi cosa abbia a che fare con la generazione di report.

La Sort / Merge estensione era anche molto, molto buono. Con la varietà di costrutti ammissibili si potrebbe semplicemente sorta / merge, o si potrebbe elaborare i record sorta di ingresso prima della specie o ordinare in uscita dopo l'ordinamento. Ad esempio, alimentare i record di input direttamente per ordinare, ma poi usare Report Writer sui record ordinati senza dover gestire un file ordinato intermedio nel codice. Molto bello.

Quello che ha fatto bene, ha fatto molto bene. E 'solo che la maggior parte del tempo, quello che ha fatto bene non è esattamente quello che ti serve.

La longevità. La lingua ho imparato nel 1975 può essere utilizzato per i servizi Web di oggi.

Inoltre, COBOL ha una caratteristica sento la gente che chiede per tutti i giorni. Dati due dischi che hanno campi di con gli stessi nomi, si può fare:

MOVE CORRESPONDING SOURCE-RECORD TO DESTINATION-RECORD.

ed esso si sposterà i campi con lo stesso nome da uno all'altro, facendo conversioni se necessario. La mancanza di una funzione di come questo è uno degli ostacoli nel modo di persone che adottano Transfer Data Objects per il ritorno dai servizi web -. Dovete scrivere il codice per fare quanto sopra, a mano, o utilizzare la generazione di codice

Credo che ci può essere stato un ADD CORRESPONDING pure, ma non sono sicuro. La memoria comincia ad andare, dopo un po '...

Formato di output è parte della dichiarazione variabile. E 'molto orientata al business.

  

Nel COBOL, una dichiarazione di variabile   consiste in una linea nella DATA   DIVISIONE che contiene la seguente   elementi:

* A level number.
* A data-name or identifier.
* A Picture clause.
     

Un valore di partenza può essere assegnato ad un   variabile mediante un'estensione   la clausola PICTURE chiamato il VALORE   Clausola.

     

Alcuni esempi:

01 GrossPay       PIC 9(5)V99 VALUE ZEROS.

01 NetPay         PIC 9(5)V99 VALUE ZEROS.

01 CustomerName   PIC X(20) VALUE SPACES.

01 CustDiscount   PIC V99 VALUE .25.

Il supporto per decimale imballato per la matematica esatta;

Costruito nel file indicizzati / smistamento;

compilatori maturo;

E 'un po' prolisso, ma ottiene il lavoro fatto.

Oh, come potrei dimenticare ...

Al posto di:

if ((a == 3) || (a == 4) || (a == 10))

scrittura:

IF A IS 3 OR 4 OR 10

Al posto di:

if ((a == 3) || (a < b))

scrittura:

IF A IS 3 OR LESS THAN B

Al posto di:

if ((a >= 3)  && (a <= 10))

scrittura:

IF A IS BETWEEN 3 AND 10

Le caratteristiche strutturazione dei dati sono circa buono come si arriva per i campi a lunghezza fissa.

ALTER è decisamente flessione mente. Forse non è un bene per l'uso nel codice di produzione, ma divertente da giocare. Fondamentalmente, essa permette di cambiare ciò che le dichiarazioni segui ciò che altre dichiarazioni (GOTOS insert) in fase di runtime.

MOVE CORRESPONDING

Diciamo che ha avuto 2 classi in C #, che aveva alcuni campi in comune, per esempio, la classe A ha nome, età, sesso e, oltre ad alcuni altri campi ... di classe B ha le stesse 3 campi, più alcuni altri di propria. L'unico modo per copiare i campi potrebbe essere:

a.Name = b.Name;
a.Age = b.Age;
a.Sex = b.Sex;

Nel COBOL, basta scrivere:

MOVE CORRESPONDING A TO B

E 'molto facile da imparare. Ho scritto solo due programmi COBOL nella mia vita (per decomprimere i file COBOL ISAM in un formato diverso) e ho imparato tutto quello che ho bisogno di sapere, al fine di farlo, con l'aiuto di un libro, in un pomeriggio.

Oh, e sarà impressionare sul tuo cervello l'ortografia corretta della parola "ambiente".

1). Facile da imparare. 2). La sintassi è più inglese simile e quindi facile comprendere la logica di programma anche per beginers.

Essa ha anche una caratteristica interessante quando si dichiarano le variabili ... al posto della dichiarazione della variabile, si può anche dichiarare alcune possibili Valori della variabile ed etichettarli con booleani. È possibile utilizzare

IF [boolean_label]

anziché

IF [variable] IS [value]

che è particolarmente bello se i valori non sono particolarmente significative (numeri ossia magici o anche stringhe magia) ... quei valori magici appaiono solo nella dichiarazione della variabile e sono ben etichettati con il loro significato.

Si può anche set la variabile ad uno di questi valori con:

SET [boolean_label] TO TRUE

Quelli di Sun (ora Oracle) probabilmente si arrabbieranno con me, ma FORTRAN e COBOL sono stati i primi tentativi di scrivere linguaggi "one, runwhere".IBM ha aggiunto estensioni al linguaggio COBOL che praticamente hanno annullato il tentativo di COBOL.

Prima di COBOL e FORTRAN, i linguaggi informatici erano specifici della macchina.I computer erano così costosi che era più economico riscrivere il codice ogni volta che si aggiornava il computer.Alla fine degli anni '50 IBM si rese conto che la creazione e il mantenimento di un'architettura informatica coerente avrebbe fatto risparmiare denaro ai clienti (e aumentato il mercato dei sistemi informatici).Ecco perché IBM ha sviluppato la serie di computer 360.

Allo stesso modo, i clienti si resero conto che riscrivere il software per ogni nuova macchina stava diventando troppo costoso.IBM ha sviluppato gli inizi di FORTRAN, mentre Grace Hopper e il governo federale hanno guidato lo sviluppo di COBOL.Il che spiega perché IBM ha aggiunto tutte quelle estensioni proprietarie a COBOL.Il coinvolgimento del governo federale spiega anche perché il COBOL è un linguaggio così prolisso.

COBOL è grande per la formattazione dell'output. Un campo di output che appare come:

TOTAL-PAY PIC $$$, $$$. 99

sarebbe stampare il $ destra accanto al valore. Sarebbe stampare fino a $ 99,999.99. Se il valore è stato solo $ 150, sarebbe print $ 150,00. Inoltre, v'è di solito una funzione COBOL che avrebbe convertire tale importo a parole - "Centocinquanta DOLLARI E NO centesimi"

È anche possibile ridefinire record per consentire l'elaborazione di file di testo di più tipi di record.

01 my-address-record.
   02 my-record-type      pic x.
   02 my-street           pic x(20).
   02 my-city             pic x(20).
   02 my-state            pic x(2).
   02 my-zip              pic x(5).
   02 filler              pic x(3).
01 my-comments-record redefines my-address-record.
   02 filler              pic x.
   02 my-comments         pic x(50).
01 my-automobiles redefines my-address-record.
   02 filler              pic x.
   02 year                pic 9(4).
   02 make                pic x(20).
   02 model               pic x(20).
   02 filler              pic x(6).


--code--
if my-record-type = 'a'
   ... process address
else if my-record-type = 'b'
   ... process comments
else if my-record-type = 'c'
   ... process automobiles.

Un altro vantaggio ... se si sta programmando su un mainframe, si può tranquillamente essere sicuri che COBOL sarà disponibile ... non è vero per tutte le altre lingue. È un po 'come il C del mainframe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top