Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Debitori - Debitori.cbl

Debitori.cbl

Caricato da: Netarrow
Scarica il programma completo

  1. identification division.
  2.        program-id. indebitati.
  3.        author. Matteo Tomasulo.
  4.        security. Per un miglior visualizzazione di lettere.txt usare console/editor 80x25.
  5.  
  6.        environment division.
  7.        input-output section.
  8.        file-control.
  9.            select clienti assign to "clienti.dat".
  10.            select debitori assign to "debitori.dat".
  11.            select lettera assign to "lettere.txt".
  12.  
  13.        data division.
  14.        file section.
  15.  
  16.        fd clienti
  17.           label record is standard.
  18.  
  19.        01  cliente.
  20.          02  codice     pic x(5).
  21.          02  nome       pic x(30).
  22.          02  indirizzo  pic x(30).
  23.  
  24.        fd debitori
  25.           label record is standard.
  26.  
  27.        01  debitore.
  28.          02  codice-deb pic x(5).
  29.          02  importo    pic Z(10),99.
  30.  
  31.        fd lettera
  32.           label record is omitted.
  33.  
  34.        01  riga.
  35.          02  filler pic x(80).
  36.  
  37.        working-storage section.
  38.  
  39.        77  finiti-clienti  pic aa.
  40.        77  finiti-debitori pic aa.
  41.        77  leggi-c         pic aa.
  42.        77  leggi-d         pic aa.
  43.  
  44.        01  riga-vuota.
  45.          02  filler pic x(80)  value spaces.
  46.  
  47.        01  intestazione.
  48.          02  filler pic x(7)   value "Signor ".
  49.          02  name   pic x(30).
  50.  
  51.        01  dati-personali.  
  52.          02  via    pic x(30).
  53.  
  54.        01  messaggio.
  55.          02  testo  pic x(30).
  56.          02  debito pic Z(10),99.
  57.          02  valuta pic x(5) value " euro".
  58.        
  59.        procedure division.
  60.        inizio.
  61.  
  62.            perform verifica.
  63.  
  64.            open input clienti.
  65.            open input debitori.
  66.            open output lettera.
  67.  
  68.            read clienti
  69.                at end
  70.                  move "si" to finiti-clienti
  71.                not at end
  72.                  move "no" to finiti-clienti
  73.            end-read.
  74.  
  75.            read debitori
  76.                at end
  77.                  move "si" to finiti-debitori
  78.                not at end
  79.                  move "no" to finiti-debitori
  80.            end-read.
  81.  
  82.            perform trova-debitori until (finiti-clienti = "si") or (finiti-debitori = "si").
  83.  
  84.            if (finiti-clienti = "si") and (finiti-debitori = "no") then
  85.                display "Errore: Avanzano debitori che non sono nella lista clienti".
  86.              
  87.            
  88.            close clienti debitori lettera.
  89.  
  90.  
  91.            stop run.  
  92.          
  93.  
  94.        trova-debitori.
  95.            if codice = codice-deb then
  96.               display "Il cliente " codice " è moroso e gli preparo la lettera"
  97.               perform stampa
  98.               move "si" to leggi-c
  99.               move "si" to leggi-d
  100.            else if codice > codice-deb then
  101.                 display "Errore il debitore " codice-deb " non e' stato trovato fra i clienti"
  102.                 move "no" to leggi-c
  103.                 move "si" to leggi-d
  104.            else
  105.                 display "Il cliente " codice " e' puntuale"
  106.                 move "si" to leggi-c
  107.                 move "no" to leggi-d
  108.                 end-if            
  109.            end-if.
  110.          
  111.          if leggi-c = "si" then
  112.             read clienti at end move "si" to finiti-clienti.
  113.  
  114.          if leggi-d = "si" then
  115.             read debitori at end move "si" to finiti-debitori.
  116.  
  117.        stampa.
  118.            move nome to name.
  119.            move indirizzo to via.
  120.            move importo to debito.
  121.            move "Le ricordiamo che deve pagare " to testo.
  122.  
  123.            write riga from intestazione.
  124.            write riga from dati-personali.
  125.            write riga from riga-vuota.
  126.            write riga from messaggio.
  127.            write riga from riga-vuota.
  128.            write riga from riga-vuota.
  129.                      
  130.        verifica.
  131.            open output clienti.
  132.            open output debitori.
  133.  
  134.            move "3" to codice.
  135.            move "Pinco Pallino" to nome.
  136.            move "via xy 5, Roma" to indirizzo.
  137.  
  138.            move "2" to codice-deb.
  139.            move "350,00" to importo.
  140.  
  141.            write cliente.
  142.            write debitore.
  143.  
  144.            move "7" to codice.
  145.            move "Tizio Caio" to nome.
  146.            move "via z 2/5, Bologna" to indirizzo.
  147.  
  148.            move "5" to codice-deb.
  149.            move "10000,50" to importo.
  150.  
  151.            write cliente.
  152.            write debitore.
  153.  
  154.            move "8" to codice.
  155.            move "Tizio Calabro" to nome.
  156.            move "via kn 2, Venezia" to indirizzo.
  157.  
  158.            move "7" to codice-deb.
  159.            move "499,00" to importo.
  160.  
  161.            write cliente.
  162.            write debitore.
  163.  
  164.            move "8" to codice-deb.
  165.            move "1234567891,99" to importo.
  166.  
  167.            write debitore.
  168.  
  169.            move "10" to codice-deb.
  170.            move "1200,00" to importo.
  171.  
  172.            write debitore.      
  173.  
  174.            close clienti.
  175.            close debitori.