Margareta DRAGHICI

Margareta DRĂGHICIface parte din galeria marilor clasici ai lucrărilor de informatică prin cartea de COBOL, referită prin:
Margareta DRĂGHICI- Inițiere în COBOL, Editura Tehnică, București, 1972, 370 pag.
Am în față această carte a cărei prefață a fost scrisă de marele matematician Grigore MOISIL. Cele câteva cuvinte scrise de savant se află pe partea interioară a primei coperți și acesta ne spune că:
este vorba de prima lucrare în limba română despre COBOL, fiecare cititor va decide măsura în care se va apropia de acest limbaj, referirile se fac pentru calculatorul FELIX C-256.
în paginile 11-14 ale cărții, autoarea, Margareta DRĂGHICIface o serie de considerații privind istoricul limbajului, face o descriere a modului în care abordează problematica prezentării limbajului COBOL în ideea ca, în final, cititorul să aibă noțiunile necesare scrierii unui program propriu, pentru rezolvarea unei probleme de la locul său de muncă. în introducere se spune că persoana care decide măsura în care va folosi această carte este cititorul însuși. Este dată o justificare a testului de 18 întrebări de autocontrol pentru cititor, înainte de începerea lecturii. Paginile 17 și 18 oferă răspunsurile.
Voi lua întrebările 14, 15, 16 și 17 ale testului, care se referă la diferite reprezentări ale numerelor, unde se apelează la detalii pe care programatorii limbajului de asamblare le cunosc, ceea ce mă duce cu gândul la faptul că, dacă ești un programator excelent folosind resursele limbajului de asamblare, necesitatea de a citi o carte de inițiere într-un limbaj devine neinteresantă. Eu am văzut la viața mea cărți în care autorii vorbesc despre capitole și spun ce capitole trebuie sărite atunci când cititorul are anumite cunoștințe. Ca să spui că numai dacă ești doctor în reprezentări trebuie să te apuci să citești o carte de inițiere este deja un lucru exagerat pentru o carte care se adresează maselor, căci este o carte de inițiere în COBOL, iar tirajul de 15.000 + 1440 exemplare broșate, pentru țara noastră, era un tiraj de masă, grupul țintă fiind sub 10.000 de cititori.
Cartea este structurată în șapte capitole
. Capitolul 1, intitulat Organizarea și manevrarea datelor. Noțiuni necesare programatorului în COBOL, paginile 19 - 82, are 19 subcapitole ce privesc conținutul unui program COBOL, execuția unui program, lungimea, natura câmpurilor unui articol din fișier, perforarea cartelelor, înregistrarea fizică, moduri de prelucrare în COBOL, moduri de organizare a fișierelor, necesitatea de a defini puține date în memoria calculatorului.
Capitolul 2, intitulat Structura programelor COBOL, face unele considerații privind alfabetul utilizat, reguli de construire a identificatorilor și a numelor de paragrafe. Este prezentat metalimbajul de descriere a instrucțiunilor limbajului COBOL, paginile 98 - 103. Limbajul folosește numai literele mari, cifrele și câteva caractere speciale. Faptul că la pagina 84 a unei cărți de 370 de pagini apare prima captură de la imprimantă cu un program, face dovada că autoarea cărții și-a dorit ca numai după ce au fost asimilate multe cunoștințe despre fișiere și gestionarea câmpurilor să se treacă la scrierea de programe.
Faptul că la pagina 87 sunt descrise caracterele permise în COBOL arată că autoarea și-a propus ca numai după ce sunt clarificate conceptele de bază ale managementului de date să se treacă la aspecte concrete legate de limbajul COBOL.
Este bine că la paginile 88 - 90 se află lista cuvintelor rezervate ale limbajului COBOL date în ordine alfabetică.
La pagina 93 sunt făcute clarificări legate de reprezentarea datelor în virgulă mobilă, deși în testul acela de start al cărții era pusă exact aceeași problemă ca barieră de start în studierea limbajului…
Este interesant modul în care este prezentat metalimbajul de descriere pentru COBOL, cu exemplificări într-un tabel pe trei coloane. în prima coloană este forma algebrică a expresiei, pe a doua coloană este instrucțiunea COBOL și pe a treia coloană se precizează despre ce formă a instrucțiunii din metalimbaj este vorba.
Pentru expresia B := A + B se folosește instrucțiunea COBOL ADD A TO B. Pentru expresia D:= A + B + 11 + C se folosește instrucțiunea COBOL ADD A B 11 C GIVING D.
Capitolul 3, intitulat Descrierea datelor într-un program COBOL. Diviziunea DATA, paginile 104 - 169, se referă la secțiunea de descriere a fișierelor și ia la rând clauzele la dispoziția programatorului pentru descrierea câmpurilor unui articol. Aici mă voi opri la FILLER - pagina 118, clauza JUSTIFIED - pagina 127, clauza PICTURE - pagina 128, clauza OCCURS - pagina 160, dar și la clauza REDEFINES - pagina 167.
La pagina 113 se află un exemplu de descriere a unui articol și autoarea a ales ca pentru continuarea unor descrieri pe care nu le mai dezvoltă să scrie - - -*, ceea ce mi-a adus aminte de o întâmplare petrecută acum mulți ani la un seminar. Era către sfârșitul celor două ore, am enunțat o problemă, am dat câteva detalii și la încheiere am zis și așa mai departe, continuați dumneavoastră”. La seminarul următor, o studentă mi-a reproșat că programul dat de mine nu a mers. Când am analizat imprimanta, respectiva nu scrisese restul de instrucțiuni, ci textul și așa mai departe, continuați dumneavoastră”. Am speranța că cititorii Margaretei DRăGHICI, cei ce au trecut testul de la primele pagini ale cărții, au înlocuit de fiecare dată - - - * cu ceea ce trebuia ca textul sursă să fie complet și corect. La vremea mea, eu am aprofundat COBOL după ce am intrat în producție în decembrie 1970, folosind ghidurile furnizate de firma IBM, unde dacă perforai cartele după ce era scris pe foile de programare și rulai programul, obțineai exact rezultatele scrise acolo. Faptul că abia la pagina 266 găsesc un program pe care, dacă-l perforez pe cartele exact așa cum este el dat în carte, pot obține un rezultat, mă pune în situația să mă consider un tip foarte răbdător și perseverent în a studia limbajul COBOL după această carte. Capitolul 4, intitulat Descrierea algoritmului prin instrucțiuni COBOL. Diviziunea PROCEDURE trece în revistă, pe cele 73 de pagini, instrucțiunile MOVE, OPEN, CLOSE, DISPLAY, READ, WRITE, STOP, GO TO, IF, PERFORM, instrucțiunile de calcul ADD, SUBTRACT, MULTIPLY, DIVIDE, COMPUTE. Este luată fiecare instrucțiune și prezentată, după care se trece la exemplificări.
Instrucțiunea STOP are varianta STOP literal care determină imprimarea la consola calculatorului a literalului, ceea ce îl atenționează pe operatorul din sala calculatorului să execute anumite operațiuni. Cealaltă formă este STOP RUN și determină întreruperea execuției programului. în continuare sunt prezentate instrucțiunile GO TO pentru saltul necondiționat, instrucțiune blamată de teoreticienii programării structurate, dar care este menținută oricum, căci cine a lucrat în limbaj de asamblare știe că instrucțiunea de salt necondiționat nu poate fi evitată, chiar dacă ea se numește mascat CALL sau RETURN sau PERFORM sau oricum altcumva; tot ceea ce face GO TO trebuie să facă, pentru că nu există program 100% secvențial, orice s-ar spune. La paginile 174 - 191 sunt prezentate instrucțiunile de intrare - ieșire, READ, WRITE, DISPLAY, ACCEPT, OPEN, CLOSE, cu exemplificări sugestive. Autoarea cărții, Margareta DRăGHICI, acordă o atenție specială instrucțiunilor de calcul și de prelucrare, cu luarea în considerare a unor nuanțe legate de depășirea de capacitate, dar și de rotunjirea rezultatelor.
Instrucțiunea MOVE, foarte utilizată în programe COBOL, este analizată cu exemple din care programatorul să înțeleagă efectele generate de tipurile de câmpuri și de lungimile câmpurilor când se înregistrează diferențe dintre lungimile zonelor de memorie. MOVE emițător TO receptor și programatorul trebuie să știe clar cum stau lucrurile referitoare la tipuri, lungimi și la limitări în ceea ce privește procesele de conversie.
Instrucțiunea IF prezintă în COBOL forme specifice, căci este posibilă testarea tipului de conținut, a semnului și compararea dintre valorile unor câmpuri, aspecte extrem de frecvente în programele COBOL, iar cartea face diferențierile necesare, iar exemplele sunt sugestive. La paginile 226 - 240 sunt tratate formele existente la dispoziția programatorului pentru instrucțiunea PERFORM. Mă refer la execuția unei singure secvențe de instrucțiuni. Mă refer la execuția unei succesiuni de secvențe de instrucțiuni delimitată printr-o primă, respectiv, ultimă etichetă.
Mă refer la o implementare a structurii repetitive cu până la trei variabile de control. Cine va încerca să calculeze produsul a două matrice va vedea că nu este o treabă deloc ușoară în COBOL.
Capitolul 5, intitulat Diviziunile IDENTIFICATION și ENVIRONMENT, care se află la paginile 244 - 256, prezintă paragrafele celor două diviziuni. Este un capitol ceva mai scurt, pentru că la IDENTIFICATION DIVISION programatorul are puține elemente de creativitate. El trebuie să scrie numele programului la paragraful PROGRAM-ID, iar celelalte paragrafe legate de comentarii referitoare la autor, instalare, data scrierii, data compilării, remarci sunt opționale.
La diviziunea ENVIRONMENT DIVISION programatorul trebuie să se concentreze pe paragraful FILE-CONTROL, căci în fraza SELECT el trebuie să descrie fișierul cu care lucrează. Dacă are n fișiere, tot n fraze SELECT trebuie să scrie.
Capitolul 6 intitulat Fișiere organizate secvențial indexat și selectiv. Prelucrarea lor în COBOL, de la paginile 257 - 285, face rescrieri pentru cele două moduri, arătând specificul fiecărui mod de organizare și de regăsire a articolelor.
Este prezentată organizarea secvențial indexată și rolul cheii de identificare a articolului căutat. Se prezintă la paginile 267 - 271 cum se actualizează un astfel de fișier.
La paginile 271 - 285 se prezintă fișierele selective. Acum când lumea lucrează lejer cu bazele de date, are mirări cum de a acceptat acest mod ocolit de a organiza datele, dar mai ales legate de modul de regăsire a datelor după chei, acum construirea de expresii complexe în care apar chei de regăsire nemaifiind deloc o chestie nici excentrică, nici imposibilă.

Capitolul 7, intitulat Sortarea înregistrărilor unui fișier prin program COBOL, paginile 286 - 297, descrie specificul procesului de sortare după una sau mai multe chei și prezintă instrucțiunea SORT. Se consideră cinci fișiere, numite ALFA, BETA, GAMA, DELTA, TETA, unde TETA este fișier intermediar, cu articolele numite ART-1, ART-2, ART-3, ART-4 și ART-INT. Dacă se dorește sortarea articolelor fișierului ALFA după o cheie, iar fișierul sortat să fie BETA, articolele fișierului ALFA sunt copiate în fișierul intermediar TETA, fișier unde articolele sunt sortate, iar rezultatul sortării se transferă în fișierul BETA. Fișierul ALFA conține articolele inițiale și fișierul BETA conține fișierul sortat.
Figura 7.1 prezintă schemele după care:
este creat fișierul intermediar TETA,
se efectuează sortarea folosind comanda SORT,
se copiază articolele din fișierul intermediar TETA în fișierul BETA.
Capitolul conține și alte variante de utilizare a comenzii SORT în care sortarea se realizează numai pentru anumite articole din fișierul inițial ALFA, articole care sunt trecute în fișierul temporar după ce se verifică faptul că îndeplinesc cerința formulată. După aceea se realizează sortarea.
Este luată în considerare și situația în care fișierul inițial conține trei tipuri de articole ce trebuie sortate separat, obținându-se mai multe fișiere sortate. în procesul ce urmează sortării se realizează separarea articolelor sortate în mai multe fișiere, după cum sunt îndeplinite condițiile formulate inițial. Autoarea vine cu exemple sugestive, iar schemele din figurile 7.2 și 7.3 clarifică pașii procesului de sortare, respectiv de separare a fișierelor sortate.
în multe probleme economice sunt necesare grade de total, drept care ar fi fost interesant un capitol 8 destinat problemelor cu un grad, cu două grade și cu trei grade de total, atât de necesare celor ce lucrează în contabilitate.
Cartea are la paginile 298 - 356 răspunsuri la întrebări și exerciții.
Răspunsurile sunt fie scheme logice, fie secvențe de program, fie reprezentări ale unor șiruri de caractere, fie răspunsuri seci prin DA sau NU, după cum a fost formulată problema.
Cartea are 4 anexe referitoare la:
corespondența cod cartelă - cod intern,
formularul COBOL
, clasificarea instrucțiunilor COBOL,
fișiere pe bandă sau pe disc. Anexele sunt de maximă utilitate.
Corespondența cod cartelă - cod intern este utilă în depanarea de programe, când apar erori de mare finețe. La seminariile noastre de programare cu utilizarea foii de programare COBOL se începea, căci ea este totul în scrierea de programe. Ghidurile de programare COBOL de la IBM au prezentat texte ale programelor pe foi de programare, subliniind necesitatea respectării puncuației și a modului de scriere pentru a face diferența între litera O și cifra zero.
Clasificarea instrucțiunilor în:
instrucțiuni condiționale,
instrucțiuni imperative,
are menirea de a impune diferențierea atenției programatorului pe componentele de bază ale programului său, astfel ca textul sursă să fie unul corect și complet.
Bibliografia conține 13 referințe, dintre care 6 sunt manuale ale firmei IRIS care a realizat licența după care a fost construit calculatorul românesc FELIX C-256. Restul de 7 referințe bibliografice conțin titlul unor lucrări elaborate în intervalul 1967 - 1971. Cinci dintre titluri conțin cuvântul cheie COBOL și mă refer la manualul de utilizare și manualul de operare elaborate pentru calculatorul IRIS 50, respectiv la lucrările elaborate de Michel BARES și Henri DUCASSE, respectiv Daniel D. McCRACHEN, I. TALLINEAU. Trebuie să mă felicit că în ultimul an de facultate când profesorii mei Gheorghe WEISS și ștefan MUSTățEA mi-au predat limbajul COBOL și m-au învățat să scriu programe în acest limbaj, veneau cu experiență în spate de programatori COBOL și au știut cum să prezinte cerințele limbajului, astfel încât încă de la primele cursuri eram în stare să scriem programe a căror complexitate a crescut pe măsură ce avansam cu predarea materiei.
îmi aduc aminte ca și acum că ni s-a spus că, datorită faptului că în COBOL se lucrează cu volume mari de date, este nevoie de disciplină și, de aceea, există o mare rigiditate în a scrie programe, cu respectarea regulilor sintactice, căci programatorii COBOL trebuie să fie ordonați, disciplinați și să știe ce vor, căci fișierele nu se gestionează oricum și mai ales de către oricine. La seminarii ni s-au arătat care sunt diferențele în a scrie un program în FORTRAN, respectiv în COBOL pentru a rezolva o aceeași problemă și când un limbaj este mai avantajos decât celălalt în a soluționa probleme. Noi am scris programe care rezolvau ușor probleme în FORTRAN și foarte greu în COBOL, dar am scris și programe care rezolvau probleme ușor în COBOL și aproape imposibil în FORTRAN.
Se vede de departe că Margareta DRĂGHICIa muncit mult la această carte, că ea a scris multe programe COBOL și a inclus în paginile cărții multe elemente din experiența proprie. La vremea ei, cartea a fost un instrument pentru mulți dintre cei care doreau să învețe să programeze în COBOL. Eu nu m-am numărat printre ei, căci la apariția cărții deja lucram în acest limbaj și sursa mea de învățare și de inspirație a fost documentația de la IBM, pe care și în ziua de azi o consider excelentă pentru cei ce doresc să facă programare ca la carte, învățând de la marii maeștri.
De-a lungul anilor, Margareta DRĂGHICIa mai scris cărți referite prin: Margareta Dina DRĂGHICI- Situri Web în HTML 4, Editura Tehnică, București, 2003, 152 pag, ISBN: 9733121118
(20 iunie 2026, Bad Füssing, Germania)

revenire