Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 22 additions & 14 deletions cobj/cobj.c
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down Expand Up @@ -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'},
Expand Down Expand Up @@ -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 <file> Generate and place a program listing into <file>"));
puts (_(" -I <directory> Add <directory> to copy files search path"));
puts (_(" -B <options> Add <options> 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 <file> Generate and place a program listing into <file>"));
puts (_(" -I <directory> Add <directory> to copy files search path"));
puts (_(" -B <options> Add <options> to the Java compiler"));
puts (_(" --list-reserved Display reserved words"));
puts (_(" -assign_external Set the file assign to external"));
puts (_(" -java-package(=<package name>) Specify the package name of the generated source code"));
putchar ('\n');

#undef CB_WARNDEF
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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);
Expand Down
2 changes: 2 additions & 0 deletions cobj/cobj.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
8 changes: 6 additions & 2 deletions cobj/codegen.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down Expand Up @@ -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;");
Expand Down Expand Up @@ -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.*;");
Expand Down
3 changes: 2 additions & 1 deletion tests/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
3 changes: 2 additions & 1 deletion tests/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
1 change: 1 addition & 0 deletions tests/command-line-options.at
Original file line number Diff line number Diff line change
Expand Up @@ -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])
Expand Down
15 changes: 15 additions & 0 deletions tests/command-line-options.src/java-package.at
Original file line number Diff line number Diff line change
@@ -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