Главная » Basic » ФАЙЛЫ В СИСТЕМЕ ICL 2904

0

В  этой  системе предусмотрены файлы  двух  типов:  в  терминальном и  внутреннем  форматах.  С последним можно работать в режиме прямого доступа (см. подразд. 8.6.1).

Последовательные файлы в терминальном формате можно создавать командой OPEN, в отличие от многих других систем не являющейся оператором. Чтение из файла и запись в файл осуществляются программами обычным образом. В приведенном ниже перечне указаны предоставляемые системой средства.

Только команда:

OPEN имя файла, размер в записях (резервируется на диске место для файла) Операторы:

10    FILE #N: "имя файла"    (привязывает файл к логическому номеру)

10   INPUT #N:

10   LINPUT#N:

10   PRINT #N:

10   FILE#N:"*"                    (закрывает файл)

Длина имени файла в этой системе ограничена шестью символами. Для проверки достижения конца файла предусмотрены два оператора IF:

IF END #N THEN 100

IF MORE #N GOTO 10

Очень  важным  и  полезным  свойством  является  возможность  возвращения  к  началу  файла  (по аналогии с RESTORE в операторах DATA) посредством оператора RESET #N. Его функции этим не ограничиваются; если в нем вторым параметром указан номер записи, то он переместит  текущую позицию  чтения  или  записи  в  файле  на  запись  с  указанным  номером,  обеспечив  тем  самым возможность прямого доступа к информации:

100   RESET #3 100   RESET #3,45

Файловая  функция  LOC(#N)  возвращает номер  текущей  записи,  а  полезная  функция  TYP  (#N) анализирует следующий за текущим элемент данных файла для определения его типа (1 — числовое значение, 2 — строка символов, 3 — конец записи и 4 — конец файла).

Файлы  можно  использовать и  по-другому,  манипулируя  ими  непосредственно с  клавиатуры.  В описываемой системе манипулирование программами и файлами осуществляется единым  образом, так что обычные команды GET, LIST и команды редактирования строки применимы и к файловым данным. В дополнение к ним предусмотрена специальная команда, TEXT, создающая новые файлы

данных. В приведенном ниже примере то, что набирается на клавиатуре, подчеркнуто;   система  в качестве приглашения к вводу использует знак >, но при вводе данных в файл меняет его на <:

>TEXT INFO           (Надо  создать  новый файл  с  именем   INFO)

<ПЕРВАЯ СТРОКА,2.3 <4.678, ВТОРАЯ,7.8 < 1 . 2 . 3.

<ПОСЛЕДНЯЯ, 67

<////        (Четыре / завершают ввод) INFO SAVED

>LIST        (Изображение содержимого текущего Файла) INFO

1      ПЕРВАЯ  СТРОКА, 2.3

2      4.678, ВТОРАЯ, 7.8

3        1,2,3

4      ПОСЛЕДНЯЯ, 67 >

Можно пользоваться следующими командами:

LIST                    изображение на ВТУ текущего программного файла или файла данных;

KILL INFO          удаление поименованного файла (INFO) из архивной памяти;

SCRATCH            удаление текущего файла из рабочей области памяти ЭВМ;

GET INFO             копирование файла из архивной памяти в рабочую область памяти.

Программные файлы или файлы данных, находящиеся в рабочей области, можно изменять, задавая номер  строки,  за  которым  следует  ее  новое  значение.  Указание  одного  только  номера  строки вызывает удаление строки, а в результате исполнения оператора

DELETE 10,50

будут удалены строки с 10-й по 50-ю включительно. Чтобы возвратить измененную копию файла в архивную память, надо удалить исходный файл по команде KILL, после чего текущий файл можно скопировать из рабочей области по команде SAVE. Имя находящегося в рабочей  области файла можно изменить по команде NAME.

Следующая простая программа использует созданный выше файл INFO. Так как он содержит смесь строк символов и чисел, то все его элементы читаются как строки символов. Запятая в  операторе INPUT после А$ означает, что оператор должен продолжить чтение следующего элемента данных из 263

текущей записи;  без этой запятой программа читала бы только первые элементы каждой записи.

10   REM ДЕМОНСТРАЦИЯ РАБОТЫ С ФАЙЛАМИ ЭВМ ICL 2904

20   FILE#l: "INFO"

30   INPUT#1: А$,

40   PRINT "ОЧЕРЕДНОЙ ЭЛЕМЕНТ ДАННЫХ: ";А$

50   IF MORE#1 THEN 30

60   FILE#l: "*"

70   END RUN

ОЧЕРЕДНОЙ ЭЛЕМЕНТ ДАННЫХ:  ПЕРВАЯ СТРОКА ОЧЕРЕДНОЙ ЭЛЕМЕНТ ДАННЫХ:  2.3

ОЧЕРЕДНОЙ ЭЛЕМЕНТ ДАННЫХ:   4.678

ОЧЕРЕДНОЙ ЭЛЕМЕНТ ДАННЫХ:   ВТОРАЯ ОЧЕРЕДНОЙ ЭЛЕМЕНТ ДАННЫХ:  7.8

ОЧЕРЕДНОЙ ЭЛЕМЕНТ ДАННЫХ:    1

ОЧЕРЕДНОЙ ЭЛЕМЕНТ ДАННЫХ:   2

ОЧЕРЕДНОЙ ЭЛЕМЕНТ ДАННЫХ:    3

ОЧЕРЕДНОЙ ЭЛЕМЕНТ ДАННЫХ:  ПОСЛЕДНЯЯ ОЧЕРЕДНОЙ ЭЛЕМЕНТ ДАННЫХ:  67 LINE 70 DONE

8.3.4.  ФАЙЛЫ В ОПЕРАЦИОННОЙ СИСТЕМЕ СР/М

В операционной системе СР/М физические дисководы имеют метки А, В, С и т. д. По соглашению метку А имеет дисковод, встроенный в корпус ВТУ. Системный диск, содержащий  СР/М, должен быть вставлен в дисковод А. После того как СР/М будет загружена в память посредством описанной в подразд. 2.1.2 процедуры, приглашение к вводу будет содержать указание на текущий дисковод:

А>

Набрав В: или С:, можно изменить текущий дисковод на В или С соответственно.

Учтите, что при загрузке Бейсика командой MBASIC по умолчанию разрешается работать не более чем  с  тремя  файлами  данных,  которые  должны  иметь  логические  номера  от  1  до   3.  При необходимости в  работе с  большим числом файлов надо указать в  команде  параметр"/F: число файлов". Например, команда

A>MBASIC/F:6

позволит  Бейсику  использовать  до  шести  файлов  данных.  Все  непосредственные  манипуляции файлами, включая их создание, выполняются вне Бейсика. Ниже будут  использованы ссылки на команды СР/М и ее редактор.

При   работе   с   файлами   часто   бывает   необходимо  указывать,   на   каком   дисководе   (А,В,С) располагается файл. Некоторые команды СР/М способны манипулировать группами файлов и могут использовать звездочку (*) для обозначения "любой строки символов" в имени файла, например: A:FIRST.PRG      означает файл FIRST.PRG на дисководе А;

SAMPLE.TXT       означает файл SAMPLE.TXT на текущем дисководе; 264

В:*.ТХТ              означает все файлы на дисководе В, имеющие расширение имени ТХТ; B:*.*                   означает все файлы на дисководе В.

учтите, что команды должны вызываться с того диска, на котором они находятся (обычно с диска А).

Если это не текущий диск, то перед командой надо набрать А:.

Последовательные файлы можно создавать обычным образом из программы, как описано в подразд. 8.4.8,   или   же   непосредственно   с   клавиатуры.   В   последнем   случае    используйте    команду редактирования ED операционной системы СР/М, указывая в ней имя нового файла. Данные можно ввести в файл с помощью команды редактора I; признаком конца  ввода данных служит нажатие клавиши  Z  при  нажатой  клавише  управляющего  регистра  CONTROL.  Ниже  приведен  пример полного сеанса редактирования (набираемая на клавиатуре информация подчеркнута) :

В>А: ED INFO.DAT        (вызвать команду ED с дисковода А для создания поименованного    файла на  текущем  дисководе, т. е. В) NEW FILE                           (на диске В нет файла с указанным выше именем,

поэтому система создает новый файл)

:*I                                     (редактор выдает звездочку в качестве приглашения к вводу; для перехода в режим вставки текста наберите I)

1:10

2:40

3:75                             (вводите значения данных, нажимая клавишу воз4:-б                            врата каретки после каждой набранной строки) 5:21

6:                                 (наберите CONTROL Z для завершения исполнения команды I)

:*Е                             (снова выдано приглашение к вводу (*); введите Е для завершения редактирования)

В>                                     (произошел возврат к СР/М;   можно вводить новую команду операционной системы).

Созданный таким образом файл INFO .DAT можно изобразить на ВТУ командой В>A:TYPE INFO.DAT или, если текущим является диск А,

A>TYPE B:INFO.DAT

Теперь можно войти в Бейсик и обеспечить доступ программы к файлу с помощью оператора OPEN

так, как это было описано выше. У Бейсика нет

команды  для  распечатывания или  редактирования файла  данных;    встроенный в  него  редактор рассчитан только на программы (см. табл. 8.6) и никак не  связан  с  описанным выше редактором операционной системы СР/М, В табл. 8.6 приведен список дополнительных команд, которые можно давать i в   Бейсике, работающем под управлением операционной системы СР/М,

Таблица     8.6. Дополнительные команды в Бейсике, работающем под управлением  операционной системы СР/М

Пример команды

Бейсика

Действие

FILES "В:*.*"

LOAD "B:MYPROG"" SAVE "В: MYPROG" SYSTEM

EDIT 35

Изображает список файлов диска В

Загружает программу MYPROG .BAS с диска В Сохраняет программу MYPROG. ВAS на диске В Завершает работу Бейсика и возвращает управление операционной системе СР/М. Если текущая программа не была сохранена на диске, то она будет потеряна Позволяет начать редактирование строки 35 текущей программы.  Некоторые из  команд редактирования таковы:

L                печать текущей строки;

пробел       перемещение курсора к следующему сим-

волу;

D                — удаление символа;

С                — замена текущего символа строки на следующий набираемый символ;

I                 вставка символов (завершается нажатием на клавишу ESC);

возврат      — нажатие этой клавиши завершает редакти-

каретки     рование и вызывает запоминание измененной строки

Выйдите из Бейсика в СР/М с помощью команды SYSTEM и войдите в него снова с  помощью

команды MBASIC. Итак, для работы с файлами операционной системы СР/М можно  использовать какую-либо из следующих двух процедур:

Загрузите ОС СР/М и Бейсик. Создайте файлы и работайте с ними программными средствами так, как это описано в подразд. 8.4.1 и 8.4.8. Выйдите из Бейсика, если потребовалось  изменить или распечатать эти файлы, либо

Загрузите СР/М и создайте или распечатайте требуемые файлы. Затем войдите в Бейсик и загрузите в его память программы, использующие эти файлы. Выйдите из Бейсика, если потребуется изменить или распечатать эти файлы непосредственно с клавиатуры.

В  заключение  подраздела  вкратце  опишем  общие  операции  для  манипулирования  файлами   в операционной системе СР/М. Начнем с обзора возможностей редактора.

Команда редактирования ED имеет формат

ED имя_файла

В качестве приглашения к вводу редактор выдает звездочку (*). После ее появления можно дать одну из  приведенных ниже команд редактирования. Далее через ↑Z  обозначен набор Z  при  нажатой клавише CONTROL, a + или -обозначает перемещение к началу или концу файла. Для завершения редактирования вводится либо команда Е, обеспечивающая нормальный конец работы и сохранение редакции в новом файле, либо Q, обеспечивающая выход из редактора без  сохранения редакции в файле. При внесении изменений в уже существующий файл после  выхода из редактора исходная версия  файла  сохраняется  на  диске  под  именем  "имя_файла.ВАК".  Ниже  приводится  перечень команд редактора:

nA                            Добавить n строк

±В                            Перейти к концу (+) или началу (—) буфера.

±пС                         Передвинуть текущую позицию редактирования на ± n символов.

±nD                         Удалить n символов.

Е                              Завершить редактирование и закрыть файлы.

nF                            Найти n-е вхождение образца: F образец ↑Z.

Н                              Завершить

редактирование и оставить файлы

открытыми.

I                               Вставить символы: I строка_символов ↑Z.

nJ                             Найти образец 1 с заменой на образец 2 всех последующих символов вплоть до образца 3.

±пК                         Удалить (уничтожить) n строк.

± nL                         Переместиться вниз   (+)  или вверх (—) на n

строк.

М                             Макроопределение.

N                              Найти  образец  с   автоматической подкачкой строк из входного файла.

0                              Возвратиться к исходному файлу.

±nP                          Переместиться на n страниц с печатью.

Q                              Выйти из редактора без изменения файла.

nS                            Заменить образец 1 на образец 2: S образец 1

↑Z образец 2 ↑Z.

±nT                                     Напечатать (изобразить) n строк.

±U                                      Объявить замену строчных букв на прописные (+) или отменить объявление

замены (-).

nW                                      Записать в выходной файл n строк.

nZ                                       Пропустить n строк.

± n (возврат каретки)       переместиться на n строк и напечатать новую текущую строку (эквивалентно ± n L Т) .

В  СР/М  имеются следующие команды манипулирования  файлами: команда печати  справочника файлов DIR, например:

DIR DIR B:

DIR PROG.* DIR*.PRG

Команда изображения содержания файла на ВТУ TYPE, например: TYPE SAMPLE.TXT

TYPE В:FRED.APG

Команда STAT, выдающая паспортные данные файла и сведения о свободной памяти, например: STAT DSK:                          (информация обо всех активных дисках)

STAT STAT В:

STAT SAMPLE.TXT STAT*.TXT

Команда удаления файла ERA, например: ERA SAMPLE.TXT

ERA*.TXT ERA B:*.PRG

Команда  переименования  файла  REN  (меняет  имя  файла,  указанного  вторым,  на  первое  имя),

например:

REN NEWFL.TXT =OLDFL.PRG RENA.B=X.Y

REN В: FRED.APG =B: JIM.ВАК

Команда копирования файлов PIP, например:

PIP A:NEW.TXT=B:OLD.PRG (скопировать из OLD в NEW)

С помощью команды PIP можно скопировать файл на устройства: CON:-на консоль (ВТУ), LST:—на принтер, например: PIP CON: = SAMPLE.TXT PIP LST:=A.PRG

С помощью PIP можно копировать целиком диски, например: Р1Р С:=А:*.* 268

табл     8.7  описаны действия, выполняемые операционной системой CP/М при наборе на клавиатуре некоторых  управляющих  символов.  Учтите,  Таблица  8.7.  Действие  управляющих   символов  в операционной системе СР/М

управляющий символ

Общего назначения

Действие

RUBOUT/DELETE  Удаляет символ, изображая его на экране

CTRL U или CTRL X

Удаляет строку

CTRL L                     Используется после удаления для изображения "чистой" строки

CTRL E                     Позволяет продолжить набор команды на следующей строке

CTRL С                     Перевызов операционной системы СР/М

Прочие

CTRL H                     Возврат на одну позицию

CTRL J (переход к новой строке) CTRL M (возврат каретки)

Завершает ввод

Завершает набор команды

CTRL P                     Включает/выключает печать на принтере появляющегося на экране ВТУ изображения

CTRL S                     Останавливает/возобновляет   выдачу изображения  на экран ВТУ

что при работе с Бейсиком эти управляющие символы могут вызвать совершенно другие действия.

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии