OpenVMS �û��ֲ�
14.7.3 ��������̷�������
ȫ�ַ��ź�����������������̵����ݷ��ظ����ù��̻�� DCL
��������������κ������ȡȫ�ַ��Ż���������������Ƕ��������̵����ݷ��ظ����ù��̡�
��������չʾ����������ʹ��ȫ�ָ�ֵ��佨����ȫ�ַ��Ŵ���ֵ:
$ @DATA "Paul Cramer"
$ ! DATA.COM
$ !
$ ! P1 is a full name.
$ ! NAME.COM returns the last name in the
$ ! global symbol LAST_NAME.
$ !
$ @NAME 'P1'
$ ! NAME.COM
$ ! P1 is a first name
$ ! P2 is a last name
$ ! return P2 in the global symbol LAST_NAME
$ LAST_NAME == P2
$ EXIT
$ ! write LAST_NAME to the terminal
$ WRITE SYS$OUTPUT "LAST_NAME = ''LAST_NAME'"
LAST_NAME = CRAMER
|
DATA.COM ����������� NAME.COM��Ϊ NAME.COM ����һ��ȫ����NAME.COM �������շ���ȫ�ַ���
LAST_NAME�� NAME.COM ���ʱ��DCL ����ִ�� DATA.COM��ָ��ȫ�ַ��� LAST_NAME ��ȡ�����ա��������
NAME.COM ������һ�������ļ��С�Ϊ����������������������չʾ��
�������������У�REPORT.COM ���һ��������ļ�����������ļ����������� REPORT_FILE������ִ��һ���ѱ���д�� REPORT_FILE
�ij���:
$! Obtain the name of a file and then run
$! REPORT.EXE to write a report to the file
$!
$ INQUIRE FILE "Name of report file"
$ DEFINE/NOLOG REPORT_FILE 'FILE'
$ RUN REPORT
$ EXIT
|
�����������У�������� REPORT.COM ����һ�����̵��á����ù���ʹ������
REPORT_FILE �鿴��������ļ���
$! Command procedure that updates data files
$! and optionally prepares reports
$!
$ UPDATE:
.
.
.
$ INQUIRE REPORT "Prepare a report [Y or N]"
$ IF REPORT THEN GOTO REPORT_SEC
$ EXIT
$!
$ REPORT_SEC:
$ @REPORT
$ WRITE SYS$OUTPUT "Report written to ", F$TRNLNM("REPORT_FILE")
$ EXIT
|
14.7.4 �ض��������Ϣ
���¼�����������ض��������Ϣ��
����Ĭ�ϣ�������̰�ϵͳ������Ϣ���͵� SYS$ERROR
ָ�����ļ������������¶��� SYS$ERROR ��ϵͳ������Ϣָ����һ��ָ�����ļ���Ȼ������� SYS$ERROR �����¶��岻ͬ�� SYS$OUTPUT (��������¶��� SYS$OUTPUT����û�����¶��� SYS$ERROR)����ôʹ�ñ�ϵͳ������ʾ���Ƶ� DCL �����ӳ��ϵͳ��������ϵͳ���ؼ��ij�����Ϣ���͵� SYS$ERROR �� SYS$OUTPUT����ˣ��������ν��յ���Щ��Ϣ ---
һ������ SYS$ERROR ����ָ�����ļ��У�����һ������ SYS$OUTPUT
ָ�����ļ��С��ɹ���֪ͨ�;��漶����Ϣֻ���͵� SYS$OUTPUT
ָ�����ļ��������Ҫ���� DCL �����ϵͳ������Ϣ��Ҫȷ�� SYS$ERROR �� SYS$OUTPUT �����ܵ�ͬ���նˡ�
����������������һ���Լ���ӳ���Ҹ�ӳ������ SYS$ERROR����ô��ӳ���ϵͳ������Ϣֻ���͵� SYS$ERROR ָ�����ļ� --- ��ʹ
SYS$ERROR ��ͬ�� SYS$OUTPUT������Щ�ļ���ͬʱ��ֻ��ʹ�ñ�ϵͳ������ʾ���Ƶ� DCL �����ӳ��Ű���Ϣͬʱ���͵� SYS$ERROR ��
SYS$OUTPUT��
���������̽���Ŀ¼����Ϊ��������Ĭ�����õ����Ŀ¼��Ȼ��������Ŀ¼�е��ļ���Ϊ������ϵͳ������Ϣ�����������ʱ��
SYS$ERROR �� SYS$OUTPUT ����Ϊ���豸:
$ ! Purge files in a directory and suppress messages
$ !
$ SET DEFAULT 'P1'
$ ! Suppress messages
$ !
$ DEFINE/USER_MODE SYS$ERROR NL:
$ DEFINE/USER_MODE SYS$OUTPUT NL:
$ PURGE
$ EXIT
|
14.7.4.2 ����ϵͳ������Ϣ
Ҳ����ʹ�� SET MESSAGE ��������ϵͳ��Ϣ��ʹ������ /NOFACILITY��/NOIDENTIFICATION��/NOSEVERITY ��
/NOTEXT������������ʩ������Ϣ��ʶ�����ؼ�����Ϣ�ı���
�����������У���ʩ����ʶ�������Ժ��ı���Ϣ����ʱ���ƣ�ֱ�������ڶ��� SET MESSAGE
����:
$ ! Purge files in a directory and suppress system messages
$ !
$ SET DEFAULT 'P1'
$ ! Suppress system messages
$ !
$ SET MESSAGE/NOFACILITY -
/NOIDENTIFICATION -
/NOSEVERITY -
/NOTEXT
$ PURGE
$ SET MESSAGE/FACILITY -
/IDENTIFICATION -
/SEVERITY
/TEXT
$ EXIT
|
14.8 ��ȡ��д���ļ� (�ļ� I/O)
��������̶�ȡ��д���ļ��Ļ���������:
���� |
���� |
1
|
ʹ�� OPEN ������ļ���
�⽫��һ��������ֵ������ļ�������ָ���ļ��Ƿ��Ƕ�ȡ��д����ȡ��д�����ߡ������� READ��WRITE �� CLOSE ����ʹ������������鿴�ļ��� |
2
|
ʹ�� READ �� WRITE ����Ѽ�¼��ȡ��д�뵽�ļ���
������������ļ��ķ���ͨ�������һ��ѭ������ѭ���ڶ�ȡ��¼��������¼���Ұ��ĵļ�¼д�뵽ͬһ�ļ�����һ���ļ���
|
3
|
ʹ�� CLOSE ����ر��ļ���
�����û�а��� CLOSE
����ļ��ͱ��ִ�ֱ��ע��Ϊֹ�� |
ע��
����ע��ʱϵͳ������̲�����ļ����� SYS$INPUT��SYS$OUTPUT��SYS$COMMAND �� SYS$ERROR�����������Ϊ��ȡ��д�����Ƕ���ȷ�ش���Щ�ļ���
|
���¼�������:
- ʹ�� OPEN ����
- д���ļ�
- ʹ�� WRITE ����
- ʹ�� READ ����
- ʹ�ùر�����
- ���ļ�
- ���¼�¼
- �����µ�����ļ�
- Ϊ�ļ����Ӽ�¼
14.9 ʹ�� OPEN ����
OPEN �����˳����Ի�����˳���ļ��������ļ�������̲���ģ������Ľ����ڼ䣬���DZ��ִ���������ȷ�عر����� (ʹ��
CLOSE ����)���ڴ��ļ�ʱ�������ܵ� OpenVMS RMS ��ʹ������̲����ļ���Լ����
���ļ�ʱ��OPEN �����һ������
(ָ��Ϊ��һ������) ���������ļ� (ָ��Ϊ�ڶ�������)������������Ʒ�������������������� READ��WRITE �� CLOSE
����ʹ�����������������ļ���
������������OPEN ���������
INFILE ������ļ� DISK4:[MURPHY]STATS.DAT:
$ OPEN/READ INFILE DISK4:[MURPHY]STATS.DAT
|
ע��
OPEN �����е���������Ψһ����� OPEN
��������ã��������������ƺ�����ȷ�ģ���ô���� OPEN �����е�������Ҫ��ʾһ���������壬��ʹ�� SHOW LOGICAL ���
|
Ҫȷ��������̿��Դ�ȡ��ȷ���ļ���ʹ�������ļ�˵�� (���磬DISK4:[MURPHY]STATS.DAT) �����ڴ��ļ�֮ǰʹ�� SET DEFAULT ����ָ���ʵ����豸��Ŀ¼��
��Ҳ����ָ���ɹ������ļ���/SHARE �������������Ѵ��ļ������⣬�û������� DCL ���� TYPE �� SEARCH ��ȡ�ɹ������ļ���
OPEN/READ
������ļ�����������������ļ������Ѽ�¼ָ��������ļ��Ŀ�ʼ�����ļ���ȡʱ�����Զ�ȡ���Dz���д���¼��ÿ������ȡһ����¼��ָ���ƶ�����һ����¼��
�������������У�OPEN/READ ������ļ�
STATS.DAT����Ϊ����ļ��������� INFILE:
$ OPEN/READ INFILE DISK4:[MURPHY]STATS.DAT
$ READ_FILE:
$ READ/END_OF_FILE=DONE INFILE DATA
$ GOTO READ_FILE
$ DONE:
$ CLOSE INFILE
$ EXIT
|
������Ҫд�����ļ�ʱ��ʹ�� OPEN/WRITE ���OPEN/WRITE �����ӡ�ļ���ʽ����˳���ļ�������ļ��ļ�¼��ʽ�ǿɱ�ģ����̶��Ŀ��� (VFC)
��
2 �ֽڼ�¼��ͷ��/WRITE ���ʲ����� /APPEND ����һ��ʹ�á�
���ָ��һ���Ѿ����ڵ��ļ�����ô OPEN/WRITE �����һ�����ļ�����汾�ű������ļ��� 1 ������
�����������е�������̽���һ������д������ļ� (NAMES.DAT):
$ OPEN/WRITE OUTFILE DISK4:[MURPHY]NAMES.DAT
$ UPDATE:
$ INQUIRE NEW_RECORD "Enter name"
$ WRITE OUTFILE NEW_RECORD
$ IF NEW_RECORD .EQS. "" THEN GOTO EXIT_CODE
$ GOTO UPDATE
$ EXIT_CODE:
$ CLOSE OUTFILE
$ EXIT
|
OPEN/APPEND
����Ѽ�¼���ӵ������ļ���ĩ�ˡ�������Դ�һ�������ڵ��ļ����ǾͲ���һ�������Ҳ�������ļ���/APPEND ���ʲ�����
/WRITE ����һ��ʹ�á�
�����������У���¼�����ӵ������ļ� NAMES.DAT ��ĩ��:
$ OPEN/APPEND OUTFILE DISK4:[MURPHY]NAMES.DAT
$ INQUIRE NEW_RECORD "Enter name"
$ WRITE OUTFILE NEW_RECORD
.
.
.
$ CLOSE OUTFILE
|
OPEN/READ/WRITE ����Ѽ�¼ָ��������ļ��Ŀ�ʼ��������Զ�ȡ��һ����¼����ʹ������������ļ�ʱ��ֻ�����滻�����ȡ�ļ�¼������д���µļ�¼���ļ�β�����⣬�����ļ�¼�������滻�ļ�¼��ͬ���Ĵ�С��
�����������У���¼ָ��������ļ� STATS.DAT �Ŀ�ʼ��������Զ�ȡ��һ����¼:
$ OPEN/READ/WRITE FILE DISK4:[MURPHY]STATS.DAT
|
14.10 д���ļ�
Ҫд���ļ���ʹ�����¹���:
���� |
���� |
1
|
���ļ��Ա�д�롣
|
2
|
��һ����ſ�ʼд��ѭ���� �ļ� I/O
������һ��ѭ������ɣ�������д����ȡ������¼�� |
3
|
��ȡҪд������ݡ�
ʹ�� INQUIRE ����� READ ��������ݶ���һ�����š� |
4
|
�������ݡ�
���������ݵķ��š�����������Ϊ�� (���磬������� Return ������������û����������)���͵���д���ļ����ݵ�ĩ�ˣ�����Ӧ�ý���ѭ������������ |
5
|
������д���ļ���
ʹ�� WRITE ����ѷ��ŵ�ֵ (һ����¼)
д���ļ���
|
6
|
���ص�ѭ���Ŀ�ʼ��
��������ѭ���ڣ�ֱ��û�и��������д���ļ��� |
7
|
����ѭ�����ر��ļ���
|
����������̰�����д�����ļ� STATS.DAT�����������Ƶ��ļ����ڣ��ͽ���һ���°汾��
$ ! Write a file
$ ON ERROR THEN EXIT ! Exit if the command
$ ! ! procedure cannot
$ ! ! open the file
$ OPEN/WRITE IN_FILE DISK4:[MURPHY]STATS.DAT ! Open the file
$ ON CONTROL_Y THEN GOTO END_WRITE ! Close the file if you
$ ! ! quit execution with
$ ! ! Ctrl/Y
$ ON ERROR THEN GOTO END_WRITE ! Close the file if an
$ ! ! error occurs
$WRITE: ! Begin the loop
$ INQUIRE STUFF "Input data" ! Prompt for input
$ IF STUFF .EQS. "" THEN GOTO END_WRITE ! Test for the end of
$ ! ! the file
$ WRITE IN_FILE STUFF ! Write to the file
$ GOTO WRITE ! Go to the beginning
$END_WRITE: ! End the loop
$ ! !
$ CLOSE IN_FILE ! Close the file
|
14.10.1 ʹ��Ψһ�ļ��������ļ�
Ҫ��Ψһ�������ļ���ʹ�� F$SEARCH �ʷ������ɲ鿴��������Ƿ��Ѿ���Ŀ¼�С�(�й�
F$SEARCH �����飬����� OpenVMS DCL Dictionary �Դʷ�������������)
������������ʾ�û�����һ���ļ�����Ȼ��ʹ��
F$SEARCH
�ʷ�������Ĭ��Ŀ¼������������ơ�����Ѿ�����������Ƶ��ļ�����ѿ��ƴ��ݵ� ERROR_1��������̴�ӡ��Ϣ "The file
already exists"�����ѿ��Ʒ��ص���� GET_NAME��Ȼ�����������ʾ������һ���ļ�����������������ʾ:
$ ! FILES.COM
$ !
$GET_NAME:
$ INQUIRE FILE "File" ! Prompt the user for a file name
$ IF F$SEARCH (FILE) .NES. "" ! Make sure the file name is unique
$ THEN
$ WRITE SYS$OUTPUT "The file already exists"
$ GOTO GET_NAME
$ ELSE
$ OPEN/WRITE IN_FILE 'FILE' ! Open the file with WRITE access
$ ENDIF
.
.
.
$ EXIT
|
���¼����������ʹ�� WRITE ���
14.11.1 ָ������
����Ϊ WRITE ����ָ������ʱ����ѭ�� 12 ���������ַ�������ʽ���������·���ָ������:
- ָ�����ַ�������ʽд�����ݡ�WRITE �����Զ��滻���źʹʷ�������
- ��Ϊ�����ַ�����һ���ַ���д������ļ���WRITE
������������ŵ��ַ�����ִ�з����滻��
- ��������ַ����ͷ�������Ҫǿ�Ʒ����滻���������ַ������������ڣ��������������֮ǰʹ��˫ʡ�Ժű�ʶ����������֮�����һ����ʡ�Ժš�
��������ַ����ͷ���������һ�������ǣ����������֮ǰ��֮�����һ�����ţ���������ס����ķ��ţ�Ȼ��������ַ������������ڡ�����:
$ WRITE OUTFILE "Count is ",COUNT,"."
|
- �� WRITE ��������ʹ��ʡ�Ժ�ǿ�Ʒ����滻��
- ʹ��ʡ�Ժ�ǿ�����ַ����ڵķ����滻���ɽ�������ַ����ʹʷ�������
����
$! Define symbols
$!
$ CREATED = "File created April 15, 2002"
$ COUNT = 4
$ P4 = "fourth parameter"
$!
$! Open the file DATA.OUT for writing
$!
$ OPEN/WRITE OUTFILE DISK4:[MURPHY]DATA.OUT
$!
$ WRITE OUTFILE CREATED (1)
$ WRITE OUTFILE "CREATED" (2)
$!
$ WRITE OUTFILE "Count is ''COUNT'." (3)
$ WRITE OUTFILE P'COUNT' (4)
$!
$ WRITE OUTFILE "Mode is ''f$mode()'" (5)
$!
$ CLOSE OUTFILE
$ TYPE DISK4:[MURPHY]DATA.OUT [Return] (6)
File created April 15, 2002
CREATED
Count is 4.
fourth parameter
Mode is INTERACTIVE
$
|
����������ʱ��ע�����¼���:
- ָ��������Ϊ�ַ�������ʽд�롣
- ���ַ��� CREATED ��Ϊ�����ַ���д������ļ���
- ��������ַ����ͷ����� ��
- �� WRITE ��������ʹ��ʡ�Ժ�ǿ�Ʒ����滻������������У�WRITE �����滻���� COUNT
��ֵ�����ڽ����� (P4)ִ�з����滻��
- ��������ַ����ʹʷ�������
- ��ʾ����ǰ�� WRITE
����д������ļ� DATA.OUT �����ݡ�
14.11.2 ʹ�� /SYMBOL ����
�� WRITE ����д��һ����¼ʱ�����Ѽ�¼ָ�붨λ�ڸղ�д��ļ�¼֮��WRITE ����д��ļ�¼���Զ�� 2,048 ���ֽڳ���
���������������һ����������ʹ�� /SYMBOL ����д���¼:
- ��¼���ȱ� 1,024 ���ֽ�Ҫ����
- �� WRITE �����еı���ʽ�� 255 ���ֽ�Ҫ����
�й�д�볤��¼�����飬����� OpenVMS DCL Dictionary �� WRITE �����������
������ʹ�ô� /UPDATE ���ʵ� WRITE ������ļ�¼�������Dz����¼�¼��Ҫʹ�� /UPDATE
���ʣ�������ļ�����ȡ��д�롣
ʹ�� READ
�����ȡ��¼�������������ݸ�ֵ��һ�����š�������ʹ�� READ �����ȡС�ڻ���� 1,024 ���ַ����ļ�¼��Ҫ��һ���ļ��ж�ȡ���ݣ�ʹ�����¹���:
���� |
���� |
1
|
Ϊ��ȡ���ļ���
|
2
|
��һ����ſ�ʼ��ȡѭ����
�ļ� I/O
������ѭ������ɣ���������ȡ��д�뵥����¼�� |
3
|
������ļ���ȡ���ݡ�
ʹ�ô� /END_OF_FILE ���ʵ� READ �����ȡ��¼�������������ݸ�ֵ��һ�����š��������ļ�βʱ��/END_OF_FILE ����ʹ DCL �ѿ��ƴ��ݸ� /END_OF_FILE
����ָ���ı�š�һ�㣬��ָ����Ƕ�ȡѭ�������ı�š� |
4
|
�������ݡ�
˳��ض�ȡ�ļ�ʱ��������ǰ��¼Ȼ���ȡ��һ����¼��
|
5
|
���ص�ѭ���Ŀ�ʼ��
������ѭ���ڣ�ֱ���ﵽ�ļ�β�� |
6
|
����ѭ�����ر��ļ���
|
����������̶�ȡ�ʹ����ļ� STATS.DAT �е�ÿ����¼����������ظ���ִ�� READ
���ֱ�������ļ�����״̬��Ȼ���������ת�Ƶ����Ϊ
END_READ ����
$ OPEN/READ INFILE DISK4:[MURPHY]STATS.DAT !Open the file
$ !
$READ_DATA: !Begin the loop
$ READ/END_OF_FILE=END_READ INFILE RECORD !Read a record; test for
$ ! end of file
$ ! Process the data
.
.
.
$ GOTO READ_DATA !Go to the beginning
$ ! of the loop
$END_READ: !End of loop
$ CLOSE INFILE !Close the file
$ EXIT
|
Ϊ READ
����ָ��һ��������ʱ��������ͳ����������������ڵ�ǰ����ľֲ����ű������Ϊһ������ READ
����ʹ��ͬһ����������ôÿ�� READ �������¶��������������ֵ�����磬������������У�ÿ��ѭ��ʱ��READ ����������ļ� (STATS.DAT) ��ȡ�¼�¼��Ȼ����ʹ�������¼���¶������ RECORD
��ֵ��
����ȡ�ļ�ʱ��ͨ������ȡ������ÿ����¼��ֱ���ļ�β��ʹ�� READ ����� /END_OF_FILE ���ʿ��Թ���һ��ѭ������ѭ���д��ļ���ȡ��¼��������¼���ҵ���ɶ�ȡ���м�¼ʱ�˳�ѭ����
ע�⣬Ϊ /END_OF_FILE ����ָ���ı���� GOTO ����ָ���ı����ѭͬ���Ĺ���(�й�ʹ�� GOTO ��������飬������� 13 ����)
��ѭ����ʹ�� READ ����ʱ����Ӧ������ʹ�� /END_OF_FILE ���ʡ����� OPENVMS ��¼��������
(OpenVMS RMS) ����ָ���ļ������ij�������ʱ��������ͳ����ִ�е�ǰ ON ����ָ���ij������������磬OpenVMS RMS ���س���״̬ %RMS-E-EOF�����ʹ��������˳���������������ѽ����Լ��ij���������
|