From 1f0a8c7bcfb61ccd3af7eca8b56b7e14eb22a4ff Mon Sep 17 00:00:00 2001 From: Luis Fidel Castellanos Diaz Date: Sun, 11 Oct 2026 19:08:29 -0600 Subject: [PATCH 1/3] feat: make charset configurable via OPENSOURCECOBOL4J_CHARSET env var Replace hardcoded SHIFT-JIS charset with environment-configurable value. Defaults to SHIFT-JIS for backward compatibility. Non-Japanese COBOL programs can now set UTF-8, ISO-8859-1, etc. to avoid silent data corruption in MOVE, STRING, INSPECT, and file I/O operations. Fixes #916 --- .../opensourcecobol/libcobj/data/AbstractCobolField.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java index 8a2fac8c..563cf9bc 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java @@ -42,7 +42,13 @@ public abstract class AbstractCobolField { static CobolDataStorage lastdata = null; /** 文字データの符号化に使用するShift_JIS文字セット */ - public static Charset charSetSJIS = Charset.forName("SHIFT-JIS"); + /** + * Default charset for String/byte[] conversions. + * Configurable via OPENSOURCECOBOL4J_CHARSET environment variable. + * Defaults to SHIFT-JIS for backward compatibility. + */ + public static Charset charSetSJIS = Charset.forName( + System.getenv().getOrDefault("OPENSOURCECOBOL4J_CHARSET", "SHIFT-JIS")); static final int[] cobExp10 = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 From 8c70b6207390a390fc0bda698fa6f71f64de1e66 Mon Sep 17 00:00:00 2001 From: Luis Fidel Castellanos Diaz Date: Mon, 12 Oct 2026 19:27:24 -0600 Subject: [PATCH 2/3] style: apply spotless formatting to AbstractCobolField.java --- .../opensourcecobol/libcobj/data/AbstractCobolField.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java index 563cf9bc..cf500512 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java @@ -47,8 +47,8 @@ public abstract class AbstractCobolField { * Configurable via OPENSOURCECOBOL4J_CHARSET environment variable. * Defaults to SHIFT-JIS for backward compatibility. */ - public static Charset charSetSJIS = Charset.forName( - System.getenv().getOrDefault("OPENSOURCECOBOL4J_CHARSET", "SHIFT-JIS")); + public static Charset charSetSJIS = + Charset.forName(System.getenv().getOrDefault("OPENSOURCECOBOL4J_CHARSET", "SHIFT-JIS")); static final int[] cobExp10 = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 From 2d414b274abc6102a218389473d87c647e2f349c Mon Sep 17 00:00:00 2001 From: Luis Fidel Castellanos Diaz Date: Tue, 20 Oct 2026 16:02:10 -0600 Subject: [PATCH 3/3] refactor: rename env var to COB_CHARSET per maintainer convention --- .../opensourcecobol/libcobj/data/AbstractCobolField.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java index cf500512..f72700b7 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/AbstractCobolField.java @@ -44,11 +44,11 @@ public abstract class AbstractCobolField { /** 文字データの符号化に使用するShift_JIS文字セット */ /** * Default charset for String/byte[] conversions. - * Configurable via OPENSOURCECOBOL4J_CHARSET environment variable. + * Configurable via COB_CHARSET environment variable. * Defaults to SHIFT-JIS for backward compatibility. */ public static Charset charSetSJIS = - Charset.forName(System.getenv().getOrDefault("OPENSOURCECOBOL4J_CHARSET", "SHIFT-JIS")); + Charset.forName(System.getenv().getOrDefault("COB_CHARSET", "SHIFT-JIS")); static final int[] cobExp10 = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000