/* _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

	【機能概要】	: 共有メモリデータ検索・出力プログラム
					  本プログラムの引数設定に従い、共有メモリデータをアクセスして
					  検索結果を標準出力する。

	【作成日】		: 2021.04.23

	【呼出形式】	: GG_SHM1200
							[ テーブルID ]	# アクセスパターンファイルで定義したテーブルID
							[ 検索ID ]		# アクセスパターンファイルで定義した検索ID
							[ key1 ]		# 検索条件に設定するKEY値
							[ value1 ]		# 検索条件に設定するVALUE値
					  ※ 以降、key?/value? を繰り返し

	【戻り値】		: int					# 0 : 正常終了、-1 : 異常終了

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */

#include <stdio.h>
#include "GG_SHMCOM.h"

char ***GG_SHM0111 ( int outNum[3] , int inNum , char in[][GG_SHM0001_MaxPrmLen] ) ;

int main(
	int argc,
	char* argv[])
{
	char	*rc ;
	int		outNum[3] ;
	int		prmNum = 0 ;
	char	Prm [ GG_SHM0001_MaxPrmNum ][ GG_SHM0001_MaxPrmLen ] ;

	if ( argc < 2 ) {
		printf ( "Usage : %s [ テーブルID ] [ 検索ID ] [ key1 ] [ value1 ] [ key2 ] ・・・\n" , argv[0] ) ;
		exit (-1) ;
	}
	if ( argc % 2 < 1 ) {
		printf ( "Usage : %s [ テーブルID ] [ 検索ID ] [ key1 ] [ value1 ] [ key2 ] ・・・\n" , argv[0] ) ;
		printf ( "        key と value は、対で入力して下さい\n" ) ;
		exit (-1) ;
	}

	strcpy ( Prm[1] , argv[1] ) ;
	strcpy ( Prm[2] , argv[2] ) ;
	prmNum = 2 ;

	for ( int i=3 ; i<argc ; i++ ) {
		strcpy ( Prm[i] , argv[i] ) ;
		prmNum ++ ;
	}

	// 共有メモリアクセスAPI（C言語用）の呼び出し
	char ***ret = GG_SHM0111 ( outNum , prmNum , Prm ) ;

	#ifdef _DBG_SHM1200
		printf ( "outNum[0]=%d outNum[1]=%d outNum[2]=%d\n",outNum[0],outNum[1],outNum[2]) ;
	#endif

	// outNum[0] : データ返却レコード件数
	// outNum[1] : データ返却項目数
	// outNum[2] : データ返却最大サイズ

	// 項目ごとにタブ区切りで１レコード＝１行で標準出力
	for ( int i=0 ; i<outNum[0] ; i++ ) {
		for ( int j=0 ; j<outNum[1] ; j++ ) {
			if ( j==0 ) {
				printf ( "%s",ret[i][j] ) ;
			} else {
				printf ( "\t%s",ret[i][j] ) ;
			}
		}
		printf ( "\n" ) ;
	}
	free ( ret ) ;

	if ( outNum[0] > 1 ) {
		exit (0) ;
	} else {
		exit (-1);
	}
}
