Welcome all! I have a stink problem, if you can call it that, when using the CRTPGM command. Here's the thing. I created the simplest C ++ application (the classic "Hello world!"), Consisting of one module and using only one iostream header file. Module creation was successful and was not accompanied by warnings. Further, using the CRTPGM command, I created a program from this single module. The program was created, but in the task log I saw the following warning:
The initial warning states that "if a second definition is preferable, invoke the CRTPGM command, specifying the QYPPSL510 object directly on the command line." But how can I know which of the definitions is preferable? After all, both definitions are in the system library and the service program (that is, I did not write any of the definitions). How to understand what to use here?
My module code is as follows:
Message ID . . . . . . : CPD5D1E Severity . . . . . . . : 10
Message type . . . . . : Diagnostic
Date sent . . . . . . : 16/06/20 Time sent . . . . . . : 09:44:19
Message . . . . : Definition collision has occurred.
Cause . . . . . : Definition "__dftbdt__Q2_3std10ctype_baseFv" from *MODULE
object POLIGON in library CSNTST was used instead of the later definition
from *SRVPGM object QYPPSL510 in library QSYS. The later definition is more
fitting, but it came from an object referred to by a binding directory and
cannot override the first definition found which came from an object
specifically specified on the command line.
Recovery . . . : If the later definition is the preferred one, try the
Create Program (CRTPGM) or Create Service Program (CRTSRVPGM) command again
and specify *SRVPGM object QYPPSL510 in library QSYS on the command line. If
the definition found first is the preferred one, then rename it to avoid the
collision. If no action is taken, the later definition is skipped and a
program or service program may still be created. In this case, the program
or service program may be unreliable.
Message type . . . . . : Diagnostic
Date sent . . . . . . : 16/06/20 Time sent . . . . . . : 09:44:19
Message . . . . : Definition collision has occurred.
Cause . . . . . : Definition "__dftbdt__Q2_3std10ctype_baseFv" from *MODULE
object POLIGON in library CSNTST was used instead of the later definition
from *SRVPGM object QYPPSL510 in library QSYS. The later definition is more
fitting, but it came from an object referred to by a binding directory and
cannot override the first definition found which came from an object
specifically specified on the command line.
Recovery . . . : If the later definition is the preferred one, try the
Create Program (CRTPGM) or Create Service Program (CRTSRVPGM) command again
and specify *SRVPGM object QYPPSL510 in library QSYS on the command line. If
the definition found first is the preferred one, then rename it to avoid the
collision. If no action is taken, the later definition is skipped and a
program or service program may still be created. In this case, the program
or service program may be unreliable.
My module code is as follows:
Code:
#include <iostream> int main() { std::cout << "Hello world" << std::endl; }
Comment