
  PROCEDURE [INLINE] dmp$determine_queue_status
    (    file_kind: gft$file_kind;
         file_usage: pft$usage_selections;
         file_share_selections: pft$share_selections;
     VAR queue_status: gft$queue_status;
     VAR status: ost$status);

?? PUSH (LISTEXT := OFF) ??
?? RIGHT := 110 ??

{ Determine the queue_status of the file based on the file_type and the usage
{ and share selections under which the file is being attached.

    VAR
      modify_options: pft$usage_selections,
      other_writers_permitted: boolean,
      sharing_permitted: boolean,
      usage_has_write: boolean;

    status.normal := TRUE;
    modify_options := $pft$usage_selections [pfc$shorten, pfc$append, pfc$modify];

    CASE file_kind OF
    = gfc$fk_job_local_file, gfc$fk_unnamed_file =
      queue_status := gfc$qs_job_working_set;

    = gfc$fk_device_file, gfc$fk_catalog, gfc$fk_global_unnamed =
      queue_status := gfc$qs_global_shared;

    = gfc$fk_job_permanent_file =
      sharing_permitted := file_share_selections <> $pft$share_selections [];
      usage_has_write := (modify_options * file_usage) <> $pft$usage_selections [];
      other_writers_permitted := (modify_options * file_share_selections) <> $pft$share_selections [];

      IF NOT mmv$shared_pages_in_jws THEN
        queue_status := gfc$qs_global_shared;
      ELSE
        IF NOT sharing_permitted THEN
          queue_status := gfc$qs_job_working_set;
        ELSEIF (sharing_permitted) AND (NOT usage_has_write) AND (NOT other_writers_permitted) THEN
          queue_status := gfc$qs_job_shared;
        ELSE
          queue_status := gfc$qs_global_shared;
        IFEND;
      IFEND;
    ELSE
      osp$set_status_abnormal (dmc$device_manager_ident, dme$unrecognizable_case_select,
            'Invalid file type - dmp$determine_queue_status.', status);
    CASEND;

  PROCEND dmp$determine_queue_status;

*copyc pft$usage_selections
*copyc pft$share_selections
*copyc dmt$error_condition_codes
*copyc gft$file_kind
*copyc gft$queue_status
*copyc ost$status
*copyc osp$set_status_abnormal
*copyc mmv$shared_pages_in_jws
?? POP ??
