<varname> / <имя переменной> |
Это значение идентификатора переменной, принимающей значение, определяющее успех или неудачу операции чтения блока. |
<fptrname> / <имя указателя файла> |
Это имя, определенное для указателя файла при открытии файла. |
<size> / <размер> |
Это число считываемых символов. |
Для открытия диалогового окна, ассоциированного с этой командой ввода/вывода:
1. Откройте окно Edit.
2. Установите курсор на команду Read Block.
3. Нажмите F9.
Предположим, у вас есть различные внешние файлы данных, которые содержат различные данные о деталях и первые несколько символов каждого файла указывают, для чего предназначен файл. Вы можете использовать команду File/Read_Block для того, чтобы считать только эти первые символы перед тем, как решить считать и обработать каждую строку. Ознакомьтесь с кодом:
C3=COMMENT/INPUT,Please type the name of the
,file code to search for.
ASSIGN/BLOCKSIZE = LEN(C3.INPUT)
ASSIGN/FILECODE = C3.INPUT
DO/
C1=COMMENT/INPUT,Please type the full pathway,
,filename, and extension to the
,file you want to process.
,Type [Q] to quit.
IF/C1.INPUT== "Q" OR C1.INPUT=="q"
COMMENT/OPER,You've chosen to quit. Program now ending.
GOTO/END
END_IF/
V1=FILE/EXISTS,C1.INPUT
IF/V1<>0
COMMENT/OPER,"Data file [" + C1.INPUT + "] exists. Click OK to continue."
FPTR=FILE/OPEN,C1.INPUT,READ
V2=FILE/READ_BLOCK,FPTR,BLOCKSIZE
FILE/CLOSE,FPTR
IF/V2<>FILECODE
COMMENT/OPER,"The file's code of [" + V2 + "] doesn't match"
,"the FILECODE of [" + FILECODE + "]."
END_IF/
UNTIL/V2==FILECODE
COMMENT/OPER,"File [" + C1.INPUT + "] is a match."
,"The file's code of [" + V2 + "] matches"
,"the FILECODE of [" + FILECODE + "]."
COMMENT/OPER,Program then processes the file.
END_IF/
ELSE/
COMMENT/OPER,"Data file [" + C1.INPUT + "] doesn't exist. Please retry using an existing data file."
GOTO/END
END_ELSE/
END=LABEL/
PROGRAM/END
Пояснение кода
Некоторые части этого кода похожи на части, описанные в "Примере кода для Read Character" или в "Примере кода для Read Line".
Здесь приводятся пояснения кода, встречающегося только в этом примере.
ASSIGN/BLOCKSIZE = LEN(C3.INPUT) Эта строка создает определяемую пользователем переменную под названием BLOCKSIZE, которая содержит целое число, равное числу символов, найденных в C3.INPUT. Это будет использовано в качестве размера блока считываемых символов.
ASSIGN/FILECODE = C3.INPUT Эта строка создает переменную FILECODE и дает ей значение C3.INPUT.
C1=COMMENT/INPUT Этот комментарий сохраняет полный путь, введенный пользователем в переменную C1.INPUT.
V1=FILE/EXISTS,C1.INPUT Эта строка проверяет существование файла, имя которого было определено в комментарии C1.
DO/ Эта строка начинает цикл DO / UNTIL. Он включает в себя код, который позволяет пользователю определить файл, из которого будет выполняться чтение. Выполнение цикла будет продолжаться до тех пор, пока текст, присвоенный переменной FILECODE, будет совпадать с текстом, считанным из файла.
V2=FILE/READ_BLOCK,FPTR,BLOCKSIZE Эта строка читает количество, символов, равное целому числу, содержащемуся в переменной BLOCKSIZE. Затем текст сохраняется в переменной V2.
IF/V2<>FILECODE Эта строка начинает блок кода IF / END IF, который тестирует совпадает ли текст в переменной V2 с текстом, сохраненным в переменной FILECODE. Если он совпадает, выполнение программы будет продолжено. В противном случае выводится сообщение о том, что два кода не совпадают.
UNTIL/V2==FILECODE Эта строка проверяет состояние цикла DO / UNTIL для проверки, совпадает ли текст в переменной V2 с текстом в переменной FILECODE. Если оператор возвращает значение "ложь" (false), цикл DO выполняется еще раз, позволяя пользователю выбрать другое имя файла. Если оператор возвращает значение "истина" (true), то происходит выход из цикла и программа отображает сообщение о том, что значения совпадают. PC-DMIS может продолжить чтение каждой строки данных из указанного файла данных.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.