付録  OPM−RPGからCを呼び出す
RPGプログラマーの為のC言語講座

OPM−RPGからCを呼び出す場合の、サンプルコードです。

Cを呼び出すPGM PROG1R

     H            Y/                                    1
     H*---------------------------------------------------------------*
     H* PROGRAM-ID    :    PROG1R                                     *
     H* REMARKS       :   Cを呼び出すPGM                 *
     H* AUTHOR        :    Y.IDE                                      *
     H* DATE-WRITEN   :    1999/8/15                                  *
     H* VERSION       :    01.00 ORIGINAL                             *
     H*---------------------------------------------------------------*
     I            DS
     I                                        1   1 CHAR
     I                                        2  11 STRING
     I                                    B  12  130INT2
     I                                    B  14  170INT4
     C*
     C                     MOVE 'A'       CHAR
     C                     MOVEL'12345678'STRING
     C                     Z-ADD123       INT2
     C                     Z-ADD123       INT4
     C                     Z-ADD123       PACK    70
     C*
     C                     CALL 'PROG1C'
     C                     PARM           CHAR
     C                     PARM           STRING
     C                     PARM           INT2
     C                     PARM           INT4
     C                     PARM           PACK
     C*
     C                     SETON                     LR
     C                     RETRN

RPGから呼び出されるPGM PROG1C

/*---------------------------------------------------------------*/
/* PROGRAM-ID  : PROG1C                                          */
/* REMARKS     : RPGから呼び出されるPGM                       */
/* AUTHOR      : Y.Ide                                           */
/* DATE-WRITEN : 1999/8/15                                       */
/* VERSION     : 01.00 ORIGINAL                                  */
/*---------------------------------------------------------------*/
/* RPGから呼ばれるプログラム                          */
/* RPGからはポインター渡しでパラメーターを受け取る            */

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<decimal.h>

void main(int argc, char *argv[])
{
/*パラメーター*/
char            *p_char;
char            *p_string;
short int       *p_int2;
int             *p_int4;
decimal(7,0)    *p_pack;

/*パラメーター取得*/
p_char      = (char *)argv[1];
p_string    = (char *)argv[2];
p_int2      = (short *)argv[3];
p_int4      = (int   *)argv[4];
p_pack      = (decimal(7,0) *)argv[5];

printf("CHAR    = %c \n",*p_char);
printf("STRING  = %s \n",p_string);
printf("INT2    = %d \n",*p_int2);
printf("INT4    = %d \n",*p_int4);
printf("PACK    = %D(7,0) \n" , *p_pack);

}