将数组作为pick中函数的参数传递

时间:2014-06-05 21:03:43

标签: pick

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

B14坏堆栈描述符

如果您尝试将数组作为函数的参数传递,则会显示错误消息。这引出了两个问题。

1)是否可以将数组作为d3 pick中的参数传递?

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

2 个答案:

答案 0 :(得分: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间接传递它:     共同阵营(5)     ARRAY(1)=" FOO"     致电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

答案 1 :(得分: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

子程序需要编译和编目。