[an error occurred while processing this directive]
Software  >  OpenVMS Systems > Documentation > 731final > 6489 > hanzi

HP OpenVMS Systems Documentation

Content starts here

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 �ɻָ���ԭʼ��Ĭ���ļ�������

15.3 ����й�ϵͳ����Ϣ

������ʹ�����´ʷ���������й�ϵͳ����Ϣ:

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

����������ʱ��ע�����¼���:

  1. ��һ�ε����������� OpenVMS ��ϵͳ�е����нڵ㡣
  2. �ڶ��ε�������ֻ�������û�����ʼ�� M ������ SYSTEM �Ľ��̡�
  3. �����ε���ֻѡ����Щ�䵱ǰ��Ȩ���� SYSPRV (ϵͳ��Ȩ) �� OPER (����Ա) ���ҿ�����������Ȩ���Ľ��̡�
  4. �ڱ�� "loop" �� "endloop" ֮��������в��ϵص��� F$PID ��������� F$CONTEXT �������õ�׼��Ľ��̡�
  5. �ڼ���ÿ�� PID ��֮�󣬵��� F$GETJPI �����ڽ��������е�ӳ������
  6. ������������ʾӳ������ơ�
  7. �ڳ����� Ctrl/Y ����������£��ѿ��ƴ��ݸ� error����������б�Ҫ�͹ر������ġ�
  8. ע�⣬���������� 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 ������ʾһ����Ϣָ���ļ��ѱ�������

15.6 �����ַ���

������ʹ�����´ʷ����������ַ���:

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 ��ʼ���ַ������ȡ�

15.6.2 ��ȡ�����ַ���

Ҫ��ȡһ�����ַ�����ʹ�� 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
   .
   .
   .


ǰҳ ��ҳ Ŀ¼ ����