Qual è il lato positivo di Cobol?[Chiuso]
-
23-08-2019 - |
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?
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.