如果指定修饰符 inOut 或 out,对参数值所作的所有更改将体现在调用函数中。这些修饰符稍后将会在 inOut 及相关修饰符的含义中描述。
参数对由包含该参数的函数调用的函数不可视;但是,可将参数作为自变量传送至其它函数。
以方括号([ ])结尾的参数是动态数组,其它说明声明了该数组每个元素的特征。
如果参数是某个项并且指定了修饰符 field(这指示该参数具有可测试的表单字段属性,如 blanks 或 numeric),则 inOut 修饰符是必需的。
如果参数为记录(不是固定记录),则 inOut 修饰符就是唯一有效的修饰符。
如果 inOut 修饰符正在生效,则相关自变量在引用时必须与该参数相兼容,如 EGL 中的引用兼容性中所述。
不能对已具有修饰符 field 的项使用修饰符 in。而且不能对记录(不是固定记录)或用于访问当前函数或当前函数调用的函数中的文件或数据库的固定记录指定 in 修饰符。
如果自变量是文字或常量,在处理该自变量时会认为是修饰符 in 在起作用。
不能对具有修饰符 field 的参数使用 out 修饰符。而且不能对记录或用于访问当前函数或当前函数调用的函数中的文件或数据库的固定记录指定 out 修饰符。
库函数不接收记录状态。
如果希望参数接受具有任何基本类型和长度的数字,则指定 NUMBER 作为松散类型。在这种情况下,传递给该参数的数字一定不能带有任何小数位。
如果希望参数接受具有特定基本类型但具有任何长度的字符串,则指定 CHAR、DBCHAR、MBCHAR、HEX 或 UNICODE 作为松散类型并确保该自变量具有相应的基本类型。
自变量的定义确定当函数中的语句对松散类型的参数运行时所发生的情况。
松散类型不可用在库中声明的函数。
有关基本类型的详细信息,请参阅基本类型。
仅当指定 inOut 修饰符或接受缺省的 inOut 修饰符时,field 修饰符才可用。
field 修饰符对类型为 nativeLibrary 的库中的函数参数不可用。
program inoutpgm a int; b int; c int; function main() a = 1; b = 1; c = 1; func1(a,b,c); // a = 1 // b = 3 // c = 3 end function func1(x int in, y int out, z int inout) // a = 1 x = 1 // b = 1 y = 0 // c = 1 z = 1 x = 2; y = 2; z = 2; // a = 1 x = 2 // b = 1 y = 2 // c = 2 z = 2 func2(); func3(x, y, z); // a = 1 x = 2 // b = 1 y = 3 // c = 3 z = 3 end function func2() // a = 1 // b = 1 // c = 2 end function func3(q int in, r int out, s int inout) // a = 1 x = unresolved q = 2 // b = 1 y = unresolved r = 2 // c = 2 z = unresolved s = 2 q = 3; r = 3; s = 3; // a = 1 x = unresolved q = 3 // b = 1 y = unresolved r = 3 // c = 3 z = unresolved s = 3 end