OpenCobol - Rewrite di file

di il
2 risposte

OpenCobol - Rewrite di file

Stavo provando OpenCobol ed ho un problema strano con l'accesso ai file.

Questo è il mio programma:

       identification division.
       program-id. hellonew.
       
       environment division.
       input-output section.
       file-control.
          select optional pippo
             assign to random 'pippo'
             organization is indexed
             record key is cpippo.
       
       data division.
       file section.
       fd pippo.
       01 rpippo.
          03 cpippo pic x(10).
          03 rec-pippo pic x(30).
       
       procedure division.
       open i-o pippo
       initialize rpippo
       read pippo no lock
          at end
             write rpippo
          not invalid
             rewrite rpippo
       end-read   
       close pippo
       display
          "Hello, new world!"
       end-display
       goback.

Il problema che riscontro è che il programma esce con errore alla prima esecuzione dicendo che il file non può essere scritto poichè non è aperto in output.
Eppure la "open i-o" dovrebbe essere la modalità di lettura/scrittura, quindi sia per leggere che per scrivere.

Qualcuno ha mai riscontrato problemi simili?

Questo è l'errore esatto:

libcob: error: WRITE not allowed, file not open for output (status = 48) for file pippo ('pippo')

2 Risposte

  • Re: OpenCobol - Rewrite di file

    Non seguo più il COBOL da tempi immemori, comunque (nel passato e con altri compilatori) quando veniva aperto un file indicizzato per I-O l'applicativo poteva si LEGGERE e SCRIVERE un record; ma nel caso di errore 48 significava che il file era predefinito per essere aperto in modalità di accesso sequenziale.
    Quindi il problema risultava nel paragrafo della FILE-CONTROL ACCESS MODE che se non specificato,
    aveva il valore predefinito a "NONE" che fissava la modalità sequenziale.
    Pertanto prova a specificare la ACCESS MODE ponendola su DYNAMIC.
  • Re: OpenCobol - Rewrite di file

    Grazie mille!

    Mancava proprio la ACCESS MODE
Devi accedere o registrarti per scrivere nel forum
2 risposte