Skip to content

Commit f8e0cac

Browse files
committed
FUNCTION LENG関数をサポートする設定の追加です。
Add option to enable function LENG.
1 parent 1a4916a commit f8e0cac

File tree

10 files changed

+61
-2
lines changed

10 files changed

+61
-2
lines changed

cobc/config.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ CB_CONFIG_BOOLEAN (cb_enable_program_status_register, "enable-program-status-reg
4747
CB_CONFIG_BOOLEAN (cb_enable_sort_status_register, "enable-sort-status-register")
4848
CB_CONFIG_BOOLEAN (cb_enable_special_names_argument_clause, "enable-special-names-argument-clause")
4949
CB_CONFIG_BOOLEAN (cb_enable_special_names_environment_clause, "enable-special-names-environment-clause")
50+
CB_CONFIG_BOOLEAN (cb_enable_leng_intrinsic_function, "enable-leng-intrinsic-function")
5051
CB_CONFIG_SUPPORT (cb_author_paragraph, "author-paragraph")
5152
CB_CONFIG_SUPPORT (cb_memory_size_clause, "memory-size-clause")
5253
CB_CONFIG_SUPPORT (cb_multiple_file_tape_clause, "multiple-file-tape-clause")

cobc/reserved.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,9 @@ static const struct cb_intrinsic_table function_list[] = {
727727
{ "INTEGER-PART", 1, 1, CB_INTR_INTEGER_PART,
728728
"cob_intr_integer_part",
729729
CB_CATEGORY_NUMERIC, 0 },
730+
{ "LENG", 1, 1, CB_INTR_LENG,
731+
"cob_intr_length",
732+
CB_CATEGORY_NUMERIC, 0 },
730733
{ "LENGTH", 1, 1, CB_INTR_LENGTH,
731734
"cob_intr_length",
732735
CB_CATEGORY_NUMERIC, 0 },

cobc/tree.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2620,6 +2620,12 @@ cb_build_intrinsic (cb_tree name, cb_tree args, cb_tree refmod)
26202620
}
26212621
#endif /*I18N_UTF8*/
26222622
}
2623+
case CB_INTR_LENG:
2624+
if (!cb_enable_leng_intrinsic_function) {
2625+
cb_error_x (name, _("FUNCTION %s not implemented"), CB_NAME (name));
2626+
return cb_error_node;
2627+
}
2628+
/* do same as CB_INTR_BYTE_LENGTH continue. */
26232629
case CB_INTR_BYTE_LENGTH:
26242630
x = CB_VALUE (args);
26252631
if (CB_INTRINSIC_P (x)) {

cobc/tree.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,7 @@ enum cb_intr_enum {
871871
CB_INTR_INTEGER_OF_DATE,
872872
CB_INTR_INTEGER_OF_DAY,
873873
CB_INTR_INTEGER_PART,
874+
CB_INTR_LENG,
874875
CB_INTR_LENGTH,
875876
CB_INTR_LOCALE_COMPARE,
876877
CB_INTR_LOCALE_DATE,

config/default.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,4 @@ enable-program-status-register: no
128128
enable-sort-status-register: no
129129
enable-special-names-argument-clause: no
130130
enable-special-names-environment-clause: no
131+
enable-leng-intrinsic-function: no

config/jp-compat.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ enable-program-status-register: yes
1212
enable-sort-status-register: yes
1313
enable-special-names-argument-clause: yes
1414
enable-special-names-environment-clause: yes
15+
enable-leng-intrinsic-function: yes

tests/Makefile.am

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ jp_compat_DEPENDENCIES = \
8787
jp-compat.src/evaluate-also-missing.at \
8888
jp-compat.src/empty-imperative.at \
8989
jp-compat.src/spl-registers.at \
90-
jp-compat.src/special-names.at
90+
jp-compat.src/special-names.at \
91+
jp-compat.src/intr-funcs.at
9192

9293
EXTRA_DIST = $(srcdir)/package.m4 $(TESTS) \
9394
$(syntax_DEPENDENCIES) \

tests/Makefile.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,8 @@ jp_compat_DEPENDENCIES = \
272272
jp-compat.src/evaluate-also-missing.at \
273273
jp-compat.src/empty-imperative.at \
274274
jp-compat.src/spl-registers.at \
275-
jp-compat.src/special-names.at
275+
jp-compat.src/special-names.at \
276+
jp-compat.src/intr-funcs.at
276277

277278
EXTRA_DIST = $(srcdir)/package.m4 $(TESTS) \
278279
$(syntax_DEPENDENCIES) \

tests/jp-compat.at

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,4 @@ m4_include([evaluate-also-missing.at])
2828
m4_include([empty-imperative.at])
2929
m4_include([spl-registers.at])
3030
m4_include([special-names.at])
31+
m4_include([intr-funcs.at])

tests/jp-compat.src/intr-funcs.at

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
AT_SETUP([FUNCTION LENG (fixed)])
2+
3+
AT_DATA([prog.cob], [
4+
IDENTIFICATION DIVISION.
5+
PROGRAM-ID. prog.
6+
DATA DIVISION.
7+
WORKING-STORAGE SECTION.
8+
77 FIXED_FLD PIC X(8) USAGE DISPLAY.
9+
77 NLEN PIC 9(2) USAGE DISPLAY.
10+
PROCEDURE DIVISION.
11+
MOVE FUNCTION LENG (FIXED_FLD) TO NLEN.
12+
DISPLAY NLEN WITH NO ADVANCING.
13+
STOP RUN.
14+
])
15+
16+
AT_CHECK([${COMPILE_JP_COMPAT} -x prog.cob])
17+
AT_CHECK([./prog], [0], [08])
18+
19+
AT_CLEANUP
20+
21+
AT_SETUP([FUNCTION LENG (occur. depending)])
22+
23+
AT_DATA([prog.cob], [
24+
IDENTIFICATION DIVISION.
25+
PROGRAM-ID. prog.
26+
DATA DIVISION.
27+
WORKING-STORAGE SECTION.
28+
01 DEP_FLD.
29+
03 DEP_ITEM PIC X(2) OCCURS 1 TO 10 DEPENDING ON NDEP.
30+
77 NDEP PIC 9(2) USAGE DISPLAY.
31+
77 NLEN PIC 9(2) USAGE DISPLAY.
32+
PROCEDURE DIVISION.
33+
MOVE 2 TO NDEP.
34+
MOVE FUNCTION LENG (DEP_FLD) TO NLEN.
35+
DISPLAY NLEN WITH NO ADVANCING.
36+
STOP RUN.
37+
])
38+
39+
AT_CHECK([${COMPILE_JP_COMPAT} -x prog.cob])
40+
AT_CHECK([./prog], [0], [04])
41+
42+
AT_CLEANUP
43+

0 commit comments

Comments
 (0)