我有以下问题。
当我尝试使用arun file.obj运行代码时(我已使用algol.exe文件编译)
BEGIN
INTEGER PROCEDURE fun(tab,index,lower,upper);
INTEGER tab,index,lower,upper;
BEGIN
INTEGER t;
text (1, "Start");
t := 0;
FOR index := lower STEP 1 UNTIL upper DO
t := t + tab;
fun := t;
END;
INTEGER ARRAY t[1:10];
INTEGER i,result,lower,upper;
lower := 1;
upper := 10;
FOR i := 1 STEP 1 UNTIL 10 DO
t[i] := i;
i := 1;
result := fun(t[i],i,lower,upper);
END FINISH;
我仍然收到错误:
ERROR 3
ADD PBASE PROC LOC
07D4 0886 1 13
083A 0842 0 115
我使用的编译器是RHA(Minisystems)Ltd。的“The Rogalgol Algol60”产品。
错误3表示“3个过程被调用,其中实际和形式参数类型不匹配。”
但我不明白为什么。错误的原因是t [i](如果我改为i - 没关系。)
有人知道我做错了什么吗?
我在dosbox(linux)上编译代码
答案 0 :(得分:1)
问题是您传递给过程的整数数组的索引与他期望的整数不同。我不记得整数数组是什么,但我猜它不是整数...不得不承认我从来没有使用它们,但不记得为什么。可能是因为这样的限制。我坚持使用Real array和EBCDIC。
你几乎可以肯定通过定义一个新的整数j来修复它;插入“j:= t [i];”在你调用'有趣'之前;然后用'j'而不是t [i]调用'fun'。
BTW你可能想让数组(和'for'循环)为零相对。 ALGOL主要是零相对的,我认为如果顺其自然,它可能会节省内存。
如果这有帮助,请告诉我....