spamsink: (Default)
[personal profile] spamsink posting in [community profile] besm6
Пишем простую программу, которая что-то печатает в стандарный вывод (для контроля) и пишет то же самое во временный файл, а потом посимвольно читает из временного файла и пишет в стандарный вывод:
                                                       01.05.21 M1
 PASCAL COMPILER 15.0 (15.02.82)
 00001    1  1 PROGRAM MAIN(OUTPUT); VAR F:TEXT; I:INTEGER;
 00014    2  2 BEGIN
 00015    3  2    REWRITE(F);
 00016    4  3    FOR I := 10 TO 30 DO BEGIN
 00017    5  3       WRITELN(   I, ’:’, ’ABCDEFGHIJ’ : I);
 00026    6  3       WRITELN(F, I, ’:’, ’ABCDEFGHIJ’ : I);
 00035    7  2    END;
 00037    8  2    RESET(F);
 00041    9  2    WRITELN(’--------------------’);
 00044   10  3    WHILE NOT EOF(F) DO BEGIN
 00045   11  3       WRITE(F!);
 00050   12  3       GET(F)
 00051   13  3    END
 00064   14  0 END.
           *EXECUTE
        10:ABCDEFGHIJ
        11: ABCDEFGHIJ
        12:  ABCDEFGHIJ
        13:   ABCDEFGHIJ
        14:    ABCDEFGHIJ
        15:     ABCDEFGHIJ
        16:      ABCDEFGHIJ
        17:       ABCDEFGHIJ
        18:        ABCDEFGHIJ
        19:         ABCDEFGHIJ
        20:          ABCDEFGHIJ
        21:           ABCDEFGHIJ
        22:            ABCDEFGHIJ
        23:             ABCDEFGHIJ
        24:              ABCDEFGHIJ
        25:               ABCDEFGHIJ
        26:                ABCDEFGHIJ
        27:                 ABCDEFGHIJ
        28:                  ABCDEFGHIJ
        29:                   ABCDEFGHIJ
        30:                    ABCDEFGHIJ
--------------------
        10:ABCDEFGHIJ
   15:     ABCDEFGHIJ
    ABCDEFGHIJ
             ABCDEFGHIJ
 CDEFGHIJ
 HIJ

Налицо ужас и безумие, но ларчик открывается просто: в файле всё в порядке, и читается из него всё правильно, а к фиаско приводит всего лишь запись в стандартный вывод символа line feed (012). Если написать в 11-й строке
 00045   11  3       IF F! = CHR(012B) THEN WRITELN ELSE WRITE(F!);

то всё работает идеально.

Примечание: восклицательный знак - это символ разыменования, вводимый как @ или ^
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

Сообщество любителей БЭСМ-6

December 2025

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
282930 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 14th, 2026 11:08 am
Powered by Dreamwidth Studios