diff --git a/cobj/cobj.c b/cobj/cobj.c index be28febf..437a81b6 100644 --- a/cobj/cobj.c +++ b/cobj/cobj.c @@ -163,6 +163,7 @@ int cb_saveargc; char **cb_saveargv; const char *cob_config_dir; +extern char *cb_java_package_name = NULL; #define PROGRAM_ID_LIST_MAX_LEN 1024 char* program_id_list[PROGRAM_ID_LIST_MAX_LEN]; @@ -296,6 +297,7 @@ static const struct option long_options[] = { {"list-intrinsics", no_argument, NULL, '6'}, {"list-mnemonics", no_argument, NULL, 'q'}, {"save-temps", optional_argument, NULL, '_'}, + {"java-package", optional_argument, NULL, 'P'}, {"std", required_argument, NULL, '$'}, {"conf", required_argument, NULL, '&'}, {"debug", no_argument, NULL, 'd'}, @@ -834,19 +836,20 @@ cobc_print_usage (void) { puts (_("Usage: cobj [options] file...")); puts (_("Options:")); - puts (_(" --help Display this message")); - puts (_(" --version, -V Display compiler version")); - puts (_(" -m Create jar files instead of class files (an experimental feature)")); - puts (_(" -free Use free source format")); - puts (_(" -free_1col_aster Use free(1col_aster) source format")); - puts (_(" -g Enable Java compiler debug")); - puts (_(" -E Preprocess only; do not compile or link")); - puts (_(" -C Translation only; convert COBOL to Java")); - puts (_(" -t Generate and place a program listing into ")); - puts (_(" -I Add to copy files search path")); - puts (_(" -B Add to the Java compiler")); - puts (_(" --list-reserved Display reserved words")); - puts (_(" -assign_external Set the file assign to external")); + puts (_(" --help Display this message")); + puts (_(" --version, -V Display compiler version")); + puts (_(" -m Create jar files instead of class files (an experimental feature)")); + puts (_(" -free Use free source format")); + puts (_(" -free_1col_aster Use free(1col_aster) source format")); + puts (_(" -g Enable Java compiler debug")); + puts (_(" -E Preprocess only; do not compile or link")); + puts (_(" -C Translation only; convert COBOL to Java")); + puts (_(" -t Generate and place a program listing into ")); + puts (_(" -I Add to copy files search path")); + puts (_(" -B Add to the Java compiler")); + puts (_(" --list-reserved Display reserved words")); + puts (_(" -assign_external Set the file assign to external")); + puts (_(" -java-package(=) Specify the package name of the generated source code")); putchar ('\n'); #undef CB_WARNDEF @@ -1036,6 +1039,11 @@ process_command_line (const int argc, char *argv[]) } } break; + case 'P': + /* --java-package : Java package name to be written in the head of generated source code */ + if(optarg) { + cb_java_package_name = optarg; + } case '3': /* --constant */ if (optarg) { @@ -1723,7 +1731,7 @@ process_compile (struct filename *fn) } for(char** program_id = program_id_list; *program_id; ++program_id) { - sprintf(buff, "javac %s -encoding SJIS %s.java", + sprintf(buff, "javac %s -encoding SJIS -d . %s.java", cob_java_flags, *program_id); ret = process (buff); diff --git a/cobj/cobj.h b/cobj/cobj.h index 7fa07933..72338bbd 100644 --- a/cobj/cobj.h +++ b/cobj/cobj.h @@ -138,6 +138,8 @@ extern int cb_source_line; extern const char *cob_config_dir; +extern char *cb_java_package_name; + extern char *source_name; extern char *demangle_name; extern FILE *cb_storage_file; diff --git a/cobj/codegen.c b/cobj/codegen.c index 494c0e83..e5e49c15 100644 --- a/cobj/codegen.c +++ b/cobj/codegen.c @@ -4165,7 +4165,7 @@ joutput_java_entrypoint (struct cb_program *prog, cb_tree parameter_list) char arg_field_name[COB_SMALL_BUFF]; joutput_prefix(); - joutput ("CobolResultSet execute ("); + joutput ("public CobolResultSet execute ("); int k; for (l = parameter_list; l; l = CB_CHAIN (l)) { @@ -4286,7 +4286,7 @@ joutput_internal_function (struct cb_program *prog, cb_tree parameter_list) //output (")\n"); //output_indent ("{"); - joutput_line ("int %s_ (int entry, CobolDataStorage ...argStorages) {", prog->program_id); + joutput_line ("public int %s_ (int entry, CobolDataStorage ...argStorages) {", prog->program_id); joutput_indent_level += 2; joutput_line("this.entry = entry;"); @@ -5923,6 +5923,10 @@ codegen (struct cb_program *prog, const int nested, char** program_id_list) //output ("\n"); } + if(cb_java_package_name) { + joutput_line("package %s;\n", cb_java_package_name); + } + joutput_line("import java.io.UnsupportedEncodingException;"); joutput_line("import jp.osscons.opensourcecobol.libcobj.*;"); joutput_line("import jp.osscons.opensourcecobol.libcobj.common.*;"); diff --git a/tests/Makefile.am b/tests/Makefile.am index 00df3fce..d043afc3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -151,7 +151,8 @@ command_line_options_DEPENDENCIES = \ command-line-options.src/ftrace-ftraceall.at \ command-line-options.src/fsyntax-only.at \ command-line-options.src/fserial-variable.at \ - command-line-options.src/fshort-variable.at + command-line-options.src/fshort-variable.at \ + command-line-options.src/java-package.at misc_DEPENDENCIES = \ misc.src/signed-comp3.at \ diff --git a/tests/Makefile.in b/tests/Makefile.in index ffd02b1a..0825d99d 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -690,7 +690,8 @@ command_line_options_DEPENDENCIES = \ command-line-options.src/ftrace-ftraceall.at \ command-line-options.src/fsyntax-only.at \ command-line-options.src/fserial-variable.at \ - command-line-options.src/fshort-variable.at + command-line-options.src/fshort-variable.at \ + command-line-options.src/java-package.at misc_DEPENDENCIES = \ misc.src/signed-comp3.at \ diff --git a/tests/command-line-options.at b/tests/command-line-options.at index 1197e7eb..bd198127 100644 --- a/tests/command-line-options.at +++ b/tests/command-line-options.at @@ -8,6 +8,7 @@ m4_include([t.at]) m4_include([B.at]) m4_include([list-reserved.at]) m4_include([assign_external.at]) +m4_include([java-package.at]) m4_include([Wunreachable.at]) m4_include([ftrace-ftraceall.at]) m4_include([fsyntax-only.at]) diff --git a/tests/command-line-options.src/java-package.at b/tests/command-line-options.src/java-package.at new file mode 100644 index 00000000..b387c4e9 --- /dev/null +++ b/tests/command-line-options.src/java-package.at @@ -0,0 +1,15 @@ +AT_SETUP([-java-package]) + +AT_DATA([prog.cbl], [ + IDENTIFICATION DIVISION. + PROGRAM-ID. prog. + PROCEDURE DIVISION. + DISPLAY "Hello". +]) + +AT_CHECK([${COBJ} -java-package=libcobj.test prog.cbl]) +AT_CHECK([java libcobj.test.prog], [0], +[Hello +]) + +AT_CLEANUP