/* * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a * aplicativos mainframe. Registro no INPI sob o nome G3270. * * Copyright (C) <2008> * * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela * Free Software Foundation. * * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para * obter mais detalhes. * * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple * Place, Suite 330, Boston, MA, 02111-1307, USA * * Este programa está nomeado como testprogram.c e possui - linhas de código. * * Contatos: * * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) * */ #include #include #include #include #include #if defined(DEBUG) && defined(_WIN32) #undef trace #define trace( fmt, ... ) { FILE *out = fopen("c:\\Users\\Perry\\hllapi.log","a"); if(out) { fprintf(out, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fclose(out); } } #endif // DEBUG #define MAX_DATA_SIZE 8000 //< Maximum data size for this application. // static CHAR hllapi_data[MAX_DATA_SIZE]; /*---[ Implement ]--------------------------------------------------------------------------------*/ /* static void connect_ps(const char *session) { WORD len; WORD fn = HLLAPI_CMD_CONNECTPS; WORD rc = 0; strncpy(hllapi_data,session,MAX_DATA_SIZE); len = strlen(session); hllapi(&fn,hllapi_data,&len,&rc); } */ int main(int argc, char **argv) { const char *host = NULL; const char *session = "pw3270:A"; #pragma GCC diagnostic push static struct option options[] = { { "host", required_argument, 0, 'h' }, { "session-name", required_argument, 0, 'S' }, { 0, 0, 0, 0} }; #pragma GCC diagnostic pop int long_index =0; int opt; while((opt = getopt_long(argc, argv, "h:S:", options, &long_index )) != -1) { switch(opt) { case 'h': host = optarg; break; case 'S': session = optarg; break; } } int rc = hllapi_init((char *) session); if(rc) { printf("hllapi_init returns with rc=%d\n",rc); return rc; } printf("Library revision is %d\n",(int) hllapi_get_revision()); if(host) { printf("connect=%d\n",(int) hllapi_connect((char *) host,1)); printf("wait_for_ready=%d\n",(int) hllapi_wait_for_ready(10)); printf("connected=%s\n",(int) hllapi_is_connected() ? "Yes" : "No"); printf("disconnect=%d\n",(int) hllapi_disconnect()); } printf("connected=%s\n",(int) hllapi_is_connected() ? "Yes" : "No"); rc = hllapi_deinit(); printf("hllapi_deinit exits with rc=%d\n",rc); return 0; } /* int main(int numpar, char *param[]) { char buffer[BUFFER_LENGTH]; unsigned short rc; unsigned short len; unsigned long fn; static const struct _cmd { const char * name; unsigned short fn; const char * arg; } cmd[] = { { "GetRevision", HLLAPI_CMD_GETREVISION, " " }, { "ConnectPS", HLLAPI_CMD_CONNECTPS, "pw3270A" }, { "InputString", HLLAPI_CMD_INPUTSTRING, "test" }, }; int f; for(f=0;f< (sizeof(cmd)/sizeof(struct _cmd)); f++) { len = strlen(cmd[f].arg); memcpy(buffer,cmd[f].arg,len); hllapi((LPWORD) &cmd[f].fn,buffer,&len,&rc); printf("%s exits with rc=%d\n[%s]\n",cmd[f].name,rc,buffer); } len = 80; rc = 1040; fn = HLLAPI_CMD_COPYPSTOSTR; hllapi((LPWORD) &fn,buffer,&len,&rc); printf("%s exits with rc=%d\n%s\n","HLLAPI_CMD_COPYPSTOSTR",rc,buffer); // Performance len = strlen(cmd[0].arg); memcpy(buffer,cmd[0].arg,len); if(hllapi((LPWORD) &cmd[0].fn,buffer,&len,&rc) == 0 && rc == 0) { time_t end = time(0) + 5; int qtd = 0; do { qtd++; } while(hllapi((LPWORD) &cmd[0].fn,buffer,&len,&rc) == 0 && rc == 0 && time(0)