diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java index 83f772c0..00c13114 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java @@ -169,11 +169,13 @@ private static void common(AbstractCobolField f1, AbstractCobolField f2, int typ public static void init(AbstractCobolField var, int replacing) { CobolInspect.inspectVarCopy = var; CobolInspect.inspectVar = CobolInspect.inspectVarCopy; - if (inspectVar.getAttribute().isTypeNumericDisplay()) { + CobolInspect.inspectSign = var.getSign(); + + if (var.getAttribute().isTypeNumericDisplay()) { inspectVar.putSign(1); } + CobolInspect.inspectReplacing = replacing; - CobolInspect.inspectSign = var.getSign(); CobolInspect.inspectSize = var.getFieldSize(); CobolInspect.inspectData = var.getDataStorage(); CobolInspect.inspectStart = -1; diff --git a/tests/Makefile.am b/tests/Makefile.am index 484aee23..567dcdb3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -223,7 +223,8 @@ misc_DEPENDENCIES = \ misc.src/file-handler-japanese.at \ misc.src/perform-until-div.at \ misc.src/search-occurs-depending.at \ - misc.src/fix-subtract.at + misc.src/fix-subtract.at \ + misc.src/display-inspect-sign.at EXTRA_DIST = $(srcdir)/package.m4 \ $(TESTS) \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 3ed18bdd..67931823 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -762,7 +762,8 @@ misc_DEPENDENCIES = \ misc.src/file-handler-japanese.at \ misc.src/perform-until-div.at \ misc.src/search-occurs-depending.at \ - misc.src/fix-subtract.at + misc.src/fix-subtract.at \ + misc.src/display-inspect-sign.at EXTRA_DIST = $(srcdir)/package.m4 \ $(TESTS) \ diff --git a/tests/misc.at b/tests/misc.at index 93fa8085..22353ce6 100644 --- a/tests/misc.at +++ b/tests/misc.at @@ -53,3 +53,4 @@ m4_include([file-handler-japanese.at]) m4_include([perform-until-div.at]) m4_include([search-occurs-depending.at]) m4_include([fix-subtract.at]) +m4_include([display-inspect-sign.at]) diff --git a/tests/misc.src/display-inspect-sign.at b/tests/misc.src/display-inspect-sign.at new file mode 100644 index 00000000..562afae1 --- /dev/null +++ b/tests/misc.src/display-inspect-sign.at @@ -0,0 +1,53 @@ +AT_SETUP([DISPLAY values after INSPECT]) + +AT_DATA([prog.cbl], [ + IDENTIFICATION DIVISION. + PROGRAM-ID. prog. + DATA DIVISION. + WORKING-STORAGE SECTION. + 01 DATA1 + 02 DATA-SIGN PIC S9(5). + 01 DATA2 + 02 DATA-SIGN-LEADING PIC S9(5) SIGN IS LEADING. + 01 DATA3 + 02 DATA-SIGN-LEADING-SEPARATE PIC S9(5) SIGN LEADING SEPARATE. + 01 DATA4 + 02 DATA-SIGN-TRAILING-SEPARATE PIC S9(5) SIGN TRAILING SEPARATE. + PROCEDURE DIVISION. + MAIN-RTN. + MOVE -12345 TO DATA-SIGN. + DISPLAY DATA1. + INSPECT DATA-SIGN REPLACING ALL ' ' BY '0'. + DISPLAY DATA1. + + MOVE -12345 TO DATA-SIGN-LEADING. + DISPLAY DATA2. + INSPECT DATA-SIGN-LEADING REPLACING ALL ' ' BY '0'. + DISPLAY DATA2. + + MOVE -12345 TO DATA-SIGN-LEADING-SEPARATE. + DISPLAY DATA3. + INSPECT DATA-SIGN-LEADING-SEPARATE REPLACING ALL ' ' BY '0'. + DISPLAY DATA3. + + MOVE -12345 TO DATA-SIGN-TRAILING-SEPARATE. + DISPLAY DATA4. + INSPECT DATA-SIGN-TRAILING-SEPARATE REPLACING ALL ' ' BY '0'. + DISPLAY DATA4. + STOP RUN. +]) + + +AT_CHECK([${COMPILE} prog.cbl]) +AT_CHECK([${RUN_MODULE} prog], [0], +[1234u +1234u +q2345 +q2345 +-12345 +-12345 +12345- +12345- +]) + +AT_CLEANUP \ No newline at end of file