?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE Statistics Facility: File Space Limits Manager' ??
MODULE sfm$file_space_limits_manager;

{ PURPOSE:
{   This module contains the ring 1 interfaces for changing and retrieving
{   file space limit information in/from the job control block and
{   initiated job list.

?? PUSH (LISTEXT := ON) ??
?? NEWTITLE := 'Global Declarations referenced by this module.', EJECT ??
*copyc avc$system_defined_limit_names
*copyc sfe$limit_condition_codes
*copyc sft$counter
*copyc sft$file_space_limit_kind
?? POP ??
*copyc jmv$jcb
?? OLDTITLE ??
?? NEWTITLE := '[XDCL, #GATE] sfp$change_file_space_limit', EJECT ??
{  PURPOSE:
{    This procedure is used to initialize or change the permanent or
{    temporary file space limit information in the job control block
{    and/or initiated job list.
{
{  DESIGN:
{    The specified values are used to replace the current values for
{    the specified parameters.  If a NIL value is specified the
{    current value is left unchanged.

  PROCEDURE [XDCL, #GATE] sfp$change_file_space_limit
    (    file_space_limit_kind: sft$file_space_limit_kind;
         job_warning_limit: ^sft$counter;
         job_maximum_limit: ^sft$counter;
         accumulator: ^sft$counter;
         job_warning_checking: ^boolean);

    IF file_space_limit_kind = sfc$perm_file_space_limit THEN

{ The request is for a change to permanent file space limits.

      IF job_warning_limit <> NIL THEN
        jmv$jcb.perm_file_job_warning_limit := job_warning_limit^;
      IFEND;
      IF job_warning_checking <> NIL THEN
        jmv$jcb.perm_file_job_warning_checking := job_warning_checking^;
      IFEND;
      IF job_maximum_limit <> NIL THEN
        jmv$jcb.perm_file_job_maximum_limit := job_maximum_limit^;
      IFEND;
      IF accumulator <> NIL THEN
        jmv$jcb.ijle_p^.statistics.perm_file_space := accumulator^;
      IFEND;

    ELSE {file_space_limit_kind = sfc$temp_file_space_limit}

{ The request is for a change to temporary file space limits.

      IF job_warning_limit <> NIL THEN
        jmv$jcb.temp_file_job_warning_limit := job_warning_limit^;
      IFEND;
      IF job_warning_checking <> NIL THEN
        jmv$jcb.temp_file_job_warning_checking := job_warning_checking^;
      IFEND;
      IF job_maximum_limit <> NIL THEN
        jmv$jcb.temp_file_job_maximum_limit := job_maximum_limit^;
      IFEND;
      IF accumulator <> NIL THEN
        jmv$jcb.ijle_p^.statistics.temp_file_space := accumulator^;
      IFEND;
    IFEND;

  PROCEND sfp$change_file_space_limit;
?? OLDTITLE ??
?? NEWTITLE := '[XDCL, #GATE] sfp$get_file_space_limit', EJECT ??
{  PURPOSE:
{    This procedure is used to get the current value for the
{    specified file space limit.
{
{  DESIGN:
{    This procedure returns either the permanent file space limit values
{    or the temporary file space limit values from the JCB/IJL.

  PROCEDURE [XDCL, #GATE] sfp$get_file_space_limit
    (    file_space_limit_kind: sft$file_space_limit_kind;
     VAR job_warning_limit: sft$counter;
     VAR job_maximum_limit: sft$counter;
     VAR accumulator: sft$counter);

    IF file_space_limit_kind = sfc$perm_file_space_limit THEN
      job_warning_limit := jmv$jcb.perm_file_job_warning_limit;
      job_maximum_limit := jmv$jcb.perm_file_job_maximum_limit;
      accumulator := jmv$jcb.ijle_p^.statistics.perm_file_space;
    ELSE {file_space_limit_kind = sfc$temp_file_space_limit}
      job_warning_limit := jmv$jcb.temp_file_job_warning_limit;
      job_maximum_limit := jmv$jcb.temp_file_job_maximum_limit;
      accumulator := jmv$jcb.ijle_p^.statistics.temp_file_space;
    IFEND;

  PROCEND sfp$get_file_space_limit;
?? OLDTITLE ??
MODEND sfm$file_space_limits_manager;
