Visualizzazione dei risultati da 1 a 5 su 5

Discussione: File sequenziali Cobol

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    77

    File sequenziali Cobol

    Come si fa modificare un record in un file sequenziale in Cobol??


  2. #2
    non ti conviene utilizzare un organizzazione di tipo INDEXED???

    cmq guarda qua:

    http://web.tiscali.it/nunzio_brug/program.htm

    i file sequenziali sono trattati dall'unità 23 in poi...

    Se poi vuoi sapere qualcos'altro fammi sapere

    Ciao.

  3. #3
    Allora premetto che non mi ricordo bene, non lavoro con file da anni.

    Il metodo + semplice e leggere il file sequenzialmente read nomefile(nome che hai dato nella fd) [into area.appoggio] ecc ecc e scrivere un file in output modificando il record da te scelto... fino alla fine.

    Però il consiglio che ti do utilizza file indicizzati, + veloci e anche + facile da trattare per le modifiche.

    fammi sapere se hai bisogno di qualcos'altro.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    77
    ma il cobol ha problemi ha cresare un ciclo in un'altro ciclo?
    perform until [ ]
    ..
    ..
    perform until [ ]
    ..
    ..
    end-perform
    ..
    end-perform


    A me sembra che mi faccia casini!

  5. #5

    Sequential & perform

    Originariamente inviato da clapap
    ma il cobol ha problemi ha cresare un ciclo in un'altro ciclo?
    perform until [ ]
    ..
    ..
    perform until [ ]
    ..
    ..
    end-perform
    ..
    end-perform


    A me sembra che mi faccia casini!
    Confermo che per modificare un file sequenziale è necessario leggerlo e scriverne un altro. Un file sequenziale, non essendo indicizzato, non contiene chiavi e tutte le informazioni relative ai dati in esso contenuto. E' puro testo.
    Se usi INDEXED cambia tutto in quanto nel file indicizzato (.vix) vengono indicate tutte le informazioni sulle chiavi e posizione dei records.
    In poche parole.... un file sequential non può essere modificato come vorresti te, devi leggerlo tutto e, con gli opportuni tests, riscriverne un altro

    Perform

    Assulatamente no!!!
    L'importante che ne rispetti la struttura, cioè che la logica sia:
    Perform LABEL ------> Esegue la label e ritorna
    Perform LABEL thru FINE-LABEL ---> Esegue le istruzioni da LABEL a FINE-LABEL.

    Se usi "Perform LABEL", nel caso volessi uscire da LABEL per scartare le altre righe devi usare EXIT PARAGRAPH.

    Se usi "Perform LABEL THRU FINE-LABEL" per uscire e scartare le righe successive devi usare GO TO FINE-LABEL.

    Altro caso....
    Perform until CONTATORE = 10
    CONTATORE = CONTATORE + 1
    if CONTATORE = 7
    exit perform
    end-if
    display CONTATORE
    End-perform
    In questo caso usi un ciclo senza label e per uscire dal ciclo prima che si verifichi "CONTATORE = 10" devi usare exit perform.

    Questo è il riassunto. Se non vengono rispettate queste 3 logiche delle perform .... ebè.... il programma (soprattutto su grosse elaborazioni) perde il filo e non sà + quali righe eseguire

    Puoi annidare quante perform vuoi, l'unico intoppo è che se esageri il programma rallenta un pochetto
    Spero di esserti stato d'aiuto. Se ho capito male o mi sono espresso male ignorami e scusami.

    Ciao Fratè.
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.