?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE SCL Interpreter : Status Conversion Procedures' ??
MODULE clm$convert_status;

{
{ PURPOSE:
{   This module contains procedures to perform conversion between ost$status and clt$status, the latter
{   being the "mapping" of the former in command language variables.
{

?? NEWTITLE := 'Global Declarations', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc clt$variable_reference
*copyc ost$status
?? POP ??
*copyc osp$status_condition_code
*copyc osp$unpack_status_identifier
?? TITLE := 'clp$convert_to_clt$status', EJECT ??
{
{ PURPOSE:
{   This procedure converts an ost$status to a clt$status.
{

  PROCEDURE [XDCL] clp$convert_to_clt$status
    (    osv$status: ost$status;
     VAR clv$status: clt$status);

    clv$status.normal.value := osv$status.normal;
    clv$status.normal.kind := clc$true_false_boolean;
    IF NOT clv$status.normal.value THEN
      clv$status.identifier.size := STRLENGTH (clv$status.identifier.value);
      osp$unpack_status_identifier (osv$status.condition, clv$status.identifier.value);
      clv$status.condition.value := osv$status.condition;
      clv$status.condition.radix := 10;
      clv$status.condition.radix_specified := FALSE;
      clv$status.text := osv$status.text;
    IFEND;

  PROCEND clp$convert_to_clt$status;
?? TITLE := 'clp$convert_to_ost$status', EJECT ??
{
{ PURPOSE:
{   This procedure converts a clt$status to an ost$status.
{

  PROCEDURE [XDCL] clp$convert_to_ost$status
    (    clv$status: clt$status;
     VAR osv$status: ost$status);

    VAR
      identifier: ost$status_identifier;

    osv$status.normal := clv$status.normal.value;
    IF NOT osv$status.normal THEN
      IF (1 <= clv$status.identifier.size) AND (clv$status.identifier.size <=
            STRLENGTH (ost$status_identifier)) THEN
        identifier := clv$status.identifier.value (1, clv$status.identifier.size);
      ELSE
        identifier := '??';
      IFEND;
      osv$status.condition := osp$status_condition_code (identifier,
            clv$status.condition.value MOD (UPPERVALUE (osv$status.condition) + 1));
      osv$status.text := clv$status.text;
    IFEND;

  PROCEND clp$convert_to_ost$status;

MODEND clm$convert_status;
