Avec le compilateur ILE, dans RPG, vous pouvez utiliser le PSDS Pour obtenir des informations sur le Utilisateur actuel, nom du travail, etc. p>
Comment obtenez-vous les mêmes informations dans un programme C ++ en utilisant Ile? P>
4 Réponses :
Il n'y a pas d'équivalent direct aux PSD de RPG en C ++. p>
(Pour ceux qui ne sont pas au courant, dans la langue de programmation RPG, vous pouvez déclarer une structure de données appelée "Structure de données d'état du programme" et elle sera automatiquement remplie avec beaucoup d'informations sur l'environnement d'exécution, y compris le Identifiant d'emploi (comme un identifiant de processus), nom d'utilisateur, dernière erreur survenue et beaucoup d'informations supplémentaires.) p>
Si vous pouvez nous dire spécifiquement quelles informations que vous recherchez et quelle plate-forme vous en avez besoin sur (ou si vous en avez besoin pour être inter-plate-forme), peut-être que nous pouvons nous aider. P>
Je ne peux pas imaginer que l'OP s'attend à l'utiliser sur tout mais le IBM i. Mais avec des détails de ce que les info du PSDS, nous pourrions mieux le diriger vers la droite des API.
Pour ajouter à la réponse de Scott, une structure de données dans RPG est comme une structure en C ++ - il serait possible de construire une structure qui contiendrait ces données, et on pourrait probablement rensepuler une partie de celle-ci avec divers appels aux API système. Certaines choses, cependant, ne sont tout simplement pas facilement disponibles. P>
L'API QUSRJOBI vous obtiendra les informations que vous avez mentionnées. La structure retournée est définie dans l'en-tête qusrjobi.h (fichier qsysinc.h) et renvoie le nom de travail actuel / nom d'utilisateur et le numéro de travail plus si appelé comme celui-ci: p>
qwc_jobi0600_t jobinfo;
Qusrjobi (& jobinfo, sizeof (qwc_jobi0600_t), "jobi0600", "*",
"", & errcode); p>
Vous pouvez obtenir le nom du programme et la bibliothèque de programmes à partir du premier paramètre transmis à un programme C ou C ++. argv [0] est une chaîne sous la forme "myLib / mypgm". p>
Si vous avez besoin du nom du module, le moyen le plus simple serait de vous envoyer un message à l'aide de QMHSnDPM, puis recevez-le à l'aide de QMHRCVPM avec le format RCVM0300 qui a "Informations sur l'expéditeur"; Les informations de l'expéditeur ont le nom du module d'envoi et le nom de module de réception. Vous pouvez également obtenir le nom du programme et la bibliothèque de cette façon. P>
Pourquoi les votes rapprochés pour "pas clair ce que tu demandes"? C'est une question très claire, si vous connaissez bien l'IBM Midrange. Veuillez vous abstenir de voter sur des questions que vous ne connaissez rien.
@ Johnny pourquoi le commentaire négatif, et non une tentative de clarifier ce qui est posé ou une modification suggérée? La majorité des personnes qui voient cela à cause de la C ++ et non à cause de IBM-Midrange auraient dû respecter les choses à Google pour donner un sens de la question. J'ai tenté d'éditer, mais comme je ne connais pas IBM Midrange, je suis sûr que vous pourriez faire mieux.
@James: Je comprends votre point de vue et j'aurais pu être moins négatif. (J'aurais pu être plus négatif, aussi.) Je n'ai pas modifié parce que j'ai vraiment senti que cela n'en a pas besoin. Les gens qui auraient besoin d'une explication du tout devraient rechercher toute la question de zéro. Ils ne sauraient pas ce que c'est que l'Ile est, ce que l'IBM est, ce que IBM Midrange est, ce que sont les PSD. Ils n'ont pas besoin de clarification. Ils ont besoin d'un tutoriel. D'autre part, si vous N'EST PAS I> Besoin d'un didacticiel, vous n'avez pas besoin de clarification non plus, parce que l'OP est défini sur des choses très claires, notamment des exemples de ce qui se trouve dans les PSD.
Comme Scott répondit, il n'y a pas d'équivalent PSDS unique en Île C ++. Si vous soyez plus précis dans les informations que vous souhaitez, nous pouvons vous indiquer à la bonne combinaison d'API.
Je suis intéressé par le numéro d'emploi, l'utilisateur actuel et la bibliothèque de programmes, mais j'ai demandé une question générale parce que je suppose que j'aurai besoin d'autres types d'informations à l'avenir.