Guy T.
2020-03-19 22:54:51 UTC
Hello all,
I don't know where I can give this information. Please advise.
I may have found a bug in the ORP.Mod module. In the Declarations procedure the following lines appear:
IF (x.type.form = ORB.String) & (x.b = 2) THEN ORG.StrToChar(x) END ;
ORB.NewObj(obj, id, ORB.Const); obj.expo := expo;
IF x.mode = ORB.Const THEN obj.val := x.a; obj.lev := x.b; obj.type := x.type
If a one-char string constant is migrated to a CHAR constant (1st line), it will receive a obj.lev := 2 (3rd line). The following modification may resolve the problem:
IF (x.type.form = ORB.String) & (x.b = 2) THEN ORG.StrToChar(x); x.b := level END ;
ORB.NewObj(obj, id, ORB.Const); obj.expo := expo;
IF x.mode = ORB.Const THEN obj.val := x.a; obj.lev := x.b; obj.type := x.type
At least, it seems to work for me.
Cheers!
Guy
I don't know where I can give this information. Please advise.
I may have found a bug in the ORP.Mod module. In the Declarations procedure the following lines appear:
IF (x.type.form = ORB.String) & (x.b = 2) THEN ORG.StrToChar(x) END ;
ORB.NewObj(obj, id, ORB.Const); obj.expo := expo;
IF x.mode = ORB.Const THEN obj.val := x.a; obj.lev := x.b; obj.type := x.type
If a one-char string constant is migrated to a CHAR constant (1st line), it will receive a obj.lev := 2 (3rd line). The following modification may resolve the problem:
IF (x.type.form = ORB.String) & (x.b = 2) THEN ORG.StrToChar(x); x.b := level END ;
ORB.NewObj(obj, id, ORB.Const); obj.expo := expo;
IF x.mode = ORB.Const THEN obj.val := x.a; obj.lev := x.b; obj.type := x.type
At least, it seems to work for me.
Cheers!
Guy