📄 mbsputr1.c
字号:
/* ---------------------------------------------------------------------------------
Program name : mbsputr1.c
Description : Sample C program that puts messages to queues
in the routing mode
(C) Copyright SAISON INFORMATION SYSTEMS CO.,LTD. 2004 All Rights Reserved.
--------------------------------------------------------------------------------- */
/*----------------------------------------------------------------------------------
Function :
"mbsputr1" is a sample C program to put messages to queues in the routing
mode. This program gets messages from StdIn, and puts them to the specified
queue with "ROUTING" as the UserDefineID.
This program has the following parameters. If the optional parameters
are omitted, the parameters in System-Environment file( mbcenv.conf or MBCENV )
will be used.
required :
optional :
(1) -s Server : The name of HULFT-Message Server
(2) -p Port : The port of HULFT-Message Server
(3) -r RoutingID : Routing ID
--------------------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if defined(OS400)
#include "APIH/MBAPI"
#define usage "Usage : CALL MBSPUTR1 PRAM('-s' 'Server' '-p' 'Port' '-r' 'RoutingID')"
#else
#include "mbapi.h"
#define usage "Usage : mbsputr1 [-s Server] [-p Port] [-r RoutingID]"
#endif
int main( int argc, char **argv )
{
/* ---------------------------------------------------------------------------------
Declare structures needed
--------------------------------------------------------------------------------- */
MBHD *Hconn; /* connection handle */
MBQHD *Hque; /* queue handle */
MBCON Conn; /* MBCON structure */
MBQ Que; /* MBQ structure */
MBMSG Msg; /* MBMSG structure */
MBERR err; /* MBERR structure */
int rc; /* return code */
unsigned short port; /* server port */
char server[MBA_HOST_NAME_LEN+1]; /* server name */
char routing_id[MBA_ROUTE_ID_LEN+1]; /* routing ID */
char sin_buf[256]; /* buffer for StdIn */
char user_define_id[] = "ROUTING"; /* user definition ID */
/* ---------------------------------------------------------------------------------
Initialize
--------------------------------------------------------------------------------- */
memset( server, 0x00, sizeof(server) );
memset( routing_id, 0x00, sizeof(routing_id) );
port = 0;
/* ---------------------------------------------------------------------------------
Check the arguments
--------------------------------------------------------------------------------- */
if( argc > 7 ){
printf( "%s\n", usage );
exit( -1 );
}
argv++;
argc--;
while( argc-- ){
if( !strcmp( *argv, "-s" )){ /* server name */
if( argc <= 0 ){
printf( "%s\n", usage );
exit( -1 );
}
argv++;
argc--;
strncpy( server, *argv, MBA_HOST_NAME_LEN );
}
else if( !strcmp( *argv, "-p" )){ /* server port */
if( argc <= 0 ){
printf( "%s\n", usage );
exit( -1 );
}
argv++;
argc--;
port = atoi( *argv );
}
else if( !strcmp( *argv, "-r" )){ /* routing ID */
if( argc <= 0 ){
printf( "%s\n", usage );
exit( -1 );
}
argv++;
argc--;
strncpy( routing_id, *argv, MBA_ROUTE_ID_LEN );
}
else{
printf( "%s\n", usage );
exit( -1 );
}
argv++;
}
/* ---------------------------------------------------------------------------------
Connect to HULFT-Message Server
--------------------------------------------------------------------------------- */
memset( &Conn, 0x00, sizeof( Conn ));
strcpy( Conn.Server, server ); /* server name */
Conn.Port = port; /* server port */
#if defined(OS400)
Conn.Ebcdiccode = MBA_ET_IBMSMLEX; /* ebcdic code type */
#endif
Hconn = MBCONN( &Conn, sizeof( Conn ), &err );
if( !Hconn ){ /* if API returns unsuccessfully */
printf( "MBCONN : err=%d dtl=%d sys=%d msg=%s\n",
err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
exit( -1 );
}
/* ---------------------------------------------------------------------------------
Open the queue
--------------------------------------------------------------------------------- */
memset( &Que, 0x00, sizeof( Que ));
Que.OpenMode = MBA_OM_ROUTE; /* open mode */
Hque = MBOPEN( Hconn, &Que, sizeof( Que ), &err );
if( !Hque ){ /* if API returns unsuccessfully */
printf( "MBOPEN : err=%d dtl=%d sys=%d msg=%s\n",
err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
MBDISCON( Hconn, &err );
exit( -1 );
}
/* ---------------------------------------------------------------------------------
Put the messages to the queues
--------------------------------------------------------------------------------- */
memset( &Msg, 0x00, sizeof( Msg ));
strcpy( Msg.UserDefineID, user_define_id ); /* user definition ID */
Msg.DataType = MBA_DATA_TYPE_TEXT; /* data type */
strcpy( Msg.RoutingID, routing_id ); /* routing ID */
Msg.Buf = sin_buf; /* message buffer */
#if defined(OS400)
Msg.ShiftCode = MBA_SFT_CUT; /* shift code */
Msg.SpaceMode = MBA_SP_FULL; /* space mode */
#endif
while( 1 ){
printf ( ">> Input data\n" );
fgets( sin_buf,sizeof(sin_buf),stdin );
if( !strlen( sin_buf )){
break;
}
Msg.MsgSize = strlen( Msg.Buf ); /* message size */
rc = MBPUT( Hconn, Hque, &Msg, sizeof( Msg ), &err );
if( rc ){ /* if API returns unsuccessfully */
printf( "MBPUT : err=%d dtl=%d sys=%d msg=%s\n",
err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
MBCLOSE( Hconn, Hque, &err );
MBDISCON( Hconn, &err );
exit( -1 );
}
}
/* ---------------------------------------------------------------------------------
Close the queue
--------------------------------------------------------------------------------- */
rc = MBCLOSE( Hconn, Hque, &err );
if( rc ){ /* if API returns unsuccessfully */
printf( "MBCLOSE : err=%d dtl=%d sys=%d msg=%s\n",
err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
MBDISCON( Hconn, &err );
exit( -1 );
}
/* ---------------------------------------------------------------------------------
Disconnect from HULFT-Message Server
--------------------------------------------------------------------------------- */
rc = MBDISCON( Hconn, &err );
if( rc ){ /* if API returns unsuccessfully */
printf( "MBDISCON : err=%d dtl=%d sys=%d msg=%s\n",
err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
exit( -1 );
}
printf( "Normal termination\n" );
return( 0 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -