/* v2gcc.c -- calling intrinsics via JNI and gcc plus COBOL */ #include #include "AskOp.h" JNIEXPORT void JNICALL Java_AskOp_printOp ( JNIEnv *jEnv, jobject this, jstring jMsg ) { const char *msg; char buf[72]; short len; short cctl; msg = (*jEnv)->GetStringUTFChars(jEnv, jMsg, 0); /* COBOL does not like variable length C strings too much */ strncpy(buf, msg, 72); len = -strlen(msg); cctl = 0; cob_printop( buf, &len, &cctl ); (*jEnv)->ReleaseStringUTFChars(jEnv, jMsg, msg); } JNIEXPORT jstring JNICALL Java_AskOp_printOpReply ( JNIEnv *jEnv, jobject this, jstring jMsg ) { const char *msg; char buf[50]; short len; char rep[32]; short maxlen; short reslen; msg = (*jEnv)->GetStringUTFChars(jEnv, jMsg, 0); /* COBOL does not like variable length C strings too much */ strncpy(buf, msg, 50); len = -strlen(msg); maxlen = -31; cob_printopreply( buf, &len, rep, &maxlen, &reslen); /* terminate result string for C usage */ if (maxlen > 0) rep[2*reslen] = 0; else rep[reslen] = 0; return (*jEnv)->NewStringUTF(jEnv, rep); }