Sunteți pe pagina 1din 47

Ministerul Educației al Republicii Moldova

Colegiul Financiar – Bancar din or. Chişinău


Catedra Informatică

RAPORT
privind practica de diplomă
realizată în cadrul Companiei I.C.S. ,, Cedacri International’’
S.R.L

Executor: Tulunji Daniela INF1211G


Conducător de la entitate: Tatiana Svariciuc, Manager
Conducător de la Colegiu: Zatîca Tamara, gr. didactic II

Chişinău, 2016
Cuprins

1. Descrierea structurii organizatorice a intreprinderii.........................................................3

1.1 Prezentarea succintă a instituției...................................................................................3

1.2 Sarcini și strategii............................................................................................................4

1.3 Clienții companiei............................................................................................................5

2. Descrierea actvității practicei de diplomă...........................................................................7

2.1 Descrierea limbajului de programare Cobol................................................................7

2.2 Descrierea poiectului Emiterea Buletinelor Poștale 896............................................24

Concluzie......................................................................................................................................31

Bibliografie...................................................................................................................................33

Anexe.............................................................................................................................................34

2
1. Descrierea structurii organizatorice a intreprinderii

1.1 Prezentarea succintă a instituției

Cedacri Internațional a fost fondată în decembrie 2007. Din aprilie 2008 îşi începe
activitatea propriu-zisă, oferind servicii de dezvoltare software și de Business Process
Outsourcing pentru Grupul Cedacri din care face parte.

Acesta este controlată în totalitate de către Cedacri S.p.A. care de peste 30 de ani este
lider pe piața de outsourcing pentru bănci, instituții financiare și companii industriale: cu circa 40
de milioane de tranzacţii pe zi, 40.000 de utilizatori ai sistemului, 30.000 MIPS putere de
procesare mainframe și 4.000 de servere.

Vânzările consolidate în 2013 au totalizat circa 246,8 miln de Euro. Proprietățile grupului
sunt 22 de bănci, printre cele mai importante Instituții Bancare care sunt în rândul utilizatorilor
serviciului furnizat.

Cedacri Internaţional – o importantă verigă a Grupului Cedacri Italia, cu sediul în capitala


Republicii Moldova, fondată în anul 2008, prestând servicii destinate sistemului bancar. Sediul
Companiei, de proprietate privată, se află în sediului unui business centru de pe bulevardul
principal al capitalei. Chișinăul se află la două ore de zbor de principalele orașe europene. La
momentul actual Compania se extinde pe o suprafață totală de aproximativ 3.500 de metri
pătraţi, ocupând 5 etaje ale sediului.

Având la dispoziţie suportul profesional şi financiar a unei dintre cele mai puternice
companii în domeniul outsourcing-ului informatic, Cedacri Internaţional, din 2008 până în
prezent, a semnalat sporirea cifrei de afaceri, a spaţiului, a numărului de personal, a volumului de
proiecte şi a calităţii.

Echipa acestei companii a acumulat o experienţă internaţională, specifică pentru


domeniul financiar-bancar în proiecte realizate pentru clienţii companiei.

Conducerea filialii acestei companii din Chișinău este formată din: Administratorul -
Sergio Capatti, Administratorul – Mirco Bighin și Responsabilul Diviziuni IT și Administrație –
Francesco Pipio.

În cadrul companiei activează aproximativ 360 de persoane reieşind că sunt aproximativ


360 de calculatoare. Angajații operează pe softurile Windows-XP și Windows 7, pentru crearea,
redactarea documentelor necesare în cadrul lucrului este utilizată aplicaţia Library Office.
3
Aplicaţia principală în care ei elaborează proiectele noi este COBOL, utilizând legătura cu
programatorii WEB pentru rularea acestor proiecte.

Conexiunea cu Italia se face prin intermediul serviciului Linie Dedicată, utilizând


următoarea configurație:

- Linie dedicată de 100 Mb up/down.

- Hot Backup pe linia dedicată de 100 Mb up/down.

- Cold Backup cu VPN server Internet de 10 Mb up/down.

1.2 Sarcini și strategii


Sarcini:

- Prestarea serviciilor ce garantează reducerea costurilor precum și creșterea calității


serviciilor și a produselor furnizate CLIENTULUI.

- Crearea condițiilor ce oferă opțiuni pentru dezvoltarea economică.

Viziune:

- Consolidarea poziției de partener strategic pentru dezvoltarea băncilor care trebuie să


externalizeze o parte din activitățile lor.

- Contribuirea la raționalizarea proceselor determinate de către externalizare.

Strategii:

Crearea centrelor specializate care să permită:

- Creşterea capacității de productivitate a clientului.

- Optimizarea costurilor prin crearea structurilor apte de a se integra în cadrul proceselor de


producție ale Clientului.

4
1.3 Clienții companiei
Compania mamă Cedacri mai bine de treizeci de ani este lider în Italia în domeniul
outsourcing-ului informatic pentru sectorul bancar şi financiar. Avînd la dispoziţie peste 1300 de
angajaţi, Grupul Cedacri numără mai mult de 150 de clienţi (vezi tabelul 1.1), dintre care 70 sunt
instituţii bancare italiene în full outsourcing, cu un total de peste 2700 ghişee bancare gestionate
şi 31,5 milioane de tranzacţii zilnice, cu un centru de calcul care este situat printre primele locuri
în Italia.

Clienţii care au încredere în soluţiile propuse de către Cedacri, transformă externalizarea


serviciilor în beneficii concrete:

- Realizarea proiectelor de orice dimensiuni;

- Garantarea standardelor şi calităţii serviciilor oferite;

- Reducerea cheltuielilor de producer;

- Echipă de specialişti bine calificaţi.

Tabelul 1.1

Clieții firmei Serviciile prestate

Servicii de dezvoltare software. Înregistrarea


facturilor grupului Cedacri, Monitorizare
Server, Centralino.
Servicii de dezvoltare software, Asitență Call
Center HB,Monitorizarea Atm/Pos, Unicard .
Edison Banca Elettronica, Sisteme di Achitare,
Documentale, Creditării și Titluri de Valoare,
Contabilitate și Bilanț, Data Entry

Servicii de dezvoltare software.

Solleciti di Pagamento

5
Continuare Tabelul 1.1

Clieții firmei Serviciile prestate

Serviciii BPO, Portofoliu.

Servicii de consultanță pentru activitățile de


dezvoltare software

Institutul Central al Băncilor Populare italiene.

Servicii de dezvoltare software

Servicii de dezvoltare software

6
2. Descrierea actvității practicei de diplomă.

Pe parcursul perioadei de practice am studiat un nou limbaj de programare COBOL. Am


avut propusă o listă de probleme spre elaborare, iar în final am fost încadrată într-un proiect de
complexitate mai mare. Practica s-a desfăşurat în cadrul companiei Î.S.C,, Cecadri Internaţional”
S.R.L. din oraşul Chişinău, alături de încă 17 practicaţi și 2 coordonatori de practică: Ana
Anghelov şi Tatiana Svarisciuc.

2.1 Descrierea limbajului de programare Cobol


COBOL (Common Business - Oriented Language) este unul dintre primele limbaje de
programare importante proiectat pentru calcule economice.
În sistemul informaţional Cedacri, programele scrise în limbajul de programare COBOL
sunt subdivizate în mai multe tipuri. Programelor COBOL de tip Batch le corespunde tipul PBC.
Fereastra din Endevor pentru editarea obiectelor PBC nu diferă de cea utilizată pentru a scrie cod
JCL. Rămân valide şi comenzile aplicabile în procesul de editare, însă structură ferestrei devine
un pic specifică. Pentru a trece la standardul COBOL de marcare a codului se utilizează în
fereastra de editare comanda HILITE COBOL:
- Roşu – cuvintele şi expresiile predefinite ale limbajului;

- Albastru deschis – comentarii în rândurile comentate;

- Galben – mini-comentarii;

- Alb – şiruri de caractere şi valori caracteriale;

- Verde – cod ordinar.


Col. 1-6 Col. 7 ‘*’
Mini Comentează Col. 8-11 Col. 12-72
comentarii rîndul Zona A Zona B

Figura 2.1 Srtructura ferestrei de editare.


Col 1-6 – Sunt destinate mini-comentariilor. Acestea pot fi utilizate de programator
pentru a marca anumite puncte de interes în cod sau pentru a uşura navigarea/căutarea într-un
program vast.

7
Col 7 – Valoarea '*' pusă în această coloană transformă rândul ce urmează în comentariu.
Valoarea '–' în această coloană indică continuarea rândului precedent (vezi fig. 2.1).
Col 8-11 – Zona A – aici încep denumiri de diviziuni majore are codului (precum
diviziunile, secţiunile, paragrafele) şi diferite declarări de bază.
Col 12-72 – Zona B – zona pentru instrucţiuni şi alt conţinut al diviziunilor majore.

Diviziunile unui Denumirea PGM Instrucţiuni


PGM COBOL (obligatoriu) COBOL

Rând
Comentat Figura 2.2. Structura de bază a programului COBOL.

În primul rând codul programului COBOL constă din 4 diviziuni. Fiecare dintre acestea
se împart în secţii, paragrafe şi atribute sau instrucţiuni separate. Majoritatea subdiviziunilor sunt
opţionale deoarece în sistem deja sunt setate toate valorile default necesare.

Identification Division - este prima divizie declarată într-un program COBOL. Precum
urmează din denumire, ea identifică programul dat. Unicul parametru obligatoriu al acestei
diviziuni este PROGRAM-ID, care primeşte ca valoare denumirea logică a programului (maxim
8 caractere primul dintre care trebuie să fie alfabetic). De obicei denumirea logică şi denumirea
obiectului PBC sunt identice pentru a nu cauza confuzie.
Environment Division - cuprins toate secţiile şi toţi parametrii acestei diviziuni sunt
opţionale. Diviziunea determină diverse setări private ale programului. Deasemenea aici se
declară componentele externe cu care va trebui să interacţioneze programul.
- CONFIGURATION SECTION – conţine setări opţionale ale programului care
anulează setările default ale sistemului.

- SOURCE-COMPUTER – indică tipul calculatorului pe care codul este compilat.

- OBJECT-COMPUTER – indică tipul calculatorului pe care codul este executat.

Parametrii de mai sus nu sunt utilizabili în cazul aplicaţiilor rulate pe MainFrame în z/OS,
deci nu trebuie declarate în program.

8
- SPECIAL-NAMES – aici pot fi programate clase private programului dat şi
reprogramată funcţia diferitor semne şi simboluri:

- CURRENCY SIGN ÎS 'EUR' WITH PICTURE SYMBOL '$'. –


Reprogramează semnul unităţii băneşti influenţând astfel modul de funcţionare al
tipului de date $.

- CLASS MAIUSCOLE ÎS 'A' THRU 'I'


- 'J' THRU 'R'

- 'S' THRU 'Z'. – Declararea unei clase COBOL, care de fapt reprezintă un tip de
date cu domeniu de valori programat. Poate fi util în expresii condiţionale şi la
declararea variabilelor de tipuri specifice. Clasele pot fi utilizate pentru a altera
funcţia semnelor de punctuaţie şi a altor semnelor ne alfabetice (cum ar fi $).
Deasemenea permite codificarea simbolurilor care nu pot fi introduse în mod
normal de la tastatură (cum ar fi £).

- DECIMAL-POINT ÎS COMMA - în COBOL separatorul de bază între partea întreagă şi


fracţionară este punctul “.” şi nu virgulă “,”. Expresia “DECIMAL-POINT ÎS
COMMA” este utilizată pentru a trece de la standardul american (cu punct), la standardul
european (cu virgulă).
- INPUT-OUTPUT SECTION – conţine lista fluxurilor şi perifericelor cu care trebuie să
comunice programul în cursul executării.
- FILE-CONTROL – precum reiese din denumire, este paragraful în care se efectuează
legătura cu fişierele de intrare şi ieşire în baza denumiri fluxului. Secţia dată este necesară
deoarece modul de denominare utilizat în diferite sisteme poate să nu corespundă cu
exigenţele compilatorului COBOL. Astfel, în FILE-CONTROL este stabilit un nume
intermediar valid doar atâta timp cât se execută programul.
- SELECT COBFILE ASSIGN TO FLUXNAME – în declaraţia dată COBFILE
reprezintă denumirea fluxului aşa cum se va numi el în cadrul programului COBOL.
FLUXNAME, în cazul nostru, este numele Fluxului din STEP-ul programului JCL.
Pentru a nu provoca confuzie, în Cedacri se practică denominarea identică a fluxului din
JCL şi a celui din COBOL. În acest sens trebuie ţinute minte aşa limitări ale numelor în
JCL precum lungimea maximă de 8 caractere şi imposibilitatea de a utiliza orice simboluri
ne alfabetice şi ne numerice.

9
Versiunea extinsă a aceleiaşi declaraţii, utilizată în cazul lucrului cu fişiere cu cu
organizare specifică (ne secvenţială):
- SELECT COBFILE ASSIGN TO FLUXNAME;

- ORGANIZATION ÎS org ACCESS MODE ÎS access;

- FILE STATUS ÎS file – status.

- Org – stă în locul valorilor SEQUENTIAL, LINE SEQUENTIAL, INDEXED


sau RELATIVE. Indică modul de organizare a datelor în fişierele fluxului.
Influenţează interpretarea corectă a datelor din flux. Priveşte în special fluxurile de intrare.
- Acces – stă în locul valorilor SEQUENTIAL, RANDOM sau DYNAMIC.
Indică modul de accesare al fişierului. Cere indicarea câmpurilor utilizate ca
cheie, în cazul în care accesul este dinamic. Priveşte în special fluxurile de intrare.
- File - status – stă în locul câmpului care va fi valorizat automat cu valoarea
codului de răspuns a fiecărei operaţii efectuate asupra Fluxului dat.

DATA DIVISION – conţine declararea detaliată a fluxurilor şi variabilelor utilizate în


program. În cazul programelor scrise în COBOL nu merge vorba de variabile sau alte obiecte
publice sau private. Însă există zone de memorie care le putem numi convenţional „private” şi
„publice”. Problema constă în faptul că teoretic orice zonă de memorie declarată ca „privată”
poate fi utilizată şi că „publică” şi invers.
LABEL RECORD STANDARD – reprezintă un reziduu sintactic care se utiliza înainte
pentru a permite utilizarea fluxurilor compuse din mai multe fişiere. La moment se indică doar
ca o formalitate care permite programului să ruleze pe sisteme mai vechi fără a crea limitări
adiţionale la componenţa fluxurilor utilizate.
WORKING - STORAGE SECTION – secţie destinată declarării structurilor şi partajarea
în variabile a zonei de memorie alocate programului.
· LINKAGE SECTION – secţie destinată declarării structurilor şi variabilelor care sunt
valorizate din exteriorul programului la lansarea acestuia.

Lucrul în Endever se poate efectua cu ajutorul logării pe reţeaua lor, pentru aceasta
trebuie de tastat opţiunea l sssu5ap1 apoi Ctrl sau de făcut dublu clic pe SUPER (vezi fig 2.3).
Autentificarea se face cu datele primite de la administratori, se tastează numele user-ului şi
parola (vezi fig.2.4), care nu trebuie să conţină mai mult de 8 caractere şi nu trebuie să fie

10
asemănătoare cu 10 parole precedente. Apoi trebuie de ales din lista de opţiuni “Ambienti
evolutivi” şi după care “TSOSYA” (vezi fig. 2.5 și 2.6).

Figura 2.3. Intrarea în TSOSYA.

Figura 2.4. Fereastra pentru logare.

11
Figura 2.5. Fereastra pentru lucru cu mai multe tipuri de proiecte.

Figura 2.6. Fereastra pentru lucru cu TSOSYA.

În fig. 2.7 vedeţi fereastra Meniului Principal. Comanda PFSHOW elimină panela PFx
din fereastra de lucru mărind astfel cu cîteva rânduri suprafaţa efectivă a ferestrei de lucru.

12
Fig. 2.7 Fereastra Meniului Principal

13
Endevor
Endevor – este un instrument de elaborare al softului pentru aplicaţii Mainframe. El
combină funcţiile de sistem de căutare, ambient de elaborare, compilator şi control al versiunilor.
Accesarea Endevor se efectuează din meniul principal utilizând comanda A.Q sau în unele
ambiente A; E; 2; U; E (vezi fig.2.8).

Meniuri şi ferestre
interactive
Comenzi
(acceptabile doar de
obiecte individuale)

Filtre de căutare

Opţiuni auxiliare
Opţiuni de acces şi de filtrare
compilare Figura 2.8. Componentele ferestrei Endevor.

Linia de comandă
Meniurile şi ferestrele interactive servesc pentru calibrarea fină a operaţiunilor default
efectuate de Endevor la îndeplinirea diverselor comenzi (cum ar fi crearea, compilarea sau
editarea obiectelor Endevor).

Comenzile permit efectuarea operaţiilor cu obiecte individuale în „lista elementelor


selectate” (descris în punctul 3 al documentului curent).

Filtrele de căutare – ordonarea şi gruparea logică a obiectelor individuale în Endevor


permite diminuarea timpului de căutare ulterioară a acestora. Câmpurile date sunt deasemenea
utilizate pentru a indica unele caracteristici fundamentale ale obiectelor ce urmează a fi create în
Endevor.
- ENVIRONMENT – obiectele căutate trebuie să facă parte din ambientul indicat. În caz
normal este utilizat MVSSVL, ceea ce înseamnă că obiectele trebuie să aparţină
ambientului elaborare (Sviluppo). Alte ambiene accesibile pe serverul S1 sunt MVSMNT
(mentinanţă), MVSPRD (producţie), ş. a.
- SYSTEM & SUBSYSTEM permit gruparea obiectelor Endevor în categorii în baza
domeniului lor de aplicare. În MVSSVL există peste 200 Systeme (mai numite şi
proceduri), fiecare dintre acestea poate avea zeci de SubSysteme. Ultimele reprezintă de
proiecte şi servicii separate din care este compus sistemul informaţional Cedacri.

14
Obiectele Endevor elaborate în cadrul cursului de studii, precum şi orice alte obiecte
create în lipsa unei cereri oficiale, trebuie declarate în Systemul XX şi SubSystemul XX .
- ELEMENT – numele obiectului căutat/creat. Numele obiectelor poate fi compus din cel
mult 8 caractere. În cazul obiectelor create regulamentar, numele acestora vă conţine
indicaţii şi componente descriptive privitoare obiectul în cauză. Spre exemplu primele 2
caractere ale denumirii indică de obicei procedura din care face parte obiectul. Tipul este
în unele cazuri descris de caracterele 3-6. Toate obiectele produse în cadrul cursului de
studii trebuie să înceapă cu „CRxxx” indicând astfel apartenenţa obiectului. Filtrul
Element acceptă deasemenea caractere specifice pentru a facilita căutarea:

- % – înlocuieşte un singur caracter. Ex: CR050%%1 –> va găsi CR050PB1 şi


CR050PT1.
- * – înlocuieşte orice număr de caractere la sfârşitul şirului. Ex: CR050* –> va
găsi toate elementele care încep cu “CR050”.
- TYPE – utilizat pentru a indica tipul obiectului care urmează a fi găsit/creat. În
MVSSVL pot fi create 45 tipuri de obiecte (programe, structuri, tabele, etc.). Programele
Cobol Batch aparţin tipului PBC.

Opţiuni de acces şi compilare:


- CCID – etichetă logică utilizat pentru a grupa/marca obiectele care fac parte din acelaşi
proiect. Este utilizat la faza de system test şi la trecerea obiectelor legate logic între dintr-
un ambient în altul.
- Processor Group – determină modul în care compilatorul interpretează codul sursă şi
modulele default care se declară automat de sistem la momentul compilării.
- COENDBCH – procesor grup standard pentru programele PBC/PTC care nu conţin
interpelări SQL.
- COEDB2CH – procesor grup aplicat în cazul PBC-urilor ce conţin interpelări SQL
(EXEC SQL...).

Override Signout – reprezintă un instrument simplu de siguranţă. Pentru a edita/compila


un obiect care a fost anterior editat/compilat de o altă persoană, se cere specificarea intenţionată
a valorii Y în acest câmp. De altfel accesul la obiectul în cauză va fi interzis.

Opţiuni auxiliare de filtrare:


- APPLY LIST FILTERS – Permite aplicarea filtrelor adăugătoare în baza valorii CCID, a
matricolei din cea mai recentă versiune, a Processor Group-ului, ş. A

15
- BUILD USING MAP – indcă faptul că lista trebuie să conţină atît obiectele aflate în SVL cât şi
versiunile lor din alte ambiente vizibile în MVSSVL (cum ar fi COL sau RIL):
- RETURN FIRST FOUND – în cazul în care obiectul există în mai multe ambiente (spre
exemplu şi în SVL şi în RIL), în listă va fi inclusă doar cea mai recentă versiune a
obiectului găsit:

16
- DISPLAY ENV/SYS/SUBSYS LIST – În cazul în care filtrele ENVIRONMENT,
SYSTEM şi SUBSYSTEM nu sunt valorizate, Endevor va cere valorizarea obligatorie a
acestora în ferestre de dialog cu afişarea listei de valori admisibile.

17
Lista Elementelor Selectate şi comenzile aplicabile obiectelor individuale
În imaginea dată, unele obiecte au atât versiuni în SVL cât şi versiuni în RIL. Aşa situaţii
apar din motiv că versiunile verificate şi stabile din RIL sunt utilizate de sistem „la nivelul
clientului”, iar versiunea din SVL este mai nouă şi se află încă în stadiul de elaborare.

Comenzi acceptabile

Denumirea Tipul Ambientul Versiunea


obiectului obiectului versiunii
Systemul şi curentă
curente
SubSystem
ul
- B – Vizualizarea conţinutului obiectului în regim Read-only.
- E – Deschide obiectul pentru editare. Cere introducerea unui CCID valid şi prezenţa
drepturilor de editare. Crează o versiune nouă a obiectului în SVL în cazul în care
obiectul editat aparţine unui alt ambient.
- # – Elimină obiectul indicat, aplicabil doar obiectelor aflate în ambientul SVL. Cere
introducerea unui CCID valid şi prezenţa drepturilor de editare.
- G – Recompilarea obiectului indicat, cere introducerea unui CCID valid şi prezenţa
drepturilor de editare. Se crează o versiune nouă a obiectului în SVL în cazul în care
obiectul recomilat aparţine unui alt ambient.
- M – Afişează caracteristicile detaliate ale obiectului.

18
Deţinătorul
curent al
drepturilor de
editare
Ultimul processor
utilizat CCID-ul curent
al obiectului
Rezultatul compilării
precedente

- S – Afişează lista versiunilor obiectului. O versiune nouă este creată la fiecare salvare a
codului editat.

Numărul Autorul Data/ora Nr. rânduri Nr. rânduri Nr. rânduri


versiunii apariţiei introduse eliminate

Versiunea în care Versiunea în care rândul Conţinutul rândului


rândul a fost a fost eliminat
introdus
- C – Permite examinarea rândurilor introduse, modificate sau eliminate în fiecare
versiune.
- SI – Preluarea drepturilor de editare. Permite gestionarea unui obiect care a fost
creat/editat/compilat anterior de o altă persoană (vezi fig. 2.9).

19
Figura 2.9. Preluarea drepturilor de editare.

Elementul indicat mai sus nu poate fi editat deoarece la moment drepturile de editare îi
aparţin unei alte matricole. Comanda SI transferă drepturile de editare matricolei care efectuiază
operaţia.

- H – Permite vizualizarea conţinutului obiectului afişînd simultan toate versiunile tutror


rîndurilor prezente la moment în cod.

Conţinutul rândurilor
date
în diferite versiuni

20
Declararea obiectelor Endevor

Programarea unui program Batch scris în COBOL începe de la declararea în Endevor a


unui obiect de tip PBC cu toate caracteristicile cuvenite (vezi Fig. 2.10).

Figura 2.10. Obiect de tip PBC.

În imagine sunt indicate toate setările obligatorii necesare la declararea unui obiect
Endevor de tip PBC.
Pentru a crea un obiect PBC în Endevor sunt necesare următoarele valorizări:

- ENVIRONMENT.. MVSSVL – unicul ambient în care pot fi declare obiecte Endevor


noi fără abilitări suplimentare.
- SYSTEM... XX
- SUBSYSTEM... XX
- ELEMENT... CR050PB1 – Denumirea obiectelor create neoficial, adică create în
scop de test sau exerciţiu, fără cerere oficială. Trebuie să includă neapărat matricola
autorului (persoanei responsabile de acest obiect). În cazul prezenţei unei cereri
oficiale, denumirea obiectului se indică în analiza tehnică a proiectului. Obiectul
trebuie eliminat atunci când nu mai este nevoie de el!
- TYPE... PBC – tipul obiectelor Endevor care corespund programelor Batch COBOL.
- CCID... TEST – unicul CCID valid universal şi utilizat în cazul obiectelor create
neoficial. În restul cazurilor, valoarea CCID-ul se indică de analist în analiza tehnică
sau este cerută aparte de la responsabilul de proiect.
- Processor Group... COENDBCH – procesorul standard aplicat în cazul programelor
COBOL care nu conţin interpelări SQL. Alternativ este utilizat COEDB2CH.
- Command ===> CR – comanda de creare a obiectului Endevor cu caracteristicile
specificate. Obiectul apare cu adevărat în Endevor şi catalogul aferent ambientului
doar după prima operaţie de salvare.
21
Editarea, salvarea, compilarea
Fereastra de editare deschisă în Endevor este identică cu cea utilizată pentru a edita
conţinutul oricărui fişier sau membru. Sunt valide aceleaşi comenzi şi principii de funcţionare.
Salvarea se efectuează automat la ieşire cu tasta F3 sau după comanda SAVE.
Compilarea unui obiect poate fi efectuată aplicând comanda G obiectului în cauză în
Lista Elementelor Selectate sau la ieşire cu F3 din obiectul editat.
Înainte de a compila codul obiectului sistemul va propune includerea modulelor auxiliare
pentru procesul de compilare. Ele vor fi discutate în documentele următoare. Pentru moment,
tastaţi de 2 ori Ctrl şi purcedeţi la compilare.
Obiectele Endevor sunt compilate utilizând clasă specială S.

22
Gestionarea versiunilor
După fiecare salvare, este produsă o nouă versiune a obiectului în cauză.

Numărul
versiunii
CCID-ul
Autorul
utilizat
versiunii
Data şi ora
modificării Ultima
compilare
reuşită

Versiunea în care Codul sursă


rîndul a fost
inserat/modificat

Toate modificările efectuate la producerea versiunii sunt înregistrate şi o versiune poate fi


indicată ca curentă la orice moment.

2.2 Sarcina practicii de diplomă

În cadrul orelor de practică au fost abordate următoarele obiective:

1. Studierea individuală a materialului propus în orelor de practică (vezi: anexa 1);

2. Rezolvarea problemelor propuse;

3. Testarea datelor de intrare pentru fiecare problemă împarte;

4. Validarea câmpurilor pentru datele de intrare;

5. Selectarea, înserarea, modificarea datelor din baza de date Cobol DB2;

6. Crearea documentelor de testare;

7. Reutilizarea codurilor de program în alte programe;

8. Structurarea codului și declararea variabilelor după standartul prestabilit.

Cu ajutorul materialului oferit şi exemplelor de cod sursă, lista problemelor propuse de mai
jos s-au putut rezolva. Dificultăţile întâlnite au fost de structurarea codului şi poziţionarea
instrucţiunilor după cum am mai menţionat în compartimentul Stuctura ferestrei Cobol.

23
Problemele propuse au fost de complexitate medie, iar proiectul final a inclus cunoştinţele
acumulate în rezolvarea problemelor de mai jos.
Lista problemelor:
1. Crearea programului HELLO utilizând programul de tip PTC, copia CPX unde vor şi
declarare variabilele de intrate şi ieşire, WNF- ce va rula programul.

2. Programul care converteşte dată în formatul AG3.

3. De determinat dacă numărul este prim.

4. De determinat dacă numărul este perfect.

5. De determinat numărul de numere prime de pe intervalul 1..N.

6. De determinat numărul de numere prime de pe intervalul A..B, reutilizând programul


număr prim.

7. Suma a două numere şi diferenţa a două numere.

8. Selectarea datelor din baza de date DB2 din tabela XXTSQ146.

9. Crearea cursorului şi utilizarea lui.

10. Emiterea Buletinelor Poştale 896.

2.3 Descrierea poiectului Emiterea Buletinelor Poștale 896


Scopul:
Obiectivele principale ale proiectului sunt permiterea emiterei (imprimarea) de buletine
poştale de tip 896 pentru a face posibilă plată cu acestea nu doar la bănci şi poștă dar şi în alte
locuri (exemplu casele de pariuri sau centre comerciale).
Descriere:
Buletinul, ca instrument special al Poștei Italiene, permite deţinătorilor de un cont curent
în BancoPosta să încaseze credit de orice tip pe întreg teritoriul ţării. Există 4 tipuri de buletine:
buletine total completate TD 896, parţial completate TD 674, personalizate TD 451 şi generale
TD 123.
Un buletin complet TD 896 se utilizează când sunt cunoscute toate detaliile despre
buletin: numărul de cont, date personale ale debitorului etc.
Se utilizează astfel:

24
Banca înregistrează şi emite un carnet de buletine (stătut 00 – nou, 10 – imprimat, 20 –
utilizat, stato 30 – anulat).
1. Clientul utilizează aceste buletine pentru a achita ceva la Poştă (de exemplu).

2. Poșta trimite un mesaj Băncii prin care confirmă şi informează despre utilizarea
buletinului.

Informație adăugătoare.
1) Statutul unui carnet (TB28) poate lua valori ca: '00' – nou, '10'- imprimat, '20' –
utilizat şi '30' – anulat
2) Statutul unui buletin (TB29) poate lua valori: '20' – utilizat şi '40' – plătit.

Exemplu de buletin poştal 896 complet:

XX00CW28 - PWS – Înserarea carnetelor de buletine din PWS (în tabela XX00TB28)
Programul va fi chemat din PWS pentru a insera un nou carnet de Buletine Poştale Complete 896
pentru un client. Un carnet poate conţine nu mai mult de 30 de buletine.
Programul trebuie să prevadă 5 funcţii: XX007W28 - FUNZIONE: CONTROL,
INSERARE, IMPRIMARE, ANULARE, DETALIU.

25
Figura 2.11.
Inserarea din PWS a carnetelor de buletine TD 896.

Figura 2.12. Batch de incarcare a datelor despre buletine TD 896.

Figura 2.13. Elaborarea fluxului de plata cu buletin TD 896.


26
Functia de CONTROL a inserării

Figura 2.14. Fereastra pentru inserarea carnetelor.

S-au făcut următoarele controale şi valorizări pentru funcţia de control a inserării:


1. XX007W28-I-DEB-NDG obligatoriu valorizat.

2. XX007W28-I-CRED-CC obligatoriu valorizat.

3. Concatenarea stringul ' Compte du beneficiaire ', XX007W28-I-CRED-CC DELIMITED


BY SIZE INTO XX007W28-O-MOTIVAZIONE END-STRING”.

4. Controlarea ca cel puţin unul din câmpuri XX007W28-I-CARN-PEZZI1, XX007W28-I-


CARN-PEZZI2, XX007W28-I-CARN-PEZZI3 să fie valorizat. Acelaşi control pentru
CARN-PEZZI* şi obligatoriu ca pentru CARN-PEZZI* > 0 respectivul XX007W28-I-
CARN-TAGLIO* > 0.

5. Control ca în total să nu fie mai mult de 30 de piese pentru inserare.

6. Control ca XX007W28-I-TIPO-BOLLETTINO = ‘8’ (buletin BPO 896).

7. Cu IST + NDG accesăm tabela AN00C126 pentru recuperare XX007W28-O-DEB-LOC,


XX007W28-O-DEB-INTEST1, XX007W28-O-DEB-INTEST2.

8. Citirea tabela XX00TBPO cu SEGUITO 5 şi 6 pentru a extrage XX007W28-O-CCP-


IBAN, XX007W28-O-CCP, XX007W28-O-CCP-INTEST1.
27
9. Deschiderea unui cursor - update pentru tabela XX00TBPO cu XXBPO-SEGUITO = 4,
pentru a prelua ultimul XXBPO-DIST-CARN, apoi incrementarea cu +1 pentru a calcula
XX28-PROG-CARN. S-a efectuat update la aceeaşi tabelă pentru a memoriza ultimul
progresiv asociat. La final s-a închis cursorul.

10. Deschiderea unui cursor - update pentru tabela XX00TBPO cu XXBPO-SEGUITO = 5,


pentru a prelua XXBPO-M896-COD-CLIE şi ai atribui la WS-905-M896-COD-CLIE.

11. Închiderea cursorul - update

Calcularea PRIMULUI număr la buletin şi ULTIMUL număr la buletin se efectua după


codului clientului care are structura următoare:

- ŢŢŢ = tipul buletinului = 896;

- AAMMGG = data de emitere = dată din ziua când a fost înserat carnetul;

- PPPPPPP = progresivul la buletin;

- CC = Cod-CIN obţinut din restul împărţirii la 93 (restul împărţirii primelor 16 caractere la 93).

Exemplu: Primul carnet de buletine poştale 896 înserat la 16 octombrie 2014 cu 5


buletine conţine:

- XX00TB28 (Tabela DB2 cu carnete)

XX28-CARN-PRIMOBOLL = 08961410160000001

XX28-CARN-ULT-BOLL = 08961410160000005

XXBPO-M896-COD-CLIE = 08961410160000005

Valori relative ale Codului Clientului după imprimare:

- "0896141016000000107"

- "0896141016000000208"

- "0896141016000000309"

28
- "0896141016000000410"

- "0896141016000000511"
Funcția de IMPRIMARE

Figura 2.15. Exemplu de fereastră pentru imprimarea carnetelor poștale.

Cu acesta funcţie se poate efectua generarea unui fişier PDF din care mai apoi se va
imprimat carnetul cu buletinele clientului.
Programul trebuie doar să schimbe statutul la carnet XX28_CARNET_STATO din tabela
XX00TB28 atribuind la statut valoarea “10” (imprimat).

Funcția ANULARE
Cu ajutorul funcţiei de ANULARE se anulează carnetul. Programul schimbă statutul la
carnet XX28_CARNET_STATO din tabela XX00TB28 atribuind la statut valoarea “30” (anulat).
XX00G029 - Batch de inserare unui buletin într-o tabelă specială (XX00TB29).
Programul XX00G029 citeşte secvenţial datele dintr-un fişier de unload a tabelei XX00TB28
pentru a putea face posibil încărcarea cu date despre buletine 896 în tabela XX00TB29.

Pentru fiecare record din input efectuează controalele de mai jos. Dacă recordul nu trece
controalele acesta se va scri în fişierul de output XX000283.
- XX000283 – "Lista cu buletine care nu au trecut controalele".
Altfel acesta se va scrie în unul din fişierele de mai jos:
- XX000280 – "Lista de buletine cu statut 00 "Nou";
- XX000281 – "Lista de buletine cu statut 10 "Imprimate";
- XX000282 – "Lista de buletine cu statut 30 "Anulate".
Controale:
1) Codul la institut nu-i valorizat - XX28-IST;

29
2) Filiala operatorului nu-i valorizata - XX28-OPER-UFF;
3) Progresivul carnetului nu-i valorizat - XX28-PROG-CARN;
4) Statutul carnetului nu-i valid - XX28-CARN-STATO NOT = '00' AND '10' AND '20'
AND '30';
5) Numărul primului buletin nu-i valorizat - XX28-CARN-PRIMOBOLL;
6) Carnet cu zero buletine – dacă nici unul din câmpurile XX28-CARN-PEZZI1, XX28-
CARN-PEZZI2, XX28-CARN-PEZZI3 nu-i mai mare ca ZERO.

Fişierul de input s-au sortat după:


- XX28-IST;
- XX28-PROG-CARN.

Toate recordurile s-au prelucrat cu a doua valoare a câmpului de statut (XX28-CARN-


STATO) la fel ca în performul TIPO-ELABORAZIONE din GI00G028:
- '00' (nou) scrie recordul în fişierul XX000280;
- '10' (imprimat) (vezi mai jos);
- Înserarea detaliilor buletinelor în XX00TB29;
- Actualizează statutul carnetului din XX00TB28 -> 20 (utilizat);
- Scrie recordul în fişierul XX000281.
- '20' (utilizat) – Numai pentru afişarea statisticii finale;
- '30' (anulate) – Scrie recordul în fişierul XX000282 doar pentru cele anulate.

Pentru fiecare record din XX00TB28 cu statutul "10" (imprimat) ce satisface condiţiile
(fără erori) s-au:

- Inserare directă toate recordurile în XX00TB29 pentru câte sunt în total, adică XX28-
CARN-PEZZI1 + XX28-CARN-PEZZI2 + XX28-CARN-PEZZI3, fiecare cu importul sau
XX29-IMPORTO-EMIS obţinut prin respectivul XX28-CARN-TAGLIO*.

- Actualizează XX28-CARN-STATO în XX00TB28 de la '10' la '20' împreună cu:


- XX28-DT-ELAB-CAR (dată din ziua respectivă);
- XX28-DT-TIME-VAR (timestamp la momentul actual);
- XX28-OPER-COD (= "XX00G029").

30
Concluzie
Efectuând această practică pot să deduc foarte multe lucruri şi concluzii, dar cel mai
important consider ca după finisarea ei apar deja unele deprinderi din domeniul, şi aceasta mi-a
dat posibilitatea de a înţelege cu adevărat importanţa funcţiei alese.
În cadrul acestei perioade de 6 săptămâni am fost încadrată într-un program pilot pentru
persoanele practicante, astfel am avut posibilitatea să fac cunoştinţă și să pun bază pentru
programarea în limbajul Cobol.
Cu ajutorul acestei practici am înţeles mai bine cum lucrează programul cu fişiere. Am
înţeles cum e mai bine să structurezi programul ca să fie mai eficient, cât mai mic în volum şi
mai vizibil pentru alte persoane. La fel am observat că trebuie să te atârni destul de serios faţă de
aceea ce faci (de program), pentru al face mai plăcut la folosire şi mai uşor de înţeles. Mi-au
apărut unele idei pe viitor la care mă gândeam înainte dar nu ştiam cum să le fac în program.
Am obţinut unele deprinderi referitor la lucru în cadrul programării, am învăţat a pune
întrebări cât mai eficiente pentru soluţionarea problemei, am obţinut deprinderea de a caută
problemele pas cu pas şi de a le rezolva. În urma ce am fost încadrată în proiectul Buletine
poştale mi-am făcut unele concluzii:
- Trebuie să ştii ceea ce faci;
- Trebuie să fie o comunicare reciprocă între tine şi client;
- Uneori codurile utilizate odată pot fi reutilizate fără a fi scrise din nou;
- Nu trebuie să scrii codul pentru tot programul odată fără să-l testezi, mai bine câte
un fragment şi apoi vezi funcţionalitatea lui;
- Structurarea codului poate să te ajute mult peste mai mult timp;
- Ceea ce nu poţi face tu în 2-5 ore poate face mai rapid un coleg de al tău, mai bine
cere ajutorul decât să reţii procesul de dezvoltare a aplicației;
- Echipa în care eşti încadrat este ca o familie unde nu exista concurenţă.

Practica instructiva reprezintă o parte componentă a procesului – educativ care este o


perioadă importantă pentru noi, deoarece anume în timpul petrecerii practicii ne aprofundăm
cunoştinţele acumulate timp de 4 ani, de asemenea ne permite să aplicăm în practică şi
cunoştinţele teoretice la obiectul “Programării Calculatorului”.
Studentul începător se familiarizează cu programarea, de regulă, în baza elaborării şi
transcrierii într-un limbaj de programare a algoritmilor de rezolvare a unor probleme concrete
simple. În cadrul lecţiilor este posibilă examinarea doar a principiilor generale ale metodicii de
elaborare a programelor şi anumitor aspecte ale rezolvării problemelor. La rândul său, practica de
instruire imită întregul proces de elaborare a unui complex programat mare, permite studentului
să evolueze în rolul de elaborator şi organizator al proiectului.

31
Practica de instruire constituie o primă lucrare de sine stătătoare a studenţilor şi după
rezultatele realizării ei se pot face concluzii cu privire la pregătirea studentului pentru a activa în
domeniul programării, de a evidenţia studenţii cei mai capabili pentru instruirea ulterioară în
calitate de specialist în programare.

32
Bibliografie

1. http://www.ionivan.ro/ISTORIA-INFORMATICII/istorie-limbaje.htm
2. http://www.cedacrinternational.md/?lang=ro
3. https://www.ibm.com/support/knowledgecenter/SSGTSD_13.1.0/com.ibm.debugtool.doc
_13.1/rmdita/rcmdeva.html

33
Anexe

34
Anexă 1
Cod sursă
Codul 1 - Controalele pentru inserarea carnelelor poștale.

******************************************************************
IDENTIFICATION DIVISION.
******************************************************************
*=====================*
PROGRAM-ID. XX11CW28.
*=====================*
******************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
DATA DIVISION.
******************************************************************
WORKING-STORAGE SECTION.
*---------------------------------------------------------------*
* Campi di appoggio
*---------------------------------------------------------------*
01 WS-EIBRESP PIC S9(08) COMP.
01 CD-CHANNEL-NOME1 PIC X(16) VALUE SPACES.
01 WS-STR-A1-CAP-RES-I PIC S9(5).
01 WS-STR-A1-CAP-RES-O PIC -ZZZZ9.
01 WS-TOTAL-PIEZZI PIC 9(005).
01 WS-VLINK PIC S9(08) COMP-3 VALUE +0.
01 OK PIC 9(002) VALUE 0.
01 WS-905-M896-COD-CLIE.
05 WS-905-M896-TIPO PIC 9(003).
* Tip buletin (egal cu 896)
05 WS-905-M896-DTEMIS PIC 9(006).
* Data emitere carnet
05 FILLER REDEFINES WS-905-M896-DTEMIS.
10 WS-905-M896-DTEMIS-AA PIC 9(002).
35
Continuarea Anexă 1
10 WS-905-M896-DTEMIS-MM PIC 9(002).
10 WS-905-M896-DTEMIS-GG PIC 9(002).
05 WS-905-M896-PROG PIC 9(007).
*... Elaborazione principale
MOVE DFHCOMMAREA(1:EIBCALEN) TO XX007W28-RECORD
PERFORM VERIFICARE
PERFORM FINE THRU FINE-EX
.
*---------------------------------------------------------------*
VERIFICARE.
IF XX007W28-I-DEB-NDG = LOW-VALUE AND
XX007W28-I-CRED-CC = LOW-VALUE
MOVE 1 TO OK
MOVE 'Campuri obligatorii XX007W28-I-DEB-NDG/CRED-CC'
TO XX007W28-DES-MSG
END-IF
IF OK = 0
STRING 'Compte du beneficiaire : ' DELIMITED BY SIZE
XX007W28-I-CRED-CC DELIMITED BY SIZE
INTO XX007W28-O-MOTIVAZIONE
END-STRING
PERFORM CONTROL-CARNPEZZI
*---------------------------------------------------------------*
01 AN00C126 PIC X(08) VALUE 'AN00C126'.
COPY AN000088.
COPY AN000750.
COPY XX0000PO.
01 XXTSQ0PO PIC X(8) VALUE 'XXTSQ0PO'.
COPY XX007TPO.
*---------------------------------------------------------------*
* Copy di commarea
*---------------------------------------------------------------*
COPY XX007W28.
*---------------------------------------------------------------*
36
Continuarea Anexă 1
LINKAGE SECTION.
01 DFHCOMMAREA PIC X(0500).
*---------------------------------------------------------------*

*****************************************************************
PROCEDURE DIVISION.
*---------------------------------------------------------------*
END-IF
.
VERIFICARE-EX. EXIT.
*--------------------------------------------------------------*
CONTROL-CARNPEZZI.
IF ( XX007W28-I-CARN-PEZZI1 IS NOT NUMERIC AND
XX007W28-I-CARN-TAGLIO1 IS NOT NUMERIC )
AND ( XX007W28-I-CARN-PEZZI2 IS NOT NUMERIC AND
XX007W28-I-CARN-TAGLIO2 IS NOT NUMERIC )
AND ( XX007W28-I-CARN-PEZZI3 IS NOT NUMERIC AND
XX007W28-I-CARN-TAGLIO3 IS NOT NUMERIC )
MOVE 'Completati unul din campurile CARN-PEZZI/TAGLIO'
TO XX007W28-DES-MSG
ELSE
IF XX007W28-I-CARN-PEZZI3 IS NOT NUMERIC
MOVE 0 TO XX007W28-I-CARN-PEZZI3
END-IF
IF XX007W28-I-CARN-PEZZI2 IS NOT NUMERIC
MOVE 0 TO XX007W28-I-CARN-PEZZI2
END-IF
IF XX007W28-I-CARN-PEZZI1 IS NOT NUMERIC
MOVE 0 TO XX007W28-I-CARN-PEZZI1
END-IF
IF ( XX007W28-I-CARN-PEZZI1 > 0 AND
XX007W28-I-CARN-TAGLIO1 >0 )
OR ( XX007W28-I-CARN-PEZZI2 > 0 AND
XX007W28-I-CARN-TAGLIO2 > 0 )
37
Continuarea Anexă 1
OR ( XX007W28-I-CARN-PEZZI3 > 0 AND
XX007W28-I-CARN-TAGLIO3 > 0 )
PERFORM CONTROL-PIESE
ELSE
MOVE 'CARN-PEZII/TAGLIO trebuie sa fie mai mare ca 0'
TO XX007W28-DES-MSG
END-IF
END-IF
.
CONTROL-CARNPEZZI-EX. EXIT.
*---------------------------------------------------------------*
CONTROL-PIESE.
COMPUTE WS-TOTAL-PIEZZI = XX007W28-I-CARN-PEZZI1 +
XX007W28-I-CARN-PEZZI2 +
XX007W28-I-CARN-PEZZI3
IF WS-TOTAL-PIEZZI > 30
MOVE 'Sunt mai mult de 30 piese pentru INSERARE'
TO XX007W28-DES-MSG
ELSE
PERFORM CONTROL-BOLETINO
END-IF
.
CONTROL-PIESE-EX. EXIT.
*---------------------------------------------------------------*
CONTROL-BOLETINO.
IF XX007W28-I-TIPO-BOLLETTINO = '8'
PERFORM CERCA-NDG
PERFORM LEGGI-TB905-SEG5
PERFORM LEGGI-TB905-SEG6
PERFORM OPERATI-CURSOR
ELSE
MOVE 'Nu ati selectat BULETINUL 8' TO XX007W28-DES-MSG
END-IF
.
38
Continuarea Anexă 1

CONTROL-BOLETINO-EX. EXIT.
*---------------------------------------------------------------*
CERCA-NDG.
INITIALIZE AN0088-CNTRL

MOVE XX007W28-IST TO AN0088-CDISTI


MOVE 'N' TO AN0088-FUNZ
MOVE XX007W28-I-DEB-NDG TO AN0088-NDG

EXEC CICS LINK PROGRAM (AN00C126)


COMMAREA (AN000088)
END-EXEC
IF AN0088-RC NOT = '00'
MOVE '002' TO XX007W28-COD-ERR
STRING 'AN00C126',
AN0088-RC,
AN0088-RESP,
AN0088-SQLCODE,
AN0088-PGMERR,
AN0088-MSG DELIMITED BY SPACES
INTO XX007W28-DES-MSG
END-STRING
ELSE
MOVE AN0088-DATI TO A1-RECORD
MOVE A1-MIN1 TO XX007W28-O-DEB-INTEST1
MOVE A1-MIN2 TO XX007W28-O-DEB-INTEST2
IF A1-LOCAL-DOM > SPACES
OR A1-NOMVIA-DOM > SPACES
MOVE A1-LOCAL-DOM TO XX007W28-O-DEB-LOC
MOVE A1-CAP-DOM TO WS-STR-A1-CAP-RES-I
MOVE WS-STR-A1-CAP-RES-I TO WS-STR-A1-CAP-RES-O
STRING A1-TIPVIA-DOM DELIMITED BY SPACES
SPACE DELIMITED BY SIZE

39
Continuarea Anexă 1
A1-NOMVIA-DOM DELIMITED BY ' '
SPACE DELIMITED BY SIZE
A1-NOCIV-DOM DELIMITED BY SPACES
SPACE DELIMITED BY SIZE
WS-STR-A1-CAP-RES-O DELIMITED BY SPACES
SPACE DELIMITED BY SIZE
A1-COMUNE-DOM DELIMITED BY SPACES
SPACE DELIMITED BY SIZE
A1-PROV-DOM DELIMITED BY SPACES
INTO XX007W28-O-DEB-IND
END-STRING
END-IF
MOVE A1-LOCAL-RES TO XX007W28-O-DEB-LOC
END-IF
.
CERCA-NDG-EX. EXIT.
*---------------------------------------------------------------*
LEGGI-TB905-SEG5.
MOVE XX007W28-IST TO XXBPO-COD-IST
MOVE 5 TO XXBPO-SEGUITO
MOVE 'XXTS01' TO C-SQL-FUNZ
EXEC CICS LINK PROGRAM (XXTSQ0PO)
COMMAREA (XXPO-XX007TPO)
RESP(WS-VLINK)
END-EXEC
IF WS-VLINK NOT = DFHRESP (NORMAL)
MOVE '002' TO XX007W28-COD-ERR
MOVE 'Error select tabel XXTSQ0PO'
TO XX007W28-DES-MSG
END-IF
EVALUATE TRUE
WHEN N-SQL-CODE = ZEROES
MOVE XXTS01-XXPO-DATI TO XXBPO-DATI
IF XXBPO-M896-CCP-IBAN > SPACES
40
Continuarea Anexa 1

MOVE XXBPO-M896-CCP-IBAN TO XX007W28-O-CCP-IBAN


ELSE
MOVE ALL '*' TO XX007W28-O-CCP-IBAN
END-IF
IF XXBPO-M896-CCP NOT NUMERIC
OR XXBPO-M896-CCP = ZERO
MOVE '004' TO XX007W28-COD-ERR
MOVE 'Numero C/C postale non valorizzato'
TO XX007W28-DES-MSG
PERFORM FINE THRU FINE-EX
ELSE
MOVE XXBPO-M896-CCP TO XX007W28-O-CCP
END-IF
WHEN OTHER
MOVE '003' TO XX007W28-COD-ERR
MOVE 'TABELLA 905 SEGUITO 5 ASSENTE'
TO XX007W28-DES-MSG
PERFORM FINE THRU FINE-EX
END-EVALUATE
.
LEGGI-TB905-SEG5-EX. EXIT.
*---------------------------------------------------------------*
LEGGI-TB905-SEG6.
MOVE 6 TO XXBPO-SEGUITO
MOVE 'XXTS01' TO C-SQL-FUNZ
EXEC CICS LINK PROGRAM (XXTSQ0PO)
COMMAREA (XXPO-XX007TPO)
RESP(WS-VLINK)
END-EXEC
IF WS-VLINK NOT = DFHRESP (NORMAL)
MOVE '004' TO XX007W28-COD-ERR
MOVE 'Error select tabel XXTSQ0PO'
TO XX007W28-DES-MSG

41
Continuarea Anexă 1
PERFORM FINE THRU FINE-EX
EVALUATE TRUE
WHEN WS-VLINK = DFHRESP (NORMAL)
MOVE I-XXTS01 TO DATI-SEGUITO-6
IF XXBPO-M896-CCP-INT1 NOT > SPACES
MOVE '004' TO XX007W28-COD-ERR
MOVE 'Intestazione del C/C postale non valorizzata'
TO XX007W28-DES-MSG
PERFORM FINE THRU FINE-EX
ELSE
MOVE XXBPO-M896-CCP-INT1 TO XX007W28-O-CCP-INTEST1
END-IF
WHEN OTHER
MOVE '003' TO XX007W28-COD-ERR
MOVE 'TABELLA 905 SEGUITO 6 ASSENTE'
TO XX007W28-DES-MSG
PERFORM FINE THRU FINE-EX
END-EVALUATE
.
LEGGI-TB905-SEG6-EX. EXIT.
*---------------------------------------------------------------*
OPEN-CURSOR.
MOVE 'XXTO01' TO C-SQL-FUNZ OF XXPO-XX007TPO
PERFORM CALL-XX00TBPO
.
OPEN-CURSOR-EX. EXIT.
*---------------------------------------------------------------*
FETCH-CURSOR.
MOVE 'XXTF01' TO C-SQL-FUNZ
PERFORM CALL-XX00TBPO
.
FETCH-CURSOR-EX. EXIT.
*---------------------------------------------------------------*
CLOSE-CURSOR.
42
Continuarea Anexă 1
MOVE 'XXTC01' TO C-SQL-FUNZ
PERFORM CALL-XX00TBPO
.
CLOSE-CURSOR-EX. EXIT.
*---------------------------------------------------------------*
CALL-XX00TBPO.

CALL XXTSQ0PO USING XXPO-XX007TPO


IF N-SQL-CODE OF XXPO-XX007TPO NOT = 0 AND +100
MOVE ' Errore chiamata routine XXTSQ0PO'
TO XX007W28-DES-MSG
PERFORM FINE
END-IF
.
CALL-XX00TBPO-EX. EXIT.
*---------------------------------------------------------------*
UPDATE-CURSOR.
MOVE 'XXTU01' TO C-SQL-FUNZ
MOVE WS-905-M896-PROG TO XXBPO-DIST-CARN
PERFORM CALL-XX00TBPO
.
UPDATE-CURSOR-EX. EXIT.
*---------------------------------------------------------------*
OPERATI-CURSOR.
MOVE 4 TO W-XXTQ01-XXPO-SEGUITO
MOVE XX007W28-IST TO W-XXTQ01-XXPO-COD-IST
PERFORM OPEN-CURSOR
PERFORM FETCH-CURSOR
UNTIL N-SQL-CODE OF XXPO-XX007TPO = 100
MOVE XXTQ01-XXPO-DATI TO DATI-SEGUITO-4
ADD 1 TO XXBPO-DIST-CARN
MOVE DATI-SEGUITO-4 TO V-XXTU01-XXPO-DATI
PERFORM UPDATE-CURSOR
PERFORM CLOSE-CURSOR
43
Continuarea Anexă 1
MOVE 5 TO W-XXTQ01-XXPO-SEGUITO
PERFORM OPEN-CURSOR
PERFORM FETCH-CURSOR
.
OPERATI-CURSOR-EX. EXIT.
*---------------------------------------------------------------*
FINE.
MOVE XX007W28-RECORD TO DFHCOMMAREA(1:EIBCALEN)
EXEC CICS RETURN
END-EXEC
GOBACK
.
FINE-EX. EXIT.

44
Anexă 2
Cod sursă
Codul 2 - Copia XX007W28.

*#<NOME-COPY:XX007W28>
*#<COMMAREA PROGRAMMA XX00CW28>
*****************************************************************
* 1.5. Copia de aria comuna (commarea) XX007W28 *
*****************************************************************
01 XX007W28-RECORD.
05 XX007W28-PARTE-FISSA.
10 XX007W28-RELEASE PIC X(003).
10 XX007W28-IST PIC 9(005).
10 XX007W28-FIL PIC 9(005).
10 XX007W28-TERM PIC X(004).
10 XX007W28-NDGO PIC 9(011).
10 XX007W28-COD-TRAN PIC X(004).
10 XX007W28-DATA-OPER PIC 9(008).
10 XX007W28-ORA-OPER PIC 9(008).
10 XX007W28-COD-ERR PIC X(003).
10 XX007W28-DES-MSG PIC X(380).
10 XX007W28-PAGSU PIC X.
10 XX007W28-PAGGIU PIC X.
10 XX007W28-PAGSU-O PIC X.
10 XX007W28-PAGGIU-O PIC X.
10 XX007W28-KEY-INIZ PIC X(100).
10 XX007W28-KEY-PAGSU PIC X(100).
10 XX007W28-KEY-PAGGIU PIC X(100).
10 XX007W28-FUNZIONE PIC X(8).
05 XX007W28-DATI-I.
10 XX007W28-I-CARN-STATO PIC X(002).
10 XX007W28-I-DEB-NDG PIC 9(012).
10 XX007W28-I-CRED-CC PIC X(035).
10 XX007W28-I-CARN-TAGLIO1 PIC 9(007)V9(02).
10 XX007W28-I-CARN-PEZZI1 PIC 9(003).
45
Continuarea Anexă 2
10 XX007W28-I-CARN-TAGLIO2 PIC 9(007)V9(02).
10 XX007W28-I-CARN-PEZZI2 PIC 9(003).
10 XX007W28-I-CARN-TAGLIO3 PIC 9(007)V9(02).
10 XX007W28-I-CARN-PEZZI3 PIC 9(003).
10 XX007W28-I-TIPO-BOLLETTINO PIC X(001).
05 XX007W28-DATI-O.
10 XX007W28-O-PROG-CARN PIC 9(017).
10 XX007W28-O-CARN-STATO PIC X(002).
10 XX007W28-O-CARN-STAMPA PIC X.
10 XX007W28-O-CARN-PRIMOBOLL PIC 9(018).
10 XX007W28-O-CARN-ULT-BOLL PIC 9(018).
10 XX007W28-O-CARN-TAGLIO1 PIC 9(007)V9(02).
10 XX007W28-O-CARN-PEZZI1 PIC 9(003).
10 XX007W28-O-CARN-TAGLIO2 PIC 9(007)V9(02).
10 XX007W28-O-CARN-PEZZI2 PIC 9(003).
10 XX007W28-O-CARN-TAGLIO3 PIC 9(007)V9(02).
10 XX007W28-O-CARN-PEZZI3 PIC 9(003).
10 XX007W28-O-TOT-IMP PIC 9(015).
10 XX007W28-O-CRED-CC PIC X(035).
10 XX007W28-O-DEB-NDG PIC 9(012).
10 XX007W28-O-DEB-INTEST1 PIC X(040).
10 XX007W28-O-DEB-INTEST2 PIC X(040).
10 XX007W28-O-DEB-IND PIC X(040).
10 XX007W28-O-DEB-LOC PIC X(040).
10 XX007W28-O-MOTIVAZIONE PIC X(070).
10 XX007W28-O-OPER-NDG PIC 9(012).
10 XX007W28-O-OPER-FIL PIC 9(005).
10 XX007W28-O-OPER-RAP PIC 9(012).
* Contul raportului de portofoliu
* N.B. In caz de imprimare la ouput/carnet BOLL
* contine fff/cccccccc (filiale de 3, bara, contul de 8)
10 XX007W28-O-DOM-PAG PIC X(001).
* Provenienta platii; valori prevazute:
* - "1" = Filiale
46
Continuarea Anexă 2
* - "2" = Banca
* - "3" = Poste
10 XX007W28-O-TIPO-BOLLETTINO PIC X(001).
* Tip Buletin:
* P - Postale
10 XX007W28-O-CCP PIC X(012).
* Cont Postal Curent
10 XX007W28-O-CCP-INTEST1 PIC X(055).
* Inregistrarea contului postal curent
10 XX007W28-O-CCP-IBAN PIC X(027).
* IBAN clientului emitent (titular ccp)

47