Showing posts with label FORMAT. Show all posts
Showing posts with label FORMAT. Show all posts

Tuesday, December 19, 2017

Object time în FORTRAN

Cel mai simplu mod de a face mentenanță este de a transforma modificările în date care se preiau de către program de pe cartele, iar lista de descriptori de format o definește benefiarul exact cum are nevoie. Se știe că marile probleme de mentenanță sunt cu datele de intrare și cu cele de ieșire în ceea ce privește precizia.
Pentru a avea o astfel de soluție se procedează astfel:
- se definește un masiv cu atâtea elemente cât sâ se memoreze descrierea din FORMAT;
- se scrie o secvență de citire a descriptorilor de FORMAT ca șir de caractere;
- se scrie secvența de citire a datelor folosind vectorul inițializat cu descriptori.
Construcția arată astfel:
..................
             DIMENSION FORM(20)
             INTEGER A,B,C,D
             READ(5,10) FORM
10         FORMAT(20A4)
.........................
             READ(5,FORM)A,B,C,D,E
-----------------
Cartelele de date vor avea printre ele:
- o cartelă ce conține 5 descriptori cu conținutul: (I2,I4,I3,I5,F7.4)
- o cartelă ce conține numerele cu care se inițializează variabileleA, B, C, D, E
- pentru A se alocă două coloane, B are 4 , C are 3 , D are 5, iar E are 7 coloane.
Dacă beneficiarul dorește la o altă rulare să folosească alte ordine de mărime, altă precizie pentru variabila E, va scrie noii descriptori pe o cartelă și va avea grijă să perforeze numere  pe următoarea  cartelă așa cum impun descriptorii dați de el. Se observă că mentenanța s-a mutat de la programatorul-dezvoltator de software la beneficiar. Este posibil în condițiile utilizării de fișiere ca operația de definire a listei de descriptori să se facă numai atuncți când se cer modificări și nu mereu așa cum se vede în secvența de mai sus. În acest caz:
- se scrie un program cu care se crează și se actualizează un fișier;
- se definește un fișier cu un singur articol;
- se populează fișierul cu descriptori de format la prima exploatare a programului și la mentenanță;
- se rulează programul cerut de beneficiar ori de câte ori e nevoie, dar acesta citește șișierul;
- se fac prelucrările așa cum sunt dați descriptorii din articolul fișierului;
- când apar modificări beneficiarul le solicită dezvoltatorului;
- dezvoltatorul actualizează fișierul și exploatarea programului se face normal. 
Limbajul FORTRAN lucra și el cu fișiere, iar acum limbajul C++ o face fără nicio dificultate.


(20 decembrie 2017)

Variabilitate în FORMAT

De cele mai multe ori beneficiarul dorea și încă dorește ca datele lui să arate într-un anume fel, ceea ce se realizează prin modul în care apar descriptorii de format. Beneficiarii vor:
- precizie mai mare sau mai mică, adică variație în numărul de zecimale;
- anumite texte explicative în fața numerelor sau după ele;
- ornamente în desenarea tabelelor și a liniilor care fac separări;
- scrierea cu caractere mici sau cu caractere mari a mesajelor.
Procare dintre noi programatorii am simțit nevoia de a nu mai face mentenanță prin a tot modifica instrucțiunea FORMAT schimbând cifrele care indicau numărul de zecimale sau șirurile de caractere care se tipăreau, lucru ce presupunea și schimbarea lungimii șirului. Lucrurile nu au fost deloc simple până la introducerea în instrucțiunile FORMAT a elementelor de variabilitate, adică a unor variabile care aveau darul să flexibilizeze întreaga abordare și să reducă efortul doar printr-o inițializare bine controlată. În limbajele C sau C++ acest lucru este ceva foarte obișnuit și programatorii îl folosesc ca pe un lucru de-a dreptul banal:
- definind o variabilă de tip șir de caractere;
- inițializând adecvat acea variabilă oricând e nevoie;
- introducând variabila în instrucțiunea de format printre desriptori.
Și în programele FORTRAN se realizează multe flexibilități care scutesc pe cei ce fac mentenanță de eforturi inutile. Era o facilitate care se numea object times de aaduce elemente de flexibilitate în zona factorilor de multiplicitate dar și în instrucțiunile FORMAT.
Variabilitatea în instrucțiunea FORMAT a limbajului FORTRAN a fost un mod clar de a crește nivelul de mentenabilitate. Folosind o varietate de perechi READ - FORMAT sau WRITE - FORMAT și o instrucțiune GO TO se obține acea flexibilitate atât de necesară în raport cu exigențele beneficiarului.
Cu secvența de mai jos se modifică leker numărul de zecimale. El doar trebuie specificat prin variabila LI.
           READ (5,10) LI
10       FORMAT(I2)
           GOTO (20,40,60,80), LI
20       READ (5,30)A,B,C
30       FORMAT(F5.1,F7.1,F6.1)
           GOTO 100
40       READ (5,50)A,B,C
50       FORMAT(F5.2,F7.2,F6.2)
           GOTO 100
60       READ (5,70)A,B,C
70       FORMAT(F5.3,F7.3,F6.3)
           GOTO 100
80       READ (5,90)A,B,C
90       FORMAT(F5.4,F7.4,F6.4)
100     CONTINUE
Mai sunt și alte artificii care atunci erau salutare, dar care azi fac obiectul unor ironii, din moment în limbajul C++ se lucrează orice cu orice, deci nu mai există restricții.



(19 decembrie 2017)