From cf3f190e95a237eb7d9946d3be0f26b7105c47f5 Mon Sep 17 00:00:00 2001 From: Domenico Date: Wed, 19 Jun 2024 14:58:15 +0200 Subject: [PATCH 1/3] Add printer file test case --- .../smeup/rpgparser/smeup/MULANGT50FileAccess1Test.kt | 10 ++++++++++ .../src/test/resources/smeup/MUDRNRAPU00219.rpgle | 7 +++++++ 2 files changed, 17 insertions(+) create mode 100644 rpgJavaInterpreter-core/src/test/resources/smeup/MUDRNRAPU00219.rpgle diff --git a/rpgJavaInterpreter-core/src/test/kotlin/com/smeup/rpgparser/smeup/MULANGT50FileAccess1Test.kt b/rpgJavaInterpreter-core/src/test/kotlin/com/smeup/rpgparser/smeup/MULANGT50FileAccess1Test.kt index e4c63d6f9..359e99dee 100644 --- a/rpgJavaInterpreter-core/src/test/kotlin/com/smeup/rpgparser/smeup/MULANGT50FileAccess1Test.kt +++ b/rpgJavaInterpreter-core/src/test/kotlin/com/smeup/rpgparser/smeup/MULANGT50FileAccess1Test.kt @@ -34,4 +34,14 @@ open class MULANGT50FileAccess1Test : MULANGTTest() { val expected = listOf("TSSYST(IBMI) TSLIBR() TSFILE() TATIPO(3) TBPROG(MULANGT12) AAAAAA(A03) BBBBBB(P01) CCCCCC()") assertEquals(expected, "smeup/MU500901".outputOf(configuration = smeupConfig)) } + + /** + * Printer file with O-specs + * @see #LS24002987 + */ + @Test + fun executeMUDRNRAPU00219() { + val expected = listOf("ok") + assertEquals(expected, "smeup/MUDRNRAPU00219".outputOf(configuration = smeupConfig)) + } } \ No newline at end of file diff --git a/rpgJavaInterpreter-core/src/test/resources/smeup/MUDRNRAPU00219.rpgle b/rpgJavaInterpreter-core/src/test/resources/smeup/MUDRNRAPU00219.rpgle new file mode 100644 index 000000000..a78caf1ce --- /dev/null +++ b/rpgJavaInterpreter-core/src/test/resources/smeup/MUDRNRAPU00219.rpgle @@ -0,0 +1,7 @@ + D £DBG_Str S 2 + D STR132 S 132 + FPRT132 O F 132 PRINTER OFLIND(*INOG) USROPN + OPRT132 E RIGA 1 + O STR132 + C EVAL £DBG_Str='ok' + C £DBG_Str DSPLY \ No newline at end of file From cf895d722478c4d22d6136d6e327ea4b1743a33a Mon Sep 17 00:00:00 2001 From: Domenico Date: Wed, 19 Jun 2024 14:58:41 +0200 Subject: [PATCH 2/3] Add printer file type --- .../kotlin/com/smeup/rpgparser/interpreter/data_definitions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rpgJavaInterpreter-core/src/main/kotlin/com/smeup/rpgparser/interpreter/data_definitions.kt b/rpgJavaInterpreter-core/src/main/kotlin/com/smeup/rpgparser/interpreter/data_definitions.kt index 95908362c..b70b73f47 100644 --- a/rpgJavaInterpreter-core/src/main/kotlin/com/smeup/rpgparser/interpreter/data_definitions.kt +++ b/rpgJavaInterpreter-core/src/main/kotlin/com/smeup/rpgparser/interpreter/data_definitions.kt @@ -137,7 +137,7 @@ data class Prefix(internal val prefix: String, private val numCharsReplaced: Int } enum class FileType(val keyword: String?) { - DB(null), VIDEO("C"); + DB(null), VIDEO("C"), PRINTER("O"); companion object { fun getByKeyword(keyword: String): FileType { From ca2f3bf6e93cf3ad2991d7b76da09656ef4a6bf1 Mon Sep 17 00:00:00 2001 From: Domenico Date: Wed, 19 Jun 2024 14:59:10 +0200 Subject: [PATCH 3/3] Implement file metadata production for printer files --- .../com/smeup/rpgparser/parsing/parsetreetoast/misc.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/rpgJavaInterpreter-core/src/main/kotlin/com/smeup/rpgparser/parsing/parsetreetoast/misc.kt b/rpgJavaInterpreter-core/src/main/kotlin/com/smeup/rpgparser/parsing/parsetreetoast/misc.kt index 59e03e8c3..6980e39df 100644 --- a/rpgJavaInterpreter-core/src/main/kotlin/com/smeup/rpgparser/parsing/parsetreetoast/misc.kt +++ b/rpgJavaInterpreter-core/src/main/kotlin/com/smeup/rpgparser/parsing/parsetreetoast/misc.kt @@ -215,6 +215,15 @@ private fun FileDefinition.loadMetadata(): FileMetadata { error("Not found metadata for $this", error) }.getOrNull() ?: error("Not found metadata for $this") } + fileType == FileType.PRINTER -> { + FileMetadata( + name = this.name, + tableName = this.name, + recordFormat = this.internalFormatName ?: this.name, + fields = emptyList(), + accessFields = emptyList() + ) + } else -> error("Unhandled file type $fileType") } }