1

是否可以将数组作为参数传递给 d3 pick 中的函数?我试过这样做,它似乎会生成一条错误消息:

B14 错误堆栈描述符

如果您尝试将数组作为函数的参数传递,则会出现错误消息。这让我想到了两个问题。

1)甚至可以在 d3 pick 中将数组作为参数传递吗?

2)如果不能直接传递数组,是否有某种解决方法可以让人们获得相同的结果?

4

2 回答 2

1

问题中的术语有点模棱两可,但试试这个:

DIM ARRAY(5)
ARRAY(1) = "FOO"
CALL MYSUB( ARRAY )
CRT ARRAY(1) ; * should be BAR
END

在被调用的项目中:

SUBROUTINE MYSUB( MYARRAY )
DIM MYARRAY()
MYARRAY(1) = "BAR"
RETURN

另一个解决方案是通过 Common 间接传递它: COMMON ARRAY(5) ARRAY(1) = "FOO" CALL MYSUB CRT ARRAY(1) ; * 应该是 BAR END

在被调用的项目中:

SUBROUTINE MYSUB
COMMON MYARRAY(5) ; * need to agree
MYARRAY(1) = "BAR"
RETURN

为了避免让每个程序都知道需要多少元素,请将代码放在 Include 项中:

包括项目 APP.COMMON:

COMMON ARRAY(5)
* nothing else here unless you have other things going on

主线代码:

INCLUDE APP.COMMON
ARRAY(1) = "FOO"
CALL MYSUB
CRT ARRAY(1) ; * should be BAR
END

在被调用的项目中:

SUBROUTINE MYSUB
INCLUDE APP.COMMON
ARRAY(1) = "BAR" ; * need to use same variable declared in the include item
RETURN
于 2014-06-06T17:32:16.207 回答
1

是的你可以...

创建一个程序“MainProgram”

Program MainProgram
  MyArray = ""
  MyArray<1> = "ParameterValue2"
  MyArray<2> = "ParameterValue2"
  call MySubroutine(MyArray)
Stop

创建子程序“MySubroutine”

Subroutine MySubroutine(PassedParam)
  for x = 1 to dcount(PassedParam,@AM)
    print PassedParam<x>
  next x
return

子程序需要编译和编目。

于 2014-09-12T12:40:58.303 回答