Как видно из названия, мне трудно получить желаемый результат для моей программы COBOL. Программа берет данные из файла и выводит их в определенном формате, это для домашнего задания. Когда я запускаю программу, она работает для заголовка имени, заголовка школы и заголовка столбца. Первый курс работает отлично, тогда выход начинает срезаться на один и испортит все мои другие выходы.Форматирование ввода/вывода файлов COBOL
Пример входного файла
CMPS161 ALGORITHM DSGN/IMPLMNT I A 3.00 CMPS280 ALGORITHM DSGN/IMPLEM II B 3.00
выходного файла желаемый пример
<Name> <schoolID> Course Title GR Earned CMPS161 ALGORITHM DSGN/IMPLMNT I A 3.00 CMPS280 ALGORITHM DSGN/IMPLEM II B 3.00
Выходной фактический пример
<Name> <schoolID> Course Title GR Earned CMPS161 ALGORITHM DSGN/IMPLMNT I A 0.00 MPS280 ALGORITHM DSGN/IMPLEM II B 0.00
COBOL Project
IDENTIFICATION DIVISION.
PROGRAM-ID. P2.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT myInFile ASSIGN TO "P2In.dat".
SELECT myOutFile ASSIGN TO "P2Out.dat".
DATA DIVISION.
FILE SECTION.
FD myInFile.
01 inRecord.
02 Course PIC X(13).
02 Title PIC X(32).
02 Grade PIC X(4).
02 Earned PIC Z9.99.
02 FILLER PIC X(3).
FD myOutFile.
01 outRecord.
02 myCourse PIC X(13).
02 myTitle PIC X(32).
02 myGrade PIC X(4).
02 myEarned PIC Z9.99.
02 FILLER PIC X(3).
WORKING-STORAGE SECTION.
01 E0F PIC X(3) VALUE "NO ".
01 NAME-HDR.
05 FILLER PIC X(10) VALUE "NAME HERE ".
01 SCHOOLID-HDR.
05 FILLER PIC X(8) VALUE "SCHOOLID"
01 COLUMN-HDR.
05 FILLER PIC X(6) VALUE "COURSE".
05 FILLER PIC X(6) VALUE SPACES.
05 FILLER PIC X(6) VALUE "TITLE".
05 FILLER PIC X(6) VALUE SPACES.
05 FILLER PIC X(6) VALUE "GR".
05 FILLER PIC X(6) VALUE SPACES.
05 FILLER PIC X(6) VALUE "EARNED".
PROCEDURE DIVISION.
MAIN-PROGRAM.
PERFORM HEADER.
PERFORM FILE-IO.
PERFORM CLOSING.
STOP RUN.
HEADER.
OPEN INPUT myInFile
OUTPUT myOutFile.
WRITE outRecord FROM NAME-HDR
AFTER ADVANCING 1 LINE.
WRITE outRecord FROM SCHOOLID-HDR
AFTER ADVANCING 1 LINE.
WRITE outRecord FROM COLUMN-HDR
AFTER ADVANCING 2 LINES.
MOVE SPACES TO outRecord.
WRITE outRecord
AFTER ADVANCING 1 LINE.
FILE-IO.
READ myInFile
AT END
MOVE "YES" TO EOF.
PERFORM PROCESS-RECORD
UNTIL EOF = "YES".
PROCESS-RECORD.
MOVE SPACES TO outRecord.
MOVE Course to myCourse.
MOVE Title to myTitle.
MOVE Grade to myGrade.
MOVE Earned to myEarned.
WRITE outRecord
AFTER ADVANCING 1 LINE.
READ myInFile
AT END
MOVE "YES" TO EOF.
CLOSING.
CLOSE myInFile
myOutFile.
Скорее всего, ваши данные-записи на один байт «короче», чем ваши данные-определение записей. Вы еще не сказали компилятору, поэтому помните, что вам нужно было бы включить байт для терминатора записи, но только один. –
Да, я вручную подсчитал свои определения данных, включая свободное место в конце и новый символ линии в моем наполнителе. курс - 13 пробелов, название - 32, класс - 4 пробела, поэтому я могу иметь подавленное число для последующих вычислений заработанных и 3 в месте заполнения, включая терминатор строки. – CoryC
Пятно на сэр, я исправил его с помощью значения наполнителя, в которое я включил слишком много пробелов. Бесконечно благодарен. – CoryC