diff --git a/src/include/pw3270/hllapi.h b/src/include/pw3270/hllapi.h index 356e34f..194b41d 100644 --- a/src/include/pw3270/hllapi.h +++ b/src/include/pw3270/hllapi.h @@ -101,7 +101,12 @@ extern "C" { HLLAPI_API_CALL hllapi_pakey(WORD key); HLLAPI_API_CALL hllapi_setcursor(WORD key); HLLAPI_API_CALL hllapi_getcursor(); + + HLLAPI_API_CALL hllapi_erase(void); HLLAPI_API_CALL hllapi_erase_eof(void); + HLLAPI_API_CALL hllapi_erase_eol(void); + HLLAPI_API_CALL hllapi_erase_input(void); + HLLAPI_API_CALL hllapi_print(void); HLLAPI_API_CALL hllapi(const LPWORD func, LPSTR str, LPWORD length, LPWORD rc); diff --git a/src/java/actions.cc b/src/java/actions.cc index e93c9ad..64fa193 100644 --- a/src/java/actions.cc +++ b/src/java/actions.cc @@ -72,6 +72,63 @@ JNIEXPORT jint JNICALL Java_pw3270_terminal_erase_1eof(JNIEnv *env, jobject obj) } +JNIEXPORT jint JNICALL Java_pw3270_terminal_erase(JNIEnv *env, jobject obj) { + + jint rc = -1; + + try { + + rc = java::getHandle(env,obj)->erase(); + + } catch(std::exception &e) { + + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); + return -1; + + } + + return rc; + +} +JNIEXPORT jint JNICALL Java_pw3270_terminal_erase_1eol(JNIEnv *env, jobject obj) { + + jint rc = -1; + + try { + + rc = java::getHandle(env,obj)->erase_eol(); + + } catch(std::exception &e) { + + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); + return -1; + + } + + return rc; + +} + +JNIEXPORT jint JNICALL Java_pw3270_terminal_erase_1input(JNIEnv *env, jobject obj) { + + jint rc = -1; + + try { + + rc = java::getHandle(env,obj)->erase_input(); + + } catch(std::exception &e) { + + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); + return -1; + + } + + return rc; + +} + + JNIEXPORT jint JNICALL Java_pw3270_terminal_print(JNIEnv *env, jobject obj) { jint rc = -1; diff --git a/src/java/terminal.java b/src/java/terminal.java index 8b6de7a..26e7f08 100644 --- a/src/java/terminal.java +++ b/src/java/terminal.java @@ -201,6 +201,11 @@ public class terminal */ public native int quit(); + public native int erase(); + public native int erase_eol(); + public native int erase_input(); + + /** * Erase from cursor position until the end of the field. * diff --git a/src/plugins/hllapi/calls.cc b/src/plugins/hllapi/calls.cc index f8e12ba..d877041 100644 --- a/src/plugins/hllapi/calls.cc +++ b/src/plugins/hllapi/calls.cc @@ -290,12 +290,31 @@ return HLLAPI_STATUS_SUCCESS; } + HLLAPI_API_CALL hllapi_erase(void) + { + session::get_default()->erase(); + return HLLAPI_STATUS_SUCCESS; + } + HLLAPI_API_CALL hllapi_erase_eof(void) { session::get_default()->erase_eof(); return HLLAPI_STATUS_SUCCESS; } + HLLAPI_API_CALL hllapi_erase_eol(void) + { + session::get_default()->erase_eol(); + return HLLAPI_STATUS_SUCCESS; + } + + HLLAPI_API_CALL hllapi_erase_input(void) + { + session::get_default()->erase_input(); + return HLLAPI_STATUS_SUCCESS; + } + + HLLAPI_API_CALL hllapi_print(void) { return session::get_default()->print(); diff --git a/src/plugins/rx3270/rexx_methods.cc b/src/plugins/rx3270/rexx_methods.cc index 85f535c..8f9d85c 100644 --- a/src/plugins/rx3270/rexx_methods.cc +++ b/src/plugins/rx3270/rexx_methods.cc @@ -185,6 +185,39 @@ RexxMethod1(int, rx3270_method_enter, CSELF, sessionPtr) return hSession->enter(); } +RexxMethod1(int, rx3270_method_erase, CSELF, sessionPtr) +{ + session *hSession = (session *) sessionPtr; + if(!hSession) + return -1; + return hSession->erase(); +} + +RexxMethod1(int, rx3270_method_erase_eof, CSELF, sessionPtr) +{ + session *hSession = (session *) sessionPtr; + if(!hSession) + return -1; + return hSession->erase_eof(); +} + +RexxMethod1(int, rx3270_method_erase_eol, CSELF, sessionPtr) +{ + session *hSession = (session *) sessionPtr; + if(!hSession) + return -1; + return hSession->erase_eol(); +} + +RexxMethod1(int, rx3270_method_erase_input, CSELF, sessionPtr) +{ + session *hSession = (session *) sessionPtr; + if(!hSession) + return -1; + return hSession->erase_input(); +} + + RexxMethod2(int, rx3270_method_pfkey, CSELF, sessionPtr, int, key) { session *hSession = (session *) sessionPtr; diff --git a/src/plugins/rx3270/rx3270.cls b/src/plugins/rx3270/rx3270.cls index 5cdbe5d..8a10fdb 100644 --- a/src/plugins/rx3270/rx3270.cls +++ b/src/plugins/rx3270/rx3270.cls @@ -59,6 +59,11 @@ ::METHOD PFKEY EXTERNAL "LIBRARY rx3270 rx3270_method_pfkey" ::METHOD PAKEY EXTERNAL "LIBRARY rx3270 rx3270_method_pakey" +::METHOD ERASE EXTERNAL "LIBRARY rx3270 rx3270_method_erase" +::METHOD ERASEEOF EXTERNAL "LIBRARY rx3270 rx3270_method_erase_eof" +::METHOD ERASEEOL EXTERNAL "LIBRARY rx3270 rx3270_method_erase_eol" +::METHOD ERASEINPUT EXTERNAL "LIBRARY rx3270 rx3270_method_erase_input" + ::METHOD OPTION EXTERNAL "LIBRARY rx3270 rx3270_method_set_option" ::METHOD EVENTTRACE EXTERNAL "LIBRARY rx3270 rx3270_method_event_trace" ::METHOD SCREENTRACE EXTERNAL "LIBRARY rx3270 rx3270_method_screen_trace" diff --git a/src/plugins/rx3270/rx3270.h b/src/plugins/rx3270/rx3270.h index 2b13b09..1e5c7c1 100644 --- a/src/plugins/rx3270/rx3270.h +++ b/src/plugins/rx3270/rx3270.h @@ -88,6 +88,11 @@ REXX_TYPED_ROUTINE_PROTOTYPE(ebc2asc); REXX_TYPED_ROUTINE_PROTOTYPE(asc2ebc); + REXX_TYPED_ROUTINE_PROTOTYPE(rx3270Erase); + REXX_TYPED_ROUTINE_PROTOTYPE(rx3270EraseEOF); + REXX_TYPED_ROUTINE_PROTOTYPE(rx3270EraseEOL); + REXX_TYPED_ROUTINE_PROTOTYPE(rx3270EraseInput); + REXX_METHOD_PROTOTYPE(rx3270_method_version); REXX_METHOD_PROTOTYPE(rx3270_method_revision); REXX_METHOD_PROTOTYPE(rx3270_method_init); @@ -102,6 +107,10 @@ REXX_METHOD_PROTOTYPE(rx3270_method_get_cursor_addr); REXX_METHOD_PROTOTYPE(rx3270_method_set_cursor_addr); REXX_METHOD_PROTOTYPE(rx3270_method_enter); + REXX_METHOD_PROTOTYPE(rx3270_method_erase); + REXX_METHOD_PROTOTYPE(rx3270_method_erase_eof); + REXX_METHOD_PROTOTYPE(rx3270_method_erase_eol); + REXX_METHOD_PROTOTYPE(rx3270_method_erase_input); REXX_METHOD_PROTOTYPE(rx3270_method_pfkey); REXX_METHOD_PROTOTYPE(rx3270_method_pakey); REXX_METHOD_PROTOTYPE(rx3270_method_get_text); diff --git a/src/plugins/rx3270/rxapimain.cc b/src/plugins/rx3270/rxapimain.cc index 4027dca..4a4e918 100644 --- a/src/plugins/rx3270/rxapimain.cc +++ b/src/plugins/rx3270/rxapimain.cc @@ -113,6 +113,12 @@ RexxRoutineEntry rx3270_functions[] = REXX_TYPED_ROUTINE(rx3270queryStringAt, rx3270queryStringAt), REXX_TYPED_ROUTINE(rx3270SetStringAt, rx3270SetStringAt), REXX_TYPED_ROUTINE(rx3270CloseApplication, rx3270CloseApplication), + + REXX_TYPED_ROUTINE(rx3270Erase, rx3270Erase), + REXX_TYPED_ROUTINE(rx3270EraseEOF, rx3270EraseEOF), + REXX_TYPED_ROUTINE(rx3270EraseEOL, rx3270EraseEOL), + REXX_TYPED_ROUTINE(rx3270EraseInput, rx3270EraseInput), + REXX_TYPED_ROUTINE(ebc2asc, ebc2asc), REXX_TYPED_ROUTINE(asc2ebc, asc2ebc), @@ -138,6 +144,10 @@ RexxMethodEntry rx3270_methods[] = REXX_METHOD(rx3270_method_set_cursor, rx3270_method_get_cursor_addr ), REXX_METHOD(rx3270_method_set_cursor, rx3270_method_set_cursor_addr ), REXX_METHOD(rx3270_method_enter, rx3270_method_enter ), + REXX_METHOD(rx3270_method_enter, rx3270_method_erase ), + REXX_METHOD(rx3270_method_enter, rx3270_method_erase_eof ), + REXX_METHOD(rx3270_method_enter, rx3270_method_erase_eol ), + REXX_METHOD(rx3270_method_enter, rx3270_method_erase_input ), REXX_METHOD(rx3270_method_pfkey, rx3270_method_pfkey ), REXX_METHOD(rx3270_method_pakey, rx3270_method_pakey ), REXX_METHOD(rx3270_method_get_text, rx3270_method_get_text ), diff --git a/src/plugins/rx3270/typed_routines.cc b/src/plugins/rx3270/typed_routines.cc index 673c765..4fc63ae 100644 --- a/src/plugins/rx3270/typed_routines.cc +++ b/src/plugins/rx3270/typed_routines.cc @@ -116,6 +116,26 @@ RexxRoutine0(int, rx3270SendENTERKey) return session::get_default()->enter(); } +RexxRoutine0(int, rx3270Erase) +{ + return session::get_default()->erase(); +} + +RexxRoutine0(int, rx3270EraseEOF) +{ + return session::get_default()->erase_eof(); +} + +RexxRoutine0(int, rx3270EraseEOL) +{ + return session::get_default()->erase_eol(); +} + +RexxRoutine0(int, rx3270EraseInput) +{ + return session::get_default()->erase_input(); +} + RexxRoutine1(int, rx3270SendPFKey, int, key) { return session::get_default()->pfkey(key); -- libgit2 0.21.2