
  PROCEDURE [INLINE] rfp$verify_caller_capability
    (    capabilities: ^array [1 .. * ] of ost$name;
         application_command: string ( * );
     VAR status: ost$status);

{       The purpose of this routine is to validate that the caller has at
{ least one of a list of specified_capabilities or is the system job.

    VAR
      index: integer,
      ignore_status: ost$status,
      user_has_capability: boolean;

    status.normal := TRUE;
    IF NOT jmp$system_job () THEN
      FOR index := LOWERBOUND (capabilities^) TO UPPERBOUND (capabilities^) DO
        avp$get_capability (capabilities^ [index], avc$user, user_has_capability, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        IF user_has_capability THEN
          RETURN;
        IFEND;
      FOREND;
      osp$set_status_abnormal (rfc$product_id, rfe$caller_not_privileged,
            application_command, status);
    IFEND;

  PROCEND rfp$verify_caller_capability;

?? PUSH (LISTEXT := ON) ??
*copyc avc$validation_field_names
*copyc avp$get_capability
*copyc jmp$system_job
?? POP ??
