0

我有以下问题。

当我尝试使用 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)上编译代码

4

1 回答 1

1

问题是您传递给您的过程的整数数组的索引与他期望的整数不同。我不记得一个整数数组是什么,但我猜它不是整数......不得不承认我从不使用它们,但不记得为什么。可能是因为这样的限制。我坚持使用 Real 数组和 EBCDIC 数组。

您几乎可以肯定地通过定义一个新整数 j 来修复它;插入“j := t[i];” 在您调用“有趣”之前;然后用 'j' 而不是 t[i] 调用 'fun'。

顺便说一句,您可能希望使数组(和“for”循环)相对为零。ALGOL 大多是零相关的,我认为如果你顺其自然,它可能会节省内存。

让我知道这是否有帮助....

于 2013-10-15T01:30:40.537 回答