Algol60传递数组的整数元素作为参数 - 错误坏类型

时间:2013-10-12 21:58:35

标签: algol

我有以下问题。

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

1 个答案:

答案 0 :(得分:1)

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

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

BTW你可能想让数组(和'for'循环)为零相对。 ALGOL主要是零相对的,我认为如果顺其自然,它可能会节省内存。

如果这有帮助,请告诉我....