?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE: Program_management - User time requests', EJECT ??
MODULE pmm$user_time_requests;


?? NEWTITLE := 'Global Declarations Referenced by This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc pme$program_services_exceptions
?? POP ??
*copyc clp$convert_date_time_to_string
*copyc clp$convert_string_to_date_time
*copyc osp$set_status_condition
*copyc osp$verify_system_privilege
*copyc pmp$compute_day_of_week
*copyc pmp$get_compact_date_time
*copyc pmp$get_default_date_time_form
?? OLDTITLE ??
?? NEWTITLE := '[XDCL] pmp$change_legible_date_format', EJECT ??
*copy pmh$change_legible_date_format

  PROCEDURE [XDCL] pmp$change_legible_date_format
    (    new_format: ost$date_formats;
     VAR date: ost$date;
     VAR status: ost$status);

    VAR
      date_string: ost$string,
      date_time: clt$date_time,
      def_date_format: ost$default_date_format,
      def_time_format: ost$default_time_format,
      format: ost$date_formats;

    status.normal := TRUE;
    osp$verify_system_privilege;

    validate_date_format (new_format, format, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    CASE date.date_format OF
    = osc$month_date =
      clp$convert_string_to_date_time (date.month, 'MN D2, Y4', date_time, status);

    = osc$mdy_date =
      clp$convert_string_to_date_time (date.mdy, 'M2/D2/Y2', date_time, status);

    = osc$iso_date =
      clp$convert_string_to_date_time (date.iso, 'Y4-M2-D2', date_time, status);

    = osc$ordinal_date =
      clp$convert_string_to_date_time (date.ordinal, 'Y4J3', date_time, status);

    = osc$dmy_date =
      clp$convert_string_to_date_time (date.dmy, 'D2.M2.Y2', date_time, status);

    ELSE
      osp$set_status_condition (pme$invalid_date_format, status);
    CASEND;

    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF new_format = osc$default_date THEN
      pmp$get_default_date_time_form (def_date_format, def_time_format);
      format := def_date_format.date_format;
    IFEND;

    date.date_format := format;

    CASE format OF
    = osc$month_date =
      clp$convert_date_time_to_string (date_time, 'MN D2, Y4', date_string, status);
      date.month := date_string.value;

    = osc$mdy_date =
      clp$convert_date_time_to_string (date_time, 'M2/D2/Y2', date_string, status);
      date.mdy := date_string.value;

    = osc$iso_date =
      clp$convert_date_time_to_string (date_time, 'Y4-M2-D2', date_string, status);
      date.iso := date_string.value;

    = osc$ordinal_date =
      clp$convert_date_time_to_string (date_time, 'Y4J3', date_string, status);
      date.ordinal := date_string.value;

    = osc$dmy_date =
      clp$convert_date_time_to_string (date_time, 'D2.M2.Y2', date_string, status);
      date.dmy := date_string.value;

    CASEND;


  PROCEND pmp$change_legible_date_format;
?? OLDTITLE ??
?? NEWTITLE := '[XDCL, #GATE] pmp$get_day_of_week', EJECT ??
*copy pmh$get_day_of_week

  PROCEDURE [XDCL, #GATE] pmp$get_day_of_week
    (VAR day_of_week: ost$day_of_week;
     VAR status: ost$status);

     VAR
       date_time: ost$date_time;

    pmp$get_compact_date_time (date_time, status);
    IF NOT status.normal THEN
     RETURN;
    IFEND;

    pmp$compute_day_of_week (date_time, day_of_week, status);

  PROCEND pmp$get_day_of_week;
?? OLDTITLE ??
?? NEWTITLE := '[INLINE] validate_date_format', EJECT ??

{ PURPOSE:
{   Verify that the date format is valid.

  PROCEDURE [INLINE] validate_date_format
    (    date_format: ost$date_formats;
     VAR validated_date_format: ost$date_formats;
     VAR status: ost$status);

    VAR
      def_date_format: ost$default_date_format,
      ignore_def_time_format: ost$default_time_format;

    status.normal := TRUE;

    CASE date_format OF
    = osc$ordinal_date, osc$month_date, osc$mdy_date, osc$dmy_date, osc$iso_date =
      validated_date_format := date_format;

    = osc$default_date =
      pmp$get_default_date_time_form (def_date_format, ignore_def_time_format);
      validated_date_format := def_date_format.date_format;

    ELSE
      osp$set_status_condition (pme$invalid_date_format, status);
    CASEND;

  PROCEND validate_date_format;
MODEND pmm$user_time_requests;
