Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ibm midrange RPG编译器将类型S转换为类型P?_Ibm Midrange_Rpgle - Fatal编程技术网

Ibm midrange RPG编译器将类型S转换为类型P?

Ibm midrange RPG编译器将类型S转换为类型P?,ibm-midrange,rpgle,Ibm Midrange,Rpgle,以下是我的情况: 我有一个程序,看起来像这样: Fmfile IF E K DISK USROPN d grue s like(dhseqn) d C *ENTRY PLIST C PARM grue c open mfile c*** do something

以下是我的情况: 我有一个程序,看起来像这样:

Fmfile IF E K DISK USROPN d grue s like(dhseqn) d C *ENTRY PLIST C PARM grue c open mfile c*** do something with grue c close mfile c eval *inlr = *on 如果E K磁盘USROPN,则为Fmfile d grue s like(dhseqn) D C*入口PLIST 帕姆格鲁酒店 c开放式文件 c***用grue做点什么 c关闭文件 c eval*inlr=*on dhseqn是一个2,0 S字段

编译列表向我展示了以下内容:

*RNF7031 DHSEQN P(2,0) 000200 1000002D GRUE P(2,0) 000200D 000500M 000700 000800M BASED(_QRNL_PRM+) *RNF7031 DHSEQN P(2,0)000200 1000002D GRUE P(2,0)000200D 000500M 000700000800m 基于(_QRNL_PRM+) 当我用一个声明为2,0s的参数调用程序A时,我得到一个十进制数据错误

这是预期的,还是一个编译器错误?

RPG编译器(甚至在ILE之前)将数据库字段转换为压缩字段。有时您会发现它不是,例如,如果在数据结构中使用分区文件字段,它将保持分区状态,但不使用的同一文件的每个分区字段都将打包

如果您确实需要从文件字段中选择,请定义一个虚拟数据结构以保持分区

更好的是,如果您的输入参数没有被修改,那么在程序的原型中用Const关键字定义它,类型将自动转换,甚至接受表达式和常量


关于在过程原型和自动转换上使用Const,这里有一个非常好的方法。

grue定义中的“s”并不指数据类型,而是将其定义为“独立”字段。grue的数据类型被指定为LIKE(dhseqn),编译列表显示为P(2,0)。

真正的问题是“当数据库显示为S时,为什么dhseqn显示为P?”。(ASalazar提供了答案)@Derek RPG参考在这一点上非常不清楚,只是在没有指定LIKE关键字时定义了
,这意味着使用LIKE()时会有所不同。然而,在这种情况下实际上也是一样的。