OpenVMS �û��ֲ�
13.5.3 �� 3 ��: ����ѭ��
ѭ�����ظ�ִ��ֱ������������һ����䡣ѭ������������ʾ:
- ���û�������ֵ
- ��������
- �ظ�������ֱ���û��˳��������
Ҫ��дѭ������ѭ�������:
���� |
���� |
1
|
�ӱ�ſ�ʼѭ����
|
2
|
���Ա�����ȷ���Ƿ���Ҫִ��ѭ���е���� |
3
|
�������Ҫִ��ѭ������ǰȥѭ����ĩ�ˡ�
|
4
|
�����Ҫִ��ѭ������ִ����ѭ�����е����Ȼ�ص�ѭ���Ŀ�ʼ��
|
5
|
����ѭ����
|
��������չʾ CLEANUP.COM ��������е�ѭ��ʹ��:
$ GET_COM_LOOP:
$ INQUIRE COMMAND-
$ "Enter command (DELETE, DIRECTORY. EXIT, PRINT, PURGE, TYPE)"
$ IF COMMAND .EQS. "EXIT" THEN GOTO END_LOOP
$!
$! Execute if user entered DELETE
$ DELETE:
$ IF COMMAND .NES. "DELETE" THEN GOTO DIRECTORY
$ WRITE SYS$OUTPUT "This is the DELETE section."
$ GOTO GET_COM_LOOP
.
.
.
$ END_LOOP:
$ WRITE SYS$OUTPUT "Directory ''F$DIRECTORY()' has been cleaned"
$ EXIT
|
һ������ִ�У����ƾʹ��ݻ� GET_COM_LOOP
��ţ�ֱ���û����� EXIT ��������� EXIT ����ʱ������������һ����Ϣ����Ŀ¼�ѱ�������
Ҫ����������̣���ѭ�������:
���� |
���� |
1
|
������������Ҫ�˳������������̡�
|
2
|
���� EXIT �� STOP ���
|
13.5.4.1 ʹ�� EXIT ����
���� EXIT ����������������:
- ȷ�����̲�ִ��ijЩ��
- ������һ������ִ��·���Ĺ���
- �����������
������һ��ʹ�� EXIT
��������ӣ��ɱ���ִ��λ�ڹ���ĩ�˵ij����������г���:
.
.
.
$ EXIT ! End of normal execution path
$ ERROR_ROUTINE
.
.
.
|
������һ��ʹ�� EXIT ��������ӣ��ɽ�����һ������ִ��·���Ĺ���:
$ START:
$ IF P1 .EQS. "TAPE" .OR. P1 .EQS. "DISK" THEN GOTO 'P1'
$ INQUIRE P1 "Enter device (TAPE or DISK)"
$ GOTO START
$ TAPE: !Process tape files
.
.
.
$ EXIT
$ DISK: ! Process disk files
.
.
.
$ EXIT
|
��ÿ����� (TAPE �� DISK) ���������Ϊ�����ṩ��ͬ·������ DISK
���֮ǰ�� EXIT ����ȷ����ִ���� DISK ���֮������������ȷ���������ŵĹ��̷�֧��
�ڹ��̵�ĩ�˲���Ҫ EXIT �����Ϊ���̵��ļ��������(end-of-file)
����һ��DZ�ڵ� EXIT ���Ȼ����Compaq ������ʹ�� EXIT ���
����������У�����ʹ�� STOP ����ȷ������������س�������ֹ���̡���� STOP ��������ڽ���ִ�е���������У���ô���ƽ����ص� DCL
��������������������ģʽִ�У���������ҵ��ֹ��
��������и��߹�������������س�����ֹͣ:
$ ON SEVERE_ERROR THEN STOP
|
13.5.5 �� 5 ��: ���Ժ͵��Գ�����
һ��ʹ�ó�����д���룬��Ӧ�ò���������̵�ȫ������Ӧ�ò������п��ܵ�ִ��·����
��ѭ������̲��Ժ͵����������:
���� |
���� |
1
|
���������������ÿ����Ч�����Բ��Գ�������
|
2
|
������Ч�����Լ������Գ�������
|
3
|
ʹ�� EXIT �����˳������������ɲ��Գ�������
|
4
|
�����Ҫ����ʹ�� SET VERIFY��SET PREFIX ��
SHOW SYMBOL ���������Գ���
|
��������չʾ���ͨ�������ִ��ÿ�����������Ч����Ȼ���˳������������:
$ @CLEANUP
Enter command (DELETE, DIRECTORY, EXIT, PRINT, PURGE, TYPE): DELETE
This is the DELETE section.
Enter command (DELETE, DIRECTORY, EXIT, PRINT, PURGE, TYPE): DIRECTORY
This is the DIRECTORY section.
.
.
.
Enter command (DELETE, DIRECTORY, EXIT, PRINT, PURGE, TYPE): PRINF
You have entered an invalid command.
Enter command (DELETE, DIRECTORY, EXIT, PRINT, PURGE, TYPE): EXIT
$
|
13.5.5.1 �����������
����ʹ������������������������:
- SET VERIFY
��ʾÿ��Ȼ��ִ��֮��У�����ʱ���ɲ鿴�������ͷ�������������ڵ��С�����ʹ�� SET VERIFY ����Ĺؼ���ָ��ֻУ��ijЩ�����л������С� SET
VERIFY �������Ч��ֱ����ע�������� SET
NOVERIFY �������ʹ�� F$VERIFY �ʷ���������У�����á�(�� 15 ����������У�����õ����顣)
- SET PREFIX
���У����Ч��Ҳ����ʹ�� DCL ���� SET
PREFIX
�Թ�����־�ļ����ʱ�������������ÿ��������ǰ��������ִ��ʱ�䡣
- SHOW SYMBOL
SHOW SYMBOL �����������ȷ������������ڹ����ж���ġ�
����: ʹ�� SET VERIFY ������е���
��������������� END_LOP
ƴд������Ϊ����У�飬�ʿ��Ծ�ȷ�ز鿴���������:
$ SET VERIFY
$ @CLEAN
$ GET_COM_LOOP:
$ INQUIRE COMMAND -
"Enter command (DELETE, DIRECTORY, EXIT, PRINT, PURGE, TYPE)"
Enter command (DELETE, DIRECTORY, EXIT, PRINT, PURGE, TYPE): EXIT
$ IF COMMAND .EQS. "EXIT" THEN GOTO END_LOP
%DCL-W-USGOTO, target of GOTO not found -
check spelling and presence of label
|
Ҫ����������ɰѱ�Ÿ���Ϊ END_LOOP��
����: ʹ�� SET PREFIX ������е���
��������˵��ʱ�����ʹ��:
$ SET VERIFY
$ @TEST
$ SET DEFAULT SYS$LOGIN
$ SHOW DEFAULT
USER$:[SMYTHE]
$ SET PREFIX "(!5%T) "
$ @TEST
(17:52) $ SET DEFAULT SYS$LOGIN
(17:52) $ SHOW DEFAULT
USER$:[SMYTHE]
|
����: ʹ�� SHOW SYMBOL ������е���
��������չʾ SHOW SYMBOL �������������ȷ������ COMMAND �����������:
$ SET VERIFY
$ @CLEAN
$ GET_COM_LOOP:
$ INQUIRE COMMAND -
"ENTER COMMAND (DELETE, DIRECTORY, EXIT, PRINT, PURGE, TYPE)"
ENTER COMMAND (DELETE, DIRECTORY, EXIT, PRINT, PURGE, TYPE): EXIT
$ SHOW SYMBOL COMMAND
COMMAND = "EXIT"
$ IF COMMAND .EQS. "exit" THEN GOTO END_LOOP
.
.
.
|
SHOW SYMBOL ����չ�ַ��� COMMAND ��ֵΪ
"EXIT"����Ϊ INQUIRE �����Զ�������ת��Ϊ��д��ĸ����������� IF ���ʹ��Сд��ĸ�ַ��� "exit"����� DCL
ȷ����Щ�ַ����Dz�ͬ�ġ�Ҫ�����������ȷ���� IF ����е������ַ������Դ�д��ĸ��ʽд�롣����ַ��������ಿ�ֿ���ʹ�ô�д��ĸ��Ҳ����ʹ��Сд��ĸ��
���������ִ������У��ʱ��Ҳ�����ж�������������̲����� SET VERIFY ����� Ctrl/Y ��ϼ�ʱ��ͨ��������Щ�����������У��:
���� |
���� |
1
|
���� Ctrl/Y ���ж�ִ�С�
|
2
|
���� SET VERIFY ���
|
3
|
���� CONTINUE ����ɼ���ִ��������� (����У��)��
|
13.5.6 �� 6 ��: �����������
һ����ԣ�������̵�ִ�в�Ҫ�����û��Ľ���״̬����ˣ��������Ӧ�ð���һ��ѽ��̷��ص�����ԭʼ״̬�������������ͨ���DZ��Ϊ "CLEAN_UP"
�������г��֡���ͨ��������������ر��ļ�����������Ĭ���豸��Ŀ¼��
��ѭ������̿ɰ�����������ӵ��������:
���� |
���� |
1
|
��һ����ſ�ʼ��������г������� CLEAN_UP�� |
2
|
ʹ�� F$GETJPI �ʷ����������κδ��ļ��� |
3
|
ʹ�� DELETE �� PURGE ����ɾ���κ���ʱ���ص��ļ��� |
4
|
����������κ�Ĭ�� (�����豸��Ŀ¼)����ʹ�� SET DEFAULT ��������ǻָ������ǵ�ԭʼ״̬��
|
5
|
���� ON CONTROL_Y ���ȷ�����������ִ�С�
|
13.5.6.1 �ر��ļ�
��������κ��ļ������˳�����֮ǰȷ���ر����ǡ�����ʹ�ôʷ����� F$GETJPI ��鱣�ֽ��̵Ĵ��ļ����� (FILCNT)����� FILCNT
��������̵Ŀ�ʼ�ͽ�����һ���ģ���ô��֪���ѹر������ļ��� ��Щ���������ھ����û����д��ļ�:
$ FIL_COUNT = F$GETJPI ("","FILCNT")
.
.
.
$ IF FILCNT .NE. F$GETJPI ("", "FILCNT") THEN-
WRITE SYS$OUTPUT "WARNING -- file left open)
|
13.5.6.2 ɾ����ʱ�����ļ�
�����������ʱ�ļ�����ɾ�����ǡ�һ����ԣ�����������κ��ļ�����Ӧ�����������ɾ����ǰ�ĸ�������ɾ������δ�������ļ�֮ǰ��ȷ����Ҫɾ�����ǡ����磬�����������һ��������Ҫ���ݵ��ļ����Ϳ��Կ�ѡ�ؽ������������
�����������Ĭ���豸��Ŀ¼����ô���˳��������֮ǰ��������ԭʼĬ�ϡ�Ҫ����ԭʼ��Ĭ��Ŀ¼����ʹ�� F$ENVIRONMENT �ʷ������� DEFAULT �ؼ��֡���������̵�ĩ�ˣ�����һ�� SET DEFAULT ����ָ�������豸��Ŀ¼��
������ӵ�������չʾ����ͻָ��豸��Ŀ¼��Ĭ��ֵ:
$ SAV_DEFAULT = F$ENVIRONMENT ("DEFAULT")
.
.
.
$ SET DEFAULT 'SAV_DEFAULT'
|
13.5.6.3 ͨ�����ĵĽ�������
�±��г�����ͨ�����ĵĽ����������ʷ�������������������������ʷ����������������ָ���������:
���� |
���ڱ���Ĵʷ����� |
���ڻָ��Ĵʷ����� |
DCL ��ʾ
|
F$ENVIRONMENT
|
SET PROMPT
|
Ĭ�ϱ���
|
F$ENVIRONMENT
|
SET PROTECTION/DEFAULT
|
��Ȩ
|
F$SETPRV
|
F$SETPRV �� SET PROCESS/PRIVILEGES
|
�����ַ�
|
F$ENVIRONMENT
|
SET CONTROL
|
�� |
F$VERIFY
|
F$VERIFY
|
��Ϣ��ʽ
|
F$ENVIRONMENT
|
SET MESSAGE
|
��״̬
|
F$ENVIRONMENT
|
SET KEY
|
�й���Щ�ʷ����������������������
OpenVMS DCL Dictionary��
Ҫȷ����ʹ��������쳣����ҲҪִ����������������������ʹ��������俪ʼÿ�����:
$ ON CONTROL_Y THEN GOTO CLEANUP
|
�й�ʹ�� ON CONTROL_Y ��������飬������� 14 ����
����ȷ���һ�����ʱ�������¼�������������:
���� |
���� |
1
|
������������滻��һ����������� |
2
|
����������̣�ȷ��������ǡ���ز����� |
3
|
����б�Ҫ����������̡�
|
4
|
��һ���������ʱ��ת����һ�����Դ����ƣ�ֱ���滻���г�����
|
����: �������滻����
��������չʾ CLEANUP.COM �� TYPE �εĴ���:
$! Execute if user entered TYPE
$! TYPE:
$ IF COMMAND .NES. "TYPE THEN GOTO ERROR
$ INQUIRE FILE "File to type"
$ TYPE 'FILE'
$ GOTO GET_COM_LOOP
��
|
�⽫�滻���д���:
$ WRITE SYS$OUTPUT "This is the TYPE section."
|
����: CLEANUP.COM �������
����������ɵ� CLEANUP.COM ������̵�����:
$ GET_COM_LOOP:
$ INQUIRE COMMAND -
"Enter command (DELETE, DIRECTORY, EXIT, PRINT, PURGE, TYPE)"
$ IF COMMAND .EQS. "EXIT" THEN GOTO END_LOOP
$!
$!Execute if user entered DELETE
$ DELETE:
$ IF COMMAND .NES. "DELETE" THEN GOTO DIRECTORY
$ INQUIRE FILE "File to delete? "
$ DELETE 'FILE'
$ GOTO GET_COM_LOOP
$!
$!Execute if user entered DIRECTORY
$ DIRECTORY:
$ IF COMMAND .NES. "DIRECTORY" THEN GOTO PRINT
$ DIRECTORY
$ GOTO GET_COM_LOOP
$!
$!Execute if user entered PRINT
$ PRINT:
$ IF COMMAND .NES. "PRINT" THEN GOTO PURGE
$ INQUIRE FILE "File to print? "
$ PRINT SYS$OUTPUT 'FILE'
$ GOTO GET_COM_LOOP
$!
$!Execute if user entered PURGE
$ PURGE:
$ IF COMMAND .NES. "PURGE" THEN GOTO TYPE
$ PURGE
$ GOTO GET_COM_LOOP
$!
$!Execute if user entered TYPE
$ TYPE:
$ IF COMMAND .NES. "TYPE" THEN GOTO ERROR
$ INQUIRE FILE "File to type"
$ TYPE 'FILE'
$ GOTO GET_COM_LOOP
$!
$ ERROR:
$ WRITE SYS$OUTPUT "You entered an invalid command."
$ GOTO GET_COM_LOOP
$!
$ END_LOOP:
$ WRITE SYS$OUTPUT "Directory ''F$DIRECTORY()' has been cleaned."
$
$ EXIT
|
13.6 ִ���������
Ҫʹ����������У�����ִ������������ִ���������:
- ����һ�����������
- ��Զ�̽ڵ���
- ��Ϊ���������ʸ� DCL ����
- ������
- ��Ϊ������ҵ
- �ڴ��̺ʹŴ�����
���¼�������ÿһ�ַ�����
ͨ������ִ�й��� (@) ������Դ�һ�����������ִ����һ��������̡�
����������� WRITEDATE.COM �����������
GETDATE.COM:
$! WRITEDATE.COM
$!
$ INQUIRE TIME "What is the current time in hh:mm format?"
$ @GETDATE [JONES.COM]GETDATE.COM
|
13.6.2 ִ��Զ�̽ڵ��ϵ��������
������ʹ�� TYPE ����ִ����Զ�̽ڵ�����һ���ʻ�����Ŀ¼��������̡�����ִ���������:
- ��ʾ���ṩ�ط�Χ����ı��� OpenVMS ��ϵͳ�ķ���״̬
- �г�ע�ᵽԶ�̽ڵ���û�
���� TYPE ����ͺ���Ĵ�ȡ�����ַ�����ʹ�����¸�ʽ:
$ TYPE nodename"username password"::"TASK=command_procedure"
|
���� username �� password ��Զ�̽ڵ��ʻ����û��������롣
������������ʾע�ᵽ�����������פ����Զ�̽ڵ���û�:
$!SHOWUSERS.COM
$!
$ IF F$MODE() .EQS. "NETWORK" THEN DEFINE/USER SYS$OUTPUT SYS$NET
$ SHOW USERS
|
�����������У�SHOWUSERS.COM λ�ڽڵ� ORIOLE �ϵ� BIRD �ʻ��Ķ���Ŀ¼�У���������
BOULDER��SHOWUSERS.COM ��Զ�̽ڵ� ORIOLE ִ�� DCL ���� SHOW USERS��TYPE
������ʾ���Ա��ؽڵ��� (������������ type ������ն�)SHOWUSERS.COM
�����:
$ TYPE ORIOLE"BIRD BOULDER"::"TASK=SHOWUSERS"
�� 11-DEC-1999 17:20:13.30 ʱ�� OpenVMS �û�����
�û����� = 4�������� = 4
�û��� �ڵ� ���� �ӽ��� ����
FLICKER AUTOMA 2 1
ROBIN FABLES 1 2 1
DOVE MURMUR 1
DUCK FABLES 1 1
|
13.6.2.1 ��ȫע������
ʹ�ô���ȡ�����ַ����� TYPE ����ʱ���������뽫�������ն��ϡ�Ҫ��ȡ�ʵ��İ�ȫԤ����ʩ����� 18 ��������
�����Խ���һ��ָ�� DCL ������������ʵ�������̡�����һ�����������Ƶ��ʹ����һ����������ʱ������������������õġ�
�ڽ�Ҫ����ָ�����ʻ������������������ִ�й������� (@)��
���������̿�������Ϊ LINK ��������һ������:
$! This command procedure contains command
$! qualifiers for the LINK command.
$!
/DEBUG/SYMBOL_TABLE/MAP/FULL/CROSS_REFERENCE
|
ʹ�� DEFLINK.COM ָ�������ʣ��������������һ������ SYNAPSE.OBJ:
���������̿�������Ϊ DCL ����������� CHAP1.TXT��CHAP2.TXT �� CHAP3.TXT:
$! PARAM.COM
$! This command procedure contains a list of
$! parameters that can be used with commands.
$!
CHAP1, CHAP2, CHAP3
|
���������ָ��������� PARAM ����һ�в����������������У��������� PARAM.COM ���г����ļ���:
ע��
ʹ��ִ�й������� (@) ʱ��DCL ������ָ���ļ���Ϊ�������롣 |
|