2 Stimmen

Verb in Cobol unterteilen

Ich habe diese merkwürdige Ausgabe im Restteil des Verbes DIVIDE in COBOL. Das Ziel ist es, 213,20 durch 10 zu teilen und den Quotienten sowie den Rest in einer anderen Variablen zu speichern. Ich hatte erwartet, dass im Restteil der Wert 3,2 steht, aber ich habe nur 0 erhalten. Bitte klären Sie mich auf.

Siehe nachstehendes Codeschnipsel:

WORKING-STORAGE SECTION.
    01 VAR-A  PIC S9(09)V99 COMP-3 VALUE 213.20
    01 VAR-B  PIC S9(09)V99 COMP-3 VALUE 10.00
    01 VAR-C  PIC S9(09)V99 COMP-3 VALUE 0.
    01 VAR-D  PIC S9V99     COMP-3 VALUE 0.  

PROCEDURE DIVISION.
MAIN-PARAGRAPH.
    DIVIDE VAR-A
      BY VAR-B
      GIVING VAR-C
      REMAINDER VAR-D.

    DISPLAY 'VAR-A: 'VAR-A.
    DISPLAY 'VAR-B: 'VAR-B.
    DISPLAY 'VAR-C: 'VAR-C.
    DISPLAY 'VAR-D: 'VAR-D.
********************************************
RESULTS:

VAR-A: 00000021320
VAR-B: 00000001000
VAR-C: 00000002132
VAR-D: 000

4voto

NealB Punkte 16282

Das Problem ist, dass Sie die empfangende Variable definiert haben VAR-C mit 2 Ziffern nach dem Komma. Ich denke, Sie wollten eine ganzzahlige Division, also versuchen Sie, sie wie folgt zu definieren:

01 VAR-C    PIC S9(09) COMP-3.

Jetzt VAR-C kann nur ganze Zahlen (z. B. 21) und den Rest ( VAR-D ) enthält das Residuum (z. B. 3.20)

1voto

Stephen O'Flynn Punkte 2249

Das könnte helfen, denn jemand hatte ein ähnliches Problem:

http://www.ibmmainframes.com/about44677.html

1voto

zarchasmpgmr Punkte 1336

Ich habe in der Vergangenheit seltsame Ergebnisse gesehen, wenn Ihr Rest-PIC nicht mit dem Divisor-PIC übereinstimmt. Ändern Sie Ihren Restwert in PIC S9(9)V99 und posten Sie die Ergebnisse.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X