Data corruption in COBOL-C interop: C expects null-terminated string, COBOL passed space-padded PIC X(20) – COBOL COBOL_C_ABI_MISMATCH

COBOL_C_ABI_MISMATCH

Le stringhe COBOL sono fisse e riempite di spazi a destra ('PIC X(20)'), mentre le funzioni C si aspettano puntatori a caratteri terminati dal byte nullo '\0' (richiedendo 'STRING ... DELIMITED BY SIZE, X"00"').

Cosa significa questo errore?

Le stringhe COBOL sono fisse e riempite di spazi a destra ('PIC X(20)'), mentre le funzioni C si aspettano puntatori a caratteri terminati dal byte nullo '\0' (richiedendo 'STRING ... DELIMITED BY SIZE, X"00"').

Messaggio originale

Data corruption in COBOL-C interop: C expects null-terminated string, COBOL passed space-padded PIC X(20)

Contesto e parole chiave

Alias

  • COBOL C interop string null termination

Messaggi alternativi

  • disallineamento formato stringhe interoperabilità C e COBOL

Prodotti

  • GnuCOBOL (cobc) / IBM Enterprise COBOL / Micro Focus

Piattaforme

  • AIX
  • IBM z/OS
  • Linux
  • Windows

Parole chiave

  • CALL e Linkage Subprogrammi
  • cobol
  • cobol.linkage.c-interop-cobol-c-abi-type-mismatch
  • errore-cobol-c-interop-abi-type-mismatch
  • file-status
  • gnucobol

Cause possibili

Causa tecnica per Errore COBOL C-Interop: Disallineamento ABI Stringhe (Spazi vs Terminatore Nullo)

Le stringhe COBOL sono fisse e riempite di spazi a destra ('PIC X(20)'), mentre le funzioni C si aspettano puntatori a caratteri terminati dal byte nullo '\0' (richiedendo 'STRING ... DELIMITED BY SIZE, X"00"').

molto comune

Diagnosi

Diagnostica di esecuzione e file status per Errore COBOL C-Interop: Disallineamento ABI Stringhe (Spazi vs Terminatore Nullo)

Ispezionare la variabile FILE-STATUS, i log di runtime o compilare con i controlli di integrità di GnuCOBOL (-Wall -Wextra -fdebugging-line).

Come leggere il risultato. Evidenzia violazioni dei margini di colonna, disallineamenti nelle clausole PIC o codici di ritorno anomali.

terminal
cobc -x -Wall -Wextra main.cob -o app

Risoluzione

Risoluzione standard per Errore COBOL C-Interop: Disallineamento ABI Stringhe (Spazi vs Terminatore Nullo)

Difficoltà: mediaRischio: basso

Applicare la correzione al codice sorgente COBOL secondo le specifiche ANSI/ISO COBOL.

  1. Ispezionare il valore della variabile FILE STATUS o il numero di riga del compilatore
  2. Correggere la dichiarazione FD, la PICTURE o la sequenza di OPEN/READ/WRITE
  3. Ricompilare ed eseguire verificando la corretta terminazione con RETURN-CODE 0
terminal
cobc -x main.cob

Domande frequenti

Cosa significa Errore COBOL C-Interop: Disallineamento ABI Stringhe (Spazi vs Terminatore Nullo) in COBOL?

Le stringhe COBOL sono fisse e riempite di spazi a destra ('PIC X(20)'), mentre le funzioni C si aspettano puntatori a caratteri terminati dal byte nullo '\0' (richiedendo 'STRING ... DELIMITED BY SIZE, X"00"').

Approfondimenti

Schede correlate