[comp.protocols.iso.dev-environ] bug in ISODE-5.0 ?

nick@stca77.stc.oz (Nick Lochrin) (06/16/89)

Does anyone know if this is a bug in ISODE-5.0 ?

When defining a ROSE 'OPERATION', the syntax for the 'ARGUMENT' field
(according to the ROSE macro definitions in X.219) is:

-------
Argument ::= ARGUMENT NamedType | empty

-------
and (from X.208) the relevent ASN.1 is:

-------
NamedType ::= identifier Type | Type | SelectionType

Type ::= BuiltinType | DefinedType | SubType

BuiltinType ::= ... | AnyType | ... -- just look at AnyType

AnyType ::= ANY | ANY DEFINED BY identifier
 
-------
The problem is that when ISODE generates pseudo types, the result of
this operation:
-------
transmitTerminalMessage OPERATION 
	ARGUMENT ANY -- don't have any identifier
	RESULT userResponse ANY -- let's have an identifier
	ERRORS
	{
		userError
	}
	::= 0

-------
is (after being fed through rosy):

-------
Pseudo-transmitTerminalMessage ::=
        ANY

Pseudo-transmitTerminalMessage-1 ::=
        userResponse
            ANY
-------
The second one is not correct, as this is meant to be a Type definition
not a NamedType, and therefore should not include an identifier.
Has anyone seen this before or has any suggestions ?

		many thanks in advance,

			nick.

ps. I'd be interested in being added to the ISODE discussion group, if possible.


-- 
Nick Lochrin                 nick@stca77.stc.oz
Alcatel STC Australia        ...!uunet!stca77.stc.oz!nick
41 Mandible St               nick%stca77.stc.oz@uunet.UU.NET
ALEXANDRIA  NSW  2015        "Are you the police ?.. No mam, we're musicians."

nick@stca77.stc.oz (Nick Lochrin) (06/16/89)

In article <523@stca77.stc.oz> I wrote:

>ps. I'd be interested in being added to the ISODE discussion group, 
>if possible.

I have just been informed that comp.protocols.iso.dev-environ *is* the
discussion group. Are there any private mailing lists devoted to the
discussion of ISODE ?

thanks again.



-- 
Nick Lochrin                 nick@stca77.stc.oz
Alcatel STC Australia        ...!uunet!stca77.stc.oz!nick
41 Mandible St               nick%stca77.stc.oz@uunet.UU.NET
ALEXANDRIA  NSW  2015        "Are you the police ?.. No ma'am, we're musicians."

smithg@gec-rl-hrc.co.uk (Graeme Smith, ** ROOT **) (06/19/89)

> 
> Does anyone know if this is a bug in ISODE-5.0 ?
> 
> When defining a ROSE 'OPERATION', the syntax for the 'ARGUMENT' field
> (according to the ROSE macro definitions in X.219) is:
> 
> -------
> Argument ::= ARGUMENT NamedType | empty
> 
> -------
> and (from X.208) the relevent ASN.1 is:
> 
> -------
> NamedType ::= identifier Type | Type | SelectionType
> 
> Type ::= BuiltinType | DefinedType | SubType
> 
> BuiltinType ::= ... | AnyType | ... -- just look at AnyType
> 
> AnyType ::= ANY | ANY DEFINED BY identifier
>  
> -------

This is not an answer to the bug, it is just a comment about the ROSE
macro, NamedType is not taken from X.208, it is defined in the OPERATION
MACRO itself, as

  NamedType ::= identifier type | type

------------------------------------------------------------------

A Question

Why should the following code cause the error 'undefined type: 64'
in rosy, and posy, and work fine with pepy?

	Test1 DEFINITIONS ::= BEGIN

	Type1 ::= REAL

	END

I suppose I should really have sent it to BUG-ISODE, but its not up
to me to say whether its a bug or a feature!!!

Thanks in Advance

G R Smith

S.Walton@CS.UCL.AC.UK (Simon Walton) (06/19/89)

   You are right, this is a bug. This fix seems to do the
trick.

Simon

-----------------
*** rosy.c.sav  Sun Mar 19 07:42:46 1989
--- rosy.c      Mon Jun 19 16:15:06 1989
***************
*** 1354,1359

      if ((y1 = *yp) == NULLYP || y1 -> yp_code == YP_IDEFINED)
        return;

      (void) sprintf (buffer, "Pseudo-%s", id);
      for (i = 1; lookup_type (mymodule, buffer); i++)

--- 1354,1361 -----

      if ((y1 = *yp) == NULLYP || y1 -> yp_code == YP_IDEFINED)
        return;
+     y1 -> yp_id = NULLCP;
+     y1 -> yp_flags &= ~YP_ID;

      (void) sprintf (buffer, "Pseudo-%s", id);
      for (i = 1; lookup_type (mymodule, buffer); i++)