OpenVMS �û��ֲ�
15.2.2 ����Ĭ���ļ�����
��������Ҫ����������и���Ĭ���ļ�������������������ڹ���ִ��ʱ���Ľ����ļ���Ĭ�ϱ������ù�������ֹ֮ǰ�ָ���ԭʼ��Ĭ���ļ�������
$ SAVE_PROT = F$ENVIRONMENT("PROTECTION")
$ SET PROTECTION = (SYSTEM:RWED��OWNER:RWED��GROUP��WORLD)/DEFAULT
.
.
.
$ SET PROTECTION=('SAVE_PROT')/DEFAULT
$ EXIT
|
ע�⣬F$ENVIRONMENT ����ʹ�� SET PROTECTION
����Ҫ��������Ĭ�ϱ������롣�������� SET PROTECTION ����ʹ�÷���
SAVE_PROT �ɻָ���ԭʼ��Ĭ���ļ�������
������ʹ�����´ʷ���������й�ϵͳ����Ϣ:
F$CONTEXT
|
ָ��ʹ�� F$PID ������ѡ����F$CONTEXT �������� F$PID ��������й��κ� OpenVMS ��ϵͳ�ڵ��ϵĽ�����Ϣ�� |
F$CSID
|
����һ�� OpenVMS Cluster ��ʶ�ţ����Ҹ���ָ��ϵͳ�� OpenVMS Cluster
�ڵ��б��е�ǰλ�õ������ķ��š� |
F$GETQUI
|
���������й���Ϣ�����С���ǰ����Щ�����ϵ������ʹ�ӡ��ҵ����ʽ���塢�ͱ�����ϵͳ��ҵ�����ļ��е��������塣 |
F$GETSYI
|
�����й����ı���ϵͳ���й�����
OpenVMS ��ϵͳ�ϵĽڵ� (�������ϵͳ�� OpenVMS Cluster ��һ����) ����Ϣ��
|
F$IDENTIFIER
|
��������ʽ�ı�ʶ��ת��Ϊ���ָ�ʽ�����ߴ����ָ�ʽת��Ϊ������ʽ��
|
F$MESSAGE
|
������״̬���������Ϣ�ı��� |
F$PID
|
�������������Ľ��̵Ľ��̱�ʶ (PID) �š�
|
F$TIME
|
���ص�ǰ���ں�ʱ�䡣
|
15.3.1 ȷ������ OpenVMS �ؽڵ���
�������ϵͳ�� OpenVMS �ػ�����һ���֣��ڴ�������ע�ᵽ���ͬ�Ľڵ㣬��ô��������ָ����ǰʹ���ĸ��ڵ�� DCL ��ʾ��Ҫ������һ�㣬��
F$GETSYI ����������ע�������������ȷ������ڵ�����Ȼ��ʹ�� SET PROMPT �������ö�����ڵ��Ψһ��ʾ��
�����Ҫ����ʾ�ַ�����ֻʹ��һ���ֽڵ�������ôʹ�� F$EXTRACT ������ȡ�ʵ����ַ����йس�ȡ�ַ������飬�����
15.6.2 ����
�����������У����� NODE ����Ϊ
FF$GETSYI("NODENAME")��Ȼ�������ڵ���������ʾ:
$ NODE = F$GETSYI("NODENAME")
$ SET PROMPT = "''NODE'$ "
.
.
.
|
15.3.2 ��ö�����Ϣ
������ʹ�� F$GETQUI ��������й������ʹ�ӡ���е��������͵���Ϣ��Ҫ����й���ҵ�Ͷ������ļ�����Ϣ������������ҵ�ж���ȡ��SYSPRV ��Ȩ��
OPER ��Ȩ��
��������չʾ���ȷ��������
VAX1_BATCH
�Ƿ���ֹͣ״̬�����ص�ֵ��������Ǽ١����������в��Ǵ���ֹͣ״̬��������̾Ϳɰ���ҵ�ύ��������С�
$ QSTOPPED = F$GETQUI("DISPLAY_QUEUE"��"QUEUE_STOPPED"��"VAX1_BATCH")
$ IF QSTOPPED THEN GOTO NOBATCH
$ SUBMIT/QUEUE=VAX1_BATCH TEST.COM
$ NOBATCH:
.
.
.
|
15.3.3 ��ý�����Ϣ
������ʹ�� F$PID
��������������������н��̵Ľ��̱�ʶ (PID)
������������� PID ��:
- ����� WORLD ��Ȩ�����Լ��ϵͳ�ϵ����н���
- ����� GROUP ��Ȩ�����Լ�����ϵ����н���
- �����û�� GROUP Ҳû�� WORLD
��Ȩ��ֻ���Լ���Լ��Ľ���
�ڻ�� PID ��֮��������ʹ�� F$GETJPI ������ý��̵��ض���Ϣ��
��������չʾ��λ�ú���ʾ���������Ľ��̵� PID ��:
$ ! Display the time when this procedure
$ ! begins executing
$ WRITE SYS$OUTPUT F$TIME()
$ !
$ CONTEXT = ""
$ START:
$ ! Obtain and display PID numbers until
$ ! F$PID returns a null string
$ !
$ PID = F$PID(CONTEXT)
$ IF PID .EQS. "" THEN EXIT
$ WRITE SYS$OUTPUT "Pid --- ''PID'"
$ GOTO START
|
ϵͳʹ�÷��� CONTEXT ����ָ���ϵͳ PID
���б���ָ�롣ÿ��ѭ��ʱ��ϵͳ����ָ���ҳ����б�����һ�� PID
�š�����ʾ���� PID ��֮���˳�������̡�
�����������У�������ʾÿ�����̵� PID �ź� UIC:
$ CONTEXT = ""
$ START:
$ ! Obtain and display PID numbers and UICs
$ !
$ PID = F$PID(CONTEXT)
$ IF PID .EQS. "" THEN EXIT
$ UIC = F$GETJPI(PID,"UIC")
$ WRITE SYS$OUTPUT "Pid --- ''PID' Uic--- ''UIC' "
$ GOTO START
|
ע�⣬��
F$GETJPI ���������� WRITE �����У������������������̣�������ʾ:
$ CONTEXT = ""
$ START:
$ PID = F$PID(CONTEXT)
$ IF PID .EQS. "" THEN EXIT
$ WRITE SYS$OUTPUT "Pid --- ''PID' Uic --- ''F$GETJPI(PID,"UIC")'"
$ GOTO START
|
15.3.4 F$CONTEXT �ʷ�����
Ҫ��� OpenVMS ��ϵͳ�κνڵ��ϵĽ�����Ϣ��ʹ�� F$CONTEXT ������
�����������У����� F$CONTEXT ����������ѡ����:
$!Establish an error and Ctrl/Y handler
$!
$ ON ERROR THEN GOTO error
$ ON CONTROL_Y THEN GOTO error
$!
$ ctx = ""
$ temp = F$CONTEXT ("PROCESS", ctx, "NODENAME", "*","EQL") (1)
$ temp = F$CONTEXT ("PROCESS", ctx, "USERNAME", "M*,SYSTEM","EQL") (2)
$ temp = F$CONTEXT ("PROCESS", ctx, "CURPRIV", "SYSPRV,OPER", "ALL") (3)
$!
$!Loop over all processes that meet the selection criteria.
$!Print the PID number and the name of the image for each process.
$!
$loop: (4)
$ pid = F$PID(ctx)
$ IF pid .EQS. ""
$ THEN
$ GOTO endloop
$ ELSE
$ image = F$GETJPI(pid,"IMAGNAME") (5)
$ SHOW SYMBOL pid
$ WRITE SYS$OUTPUT image (6)
$ GOTO loop
$ ENDIF
$!The loop over the processes has ended.
$!
$endloop:
$!
$ EXIT
$!
$!Error handler. Clean up the context's memory with
$!the CANCEL selection item keyword.
$!
$error:
$ IF F$TYPE(ctx) .eqs. "PROCESS_CONTEXT" THEN - (7)
-$ temp = F$CONTEXT ("PROCESS", ctx, "CANCEL") (8)
$!
$ EXIT
|
����������ʱ��ע�����¼���:
- ��һ�ε����������� OpenVMS ��ϵͳ�е����нڵ㡣
- �ڶ��ε�������ֻ�������û�����ʼ�� M ������ SYSTEM �Ľ��̡�
- �����ε���ֻѡ����Щ�䵱ǰ��Ȩ���� SYSPRV (ϵͳ��Ȩ) �� OPER (����Ա) ���ҿ�����������Ȩ���Ľ��̡�
- �ڱ��
"loop" �� "endloop" ֮��������в��ϵص��� F$PID ��������� F$CONTEXT
�������õ���Ľ��̡�
- �ڼ���ÿ�� PID
��֮���� F$GETJPI �����ڽ��������е�ӳ������
- ������������ʾӳ������ơ�
- �ڳ����� Ctrl/Y ����������£��ѿ��ƴ��ݸ� error����������б�Ҫ�ر������ġ�
- ע�⣬����������
PROCESS_CONTEXT��������������������ͣ�������� F$CONTEXT
��ȡ��ѡ�������������Ų�������
PROCESS_CONTEXT����û���� F$CONTEXT
������ѡ��������������� F$PID
һ��ʹ�ã�ֱ����������ֱ����������б���ĩ�ˡ�
15.4 ����й��ļ����豸����Ϣ
������ʹ�����´ʷ���������ļ����豸����Ϣ:
F$DEVICE
|
����ϵͳ�Ϸ���ָ��ѡ����������豸���豸�� |
F$FILE_ATTRIBUTES
|
�����ļ����Ե���Ϣ |
F$GETDVI
|
����ָ���豸����Ϣ |
F$PARSE
|
�����ļ�˵�������ҷ��������һ���ֶλ����ֶ� |
F$SEARCH
|
Ϊ�����ļ�����Ŀ¼
|
15.4.1 �����豸
Ҫʹ��ϵͳ���� $GETDVI
����ض��豸����Ϣ���������ṩ�豸����������������֪���豸��������ʹ�ôʷ����� F$DEVICE ���ҡ�
F$DEVICE
�������������豸�����豸������豸���͵�ͨ���������Ҫ�����豸������������Ҳ����ָ���豸���ࡣ
��������������̵�ѭ����ʹ�� F$DEVICE ��������ƥ��ָ��ѡ������豸����ÿ��ִ�� F$DEVICE ����ʱ��������ϵͳ��ƥ��ѡ�������һ���豸��ע�⣬���ǰ��ض������豸���ڷ������һ���豸��֮����һ�� F$DEVICE �������÷��ؿմ���
������������ʾ�ڵ�Ԫ 0 ������ RA60 �豸���豸��:
$ START:
$ DEVICE_NAME = F$DEVICE("*0:","DISK","RA60")
$ IF DEVICE_NAME .EQS. "" THEN EXIT
$ SHOW SYMBOL DEVICE_NAME
$ GOTO START
|
15.4.2 ����Ŀ¼�е��ļ�
�ڴ����ļ�֮ǰ���������Ӧ��ʹ�� F$SEARCH ���������ļ��Ƿ���ڡ����磬�����������ʹ�� F$PARSE ��һ���豸��Ŀ¼�ַ���Ӧ�����ļ� STATS.DAT��Ȼ�ù���ʹ�� F$SEARCH ����ȷ�� STATS.DAT �Ƿ������ DISK3:[JONES.WORK]
�С�����ǣ���ô��������̴�������ļ����������������ʾ������һ���ļ���
$ FILE = F$PARSE("STATS.DAT","DISK3:[JONES.WORK]",,,"SYNTAX_ONLY")
$ IF F$SEARCH(FILE) .EQS. "" THEN GOTO GET_FILE
$ PROCESS_FILE:
.
.
.
$ GET_FILE:
$ INQUIRE FILE "File name"
$ GOTO PROCESS_FILE
|
��ȷ���ļ�����֮�ù��̿���ʹ�� F$PARSE
�� F$FILE_ATTRIBUTES �����������ļ��ĸ�����Ϣ������:
$ IF F$SEARCH("STATS.DAT") .EQS. "" THEN GOTO GET_FILE
$ PROCESS_FILE:
$ NAME = F$PARSE("STATS.DAT",, "NAME")
.
.
.
$ GET_FILE:
$ INQUIRE FILE "File name"
$ GOTO PROCESS_FILE
|
15.4.3 ɾ���ļ��ľɰ汾
���������̽�����һ���ڹ�����ֹ������Ҫ���ļ�����ô���˳�����֮ǰɾ���������Щ�ļ���ʹ�� PURGE �����ɾ���ļ��ij�����һ��֮�����а汾��ʹ�ô��汾�ŵ� DELETE �����ɾ���ļ����ض��汾�������ڰ汾�ֶ�ʹ��ͨ�����ɾ���ļ������а汾�� �����������ʹ�� DELETE
����ʱ��Ҫ���������Ϣ����ʹ�� F$SEARCH
��������֤�ļ�����Ȼ��ɾ��֮�����磬�����Ա�дһ��������̣�ֻ��ijЩģ��ִ��ʱ�Ž����ļ� TEMP.DAT������������ֻ�� TEMP.DAT ����ʱ�ŷ��� DELETE ����:
$ IF F$SEARCH("TEMP.DAT") .NES. "" THEN DELETE TEMP.DAT;*
|
15.5 ��������
������ʹ�����´ʷ�������������:
F$LOGICAL
|
���������ĵȼ۴���
|
F$TRNLNM
|
���������ĵȼ۴�����������ԡ� |
ע��
F$TRNLNM ����ȡ�� OpenVMS ����ϵͳ���ڰ汾ʹ�õ� F$LOGICAL
��������Ӧ��ʹ��
F$TRNLNM (���� F$LOGICAL)
��ȷ���������ʹ�õ�ǰϵͳ���������������� |
��Щ�����£���������Ҫ�����������ʹ�����������Ƿ�����Ϊ�����������ȡ�����ȴ�ȡ DCL
���Ÿ����ס���ˣ�Ҫ����Ϣ���ݸ�������������еij���ʹ�÷��Ż����Ϣ��Ȼ��ʹ�� DEFINE �� ASSIGN
����ʹ���ŵ�ֵ��ͬ��һ��������
��Ҳ����ʹ�� F$TRNLNM
����ȷ��������ֵ��Ȼ������ֵ����һ�����š�
�������Ӳ������� NAMES �Ƿ��ѱ����塣����Ѷ��壬��ô�������� PAYROLL.EXE�������̻�÷��� FILE ��ֵ������ʹ�����ֵ���������� NAMES��PAYROLL.EXE ʹ������ NAMES
���ù�Ա�����ļ���
$ ! Make sure that NAMES is defined
$ IF F$TRNLNM("NAMES") .NES. "" THEN GOTO ALL_SET
$ INQUIRE FILE "File with employee names"
$ DEFINE NAMES 'FILE'
$ !
$ ! Run PAYROLL, using the file indicated by NAMES
$ ALL_SET:
$ RUN PAYROLL
.
.
.
|
���������̶����ڳ��� PAYROLL ��ʹ�õ�����:
$ DEFINE NAMES DISK4:[JONES]EMPLOYEE_NAMES.DAT
$ RUN PAYROLL
.
.
.
$ WRITE SYS$OUTPUT "Finished processing ",F$TRNLNM("NAMES")
|
��������̵�ĩ�ˣ�WRITE ������ʾһ����Ϣָ���ļ��ѱ�������
������ʹ�����´ʷ����������ַ���:
F$CVTIME
|
����ʱ���ַ�������Ϣ |
F$EDIT
|
�༭�ַ���
|
F$ELEMENT
|
����Ԫ�ر�������ָ����ַ����г�ȡԪ�� |
F$EXTRACT
|
��ȡһ���ַ���
|
F$FAO
|
��ʽ������ַ��� |
F$LENGTH
|
ȷ���ַ����ij��� |
F$LOCATE
|
���ַ������ҳ�һ���ַ����Ӵ�����������ƫ��
|
15.6.1 ȷ���ַ������ַ��Ƿ����
����ַ�����һ����ͨԭ����ȷ��һ���ַ� (���Ӵ�) �Ƿ�������ַ����С�Ҫ������һ�㣬ʹ�� F$LENGTH �� F$LOCATE ��������� F$LOCATE
�������ص�ֵ����
F$LENGTH �������ص�ֵ����ôҪѰ�ҵ��ַ������֡�
���¹�����Ҫһ�������汾�ŵ��ļ�����Ҫȷ���Ƿ����һ���汾�ţ��ù��̲������ļ����İ汾��֮ǰ�ֺ� (;) �Ƿ�������û�������ļ����С�
$ INQUIRE FILE "Enter file (include version number)"
$ IF F$LOCATE(";", FILE) .EQ. F$LENGTH(FILE) THEN -
GOTO NO_VERSION
.
.
.
|
F$LOCATE �������طֺŵ�ƫ�ơ�ƫ�ƿ�ʼ�� 0�����������ֺ����ַ����е���λ�ַ���F$LOCATE �������������� 0������ֺŲ��������ַ����У���ô F$LOCATE ��������һ��ƫ�ƣ��������ַ����е����һ���ַ���ƫ�Ƽ� 1�����ֵ�� F$LENGTH
���صij���һ�������������� 1 ��ʼ���ַ������ȡ�
Ҫ��ȡһ�����ַ�����ʹ�� F$EXTRACT ������ F$ELEMENT ������ʹ�� F$EXTRACT
������ȡ��ʼ���Ѷ���ƫ�Ƶ��Ӵ���ʹ�� F$ELEMENT
������ȡ�����������֮��IJ����ַ�����Ҫʹ����Щ�����е�����һ��������֪��Ҫ�����ַ�����һ���ʽ��ע�⣬����Ҫʹ�� F$EXTRACT �� F$ELEMENT
�����ļ�˵����ʱ���ַ�������Ϊ���棬ʹ�� F$PARSE ��
F$CVTIME ��ȡ�ļ�˵����ʱ���ַ�����Ҫ�֡�
��Ҳ�����ڳ�ȡ��ͬʱȷ�������ij��ȡ�
���һ���ַ��������ָ����ַ�����ͬ���ֵĶ��������ʹ�� F$ELEMENT
������ȡ����Ҫ�IJ��֡����ַ����г�ȡ�ڶ���֮��IJ��֣�����ʹ�� F$ELEMENT ��ò�ͬ���͵Ĵ�ȡȨ��Ҫȷ��ϵͳ��ȡȨ����õ�һ��Ԫ�أ�Ҫȷ��ӵ���ߴ�ȡȨ����õڶ���Ԫ�أ��Դ����ơ�ע�⣬ʹ�� F$ELEMENT
����ʱ��Ԫ�غ��뿪ʼ���㡣�������ԭ��ʹ������ 3 ָ���� 4 ��Ԫ�ء�
�����������ʹ�� F$EXTRACT ������ȡ UIC
���鲿�֡�����������ִ�в�ͬ���ϵ�������û��� UIC
�鶨��
$ UIC = F$USER()
$ GROUP_LEN = F$LOCATE(",",UIC) - 1
$ GROUP = F$EXTRACT(1,GROUP_LEN��UIC)
$ GOTO 'GROUP'_SECTION
.
.
.
$ WRITERS_SECTION:
.
.
.
$ MANAGERS_SECTION:
.
.
.
|
���ȣ�����ʹ�� F$USER ����ȷ�� UIC��Ȼ�ù���ʹ�� F$LOCATE
�ҳ����ŵ�ƫ��ȷ���������ȡ����Ű���� UIC �û����ַָ����������������źͶ���֮����κ��ַ����������֡����磬����
UIC [WRITERS,SMITH] �������� WRITERS��
��ȷ������֮�ù���ʹ�� F$EXTRACT ������ȡ������������ʼ��ƫ�� 1 ���������ڶ���֮ǰ���ַ�����ù���ֱ��ִ�е��ʵ��ı�š�
��������չʾ����ڳ�ȡ��ͬʱȷ�������ij���:
$ UIC = F$USER()
$ GROUP = F$EXTRACT(1��F$LOCATE(",",UIC) - 1, UIC)
$ GOTO 'GROUP'_SECTION
|
��������չʾ����ö��ŷָ��������е�ÿ����ȡ����:
$ PROT = F$ENVIRONMENT("PROTECTION")
$ SHOW SYMBOL PROT
PROT = "SYSTEM=RWED, OWNER=RWED, GROUP=RE, WORLD"
|
����������е������Ĭ�ϱ������г�ȡȫ���û���ȡ���� (�� 4 ��Ԫ��):
$ PROT = F$ENVIRONMENT("PROTECTION")
$ WORLD_PROT = F$ELEMENT(3,",",PROT)
.
.
.
|
F$ELEMENT ���������ڵ������ź��ַ���ĩ��֮���ÿ���ַ���������������Ĭ�ϱ�������ȫ���û��Ķ���ȡ����ô�������ַ��� "WORLD=R"��
�ڻ��ȫ���û���ȡ�ַ���֮������Ҫ��һ�������������:
$ PROT = F$ENVIRONMENT("PROTECTION")
$ WORLD_PROT = F$ELEMENT(3,",",PROT)
$ IF F$LOCATE("=", WORLD_PROT) .EQ. F$LENGTH(WORLD_PROT) -
THEN GOTO NO_WORLD_ACCESS
.
.
.
|
|