2010-12-03 3 views
2

私は解決できない問題があります。私の行は私の出力に間違って表示されています。COBOLで私の行に問題がある

123-45-6789 JS Doeの第二YR 88 266 3.02

のプログラミングではなく、次のように現れてされています:

123-たとえば、私はこのように表示することが想定されている行を持っています45-6789 JS Doe Second Yrプログラミング88 266
3.02

誰でもこれを修正する方法を知っています。私は前にこの問題に遭遇したことはありません。ここで

さはライン

01 DETAIL-LINE. 
     05 DL-FIRST-NUM   PIC X(3). 
     05 DL-DASH-1    PIC X  VALUE '-'. 
     05 DL-SECOND-NUM   PIC XX. 
     05 DL-DASH-2    PIC X  VALUE '-'. 
     05 DL-THIRD-NUM   PIC X(4). 
     05 BLANK-A-OUT    PIC X(3) VALUE SPACES. 
     05 DL-FIRST-LETTER   PIC X. 
     05 BLANK-B-OUT    PIC X  VALUE SPACES. 
     05 DL-SECOND-LETTER  PIC X. 
     05 BLANK-C-OUT    PIC X  VALUE SPACES. 
     05 DL-LAST-NAME   PIC X(9). 
     05 BLANK-D-OUT    PIC X(2) VALUE SPACES. 
     05 DL-CLASS-STANDING  PIC X(9). 
     05 BLANK-E-OUT    PIC X(3) VALUE SPACES. 
     05 DL-MAJOR    PIC X(13). 
     05 BLANK-F-OUT    PIC X(3) VALUE SPACES. 
     05 DL-HOURS    PIC ZZ9. 
     05 BLANK-G-OUT    PIC X(5) VALUE SPACES. 
     05 DL-POINTS    PIC ZZ9. 
     05 BLANK-H-OUT    PIC X(4) VALUE SPACES. 
     05 DL-GPA     PIC 9.99. 

、ここであなたは72文字全体のファイルに

400-PROCESS-ONE-RECORD. 
     IF LINE-COUNT >= 52 
      PERFORM 600-NEXT-PAGE 
     END-IF 
     ADD 2 TO LINE-COUNT 
     MOVE SSN-IN TO SSN-BREAK 
     MOVE FIRST-NUM TO DL-FIRST-NUM 
     MOVE SECOND-NUM TO DL-SECOND-NUM 
     MOVE THIRD-NUM TO DL-THIRD-NUM 
     MOVE STUDENT-NAME-IN TO NAME-BREAK 
     MOVE FIRST-LETTER TO DL-FIRST-LETTER 
     MOVE SECOND-LETTER TO DL-SECOND-LETTER 
     MOVE LAST-NAME TO DL-LAST-NAME 
     IF CLASS-STANDING-IN = 0 
      MOVE 'HIGH SCHOOL' TO DL-CLASS-STANDING 
     END-IF 
     IF CLASS-STANDING-IN = 1 
      MOVE 'First Yr' TO DL-CLASS-STANDING 
     END-IF 
     IF CLASS-STANDING-IN = 2 
      MOVE 'Second Yr' TO DL-CLASS-STANDING 
     END-IF 
     IF CLASS-STANDING-IN = 3 
      MOVE 'PROGRAM 60' TO DL-CLASS-STANDING 
     END-IF 
     IF CLASS-STANDING-IN = ' ' OR 4 
      MOVE ' ' TO DL-CLASS-STANDING 
     END-IF 
     IF MAJOR-IN = 'NES' 
      MOVE 'Net Security' TO DL-MAJOR 
     END-IF 
     IF MAJOR-IN = 'NET' 
      MOVE 'Networking' TO DL-MAJOR 
     END-IF 
     IF MAJOR-IN = 'PGM' 
      MOVE 'Programming' TO DL-MAJOR 
     END-IF 
     IF MAJOR-IN = 'DIG' 
      MOVE 'Digital Media' TO DL-MAJOR 
     END-IF 
     IF MAJOR-IN = 'COR' 
      MOVE ' ' TO DL-MAJOR 
     END-IF 
     MOVE CREDIT-HOURS-IN TO DL-HOURS 
     IF MAJOR-IN = 'NES' 
      ADD 1 TO NES-TOTAL 
     END-IF 
     IF MAJOR-IN = 'NET' 
      ADD 1 TO NET-TOTAL 
     END-IF 
     IF MAJOR-IN = 'PGM' 
      ADD 1 TO PGM-TOTAL 
     END-IF 
     IF MAJOR-IN = 'DIG' 
      ADD 1 TO DIG-TOTAL 
     END-IF 
     MOVE CREDIT-POINTS-IN TO DL-POINTS 
     COMPUTE TOTAL-GPA ROUNDED 
      = CREDIT-POINTS-IN/CREDIT-HOURS-IN 
     IF MAJOR-IN = 'NES' AND TOTAL-GPA > '3.O' 
      ADD 1 TO NES-GPA 
     END-IF 
     IF MAJOR-IN = 'NET' AND TOTAL-GPA > '3.O' 
      ADD 1 TO NET-GPA 
     END-IF 
     IF MAJOR-IN = 'PGM' AND TOTAL-GPA > '3.O' 
      ADD 1 TO PGM-GPA 
     END-IF 
     IF MAJOR-IN = 'DIG' AND TOTAL-GPA > '3.O' 
      ADD 1 TO DIG-GPA 
     END-IF 
     MOVE TOTAL-GPA TO DL-GPA 
     MOVE DETAIL-LINE TO STUDENTS-RECORD-OUT 
     IF DL-CLASS-STANDING = 'First Yr' OR 'Second Yr' AND 
      GRAD-STAT-IN = ' ' OR 'X' 
     ADD CREDIT-POINTS-IN TO TOTAL-POINTS 
     ADD CREDIT-HOURS-IN TO TOTAL-HOURS 
     WRITE STUDENTS-RECORD-OUT 
      AFTER ADVANCING 1 LINES 
     END-IF. 
+1

出力を作成する行をリストすると、 –

+0

@Dan D ok、それらを追加したことが分かります。 – Kimmy1235

+0

あなたは 'IF'構造の代わりに' EVALUATE'を使ってこのコードを読みやすくし、テストでは88レベルを指定することができます。 – NealB

答えて

1

改行にはいくつかの説明があります。

最初に説明するのは、出力を表示しているデバイスが であることが原因の行折り返しです。あなたが指定したDETAIL-LINEレコード レイアウトに基づいて、72欄に囲みが表示されます。疑わしい。出力デバイス(たとえば、画面またはファイル)が列72に行を折り返しますか

次の説明では、改行記号 がBLANK-H-OUTに格納されています。これは、プログラム内の任意の数のプログラミング・ゴーフ を通して起こった可能性があります。範囲外の配列/テーブル参照は、この種のものの ソースであることがよくあります。これを実践するには、実際のデバッグが必要です。

0

それを書き出すためのコードを記述しているされたための記憶領域でありますか?あなたのレコードは3文字が短すぎます。

ファイルセクションを投稿できますか?

関連する問題