Skip to main content

DDS Catalog

DDS (and related PF / LF / DSPF / PRTF) members describe record formats and fields. Parsing them with RPGFileType.DDS yields a CompilationUnit whose dataDescriptions hold RecordFormat nodes — a field catalog you can join with F-specs from RPGLE programs.

Add Dependencies

repositories {
mavenLocal()
mavenCentral()
flatDir {
dirs("deps")
}
}

dependencies {
implementation(files("deps/rpgparser-2.2.0-all.jar"))
}

Parse a DDS member

Use an explicit file type (or parserFromExtension when the extension is dds / pf / lf / dspf / prtf):

import com.strumenta.kolasu.commercial.LicenseManager
import com.strumenta.rpgparser.RPGFileType
import com.strumenta.rpgparser.RPGKolasuParser
import com.strumenta.rpgparser.model.RecordFormat
import java.io.File

fun catalogDds(ddsFile: File, license: File) {
LicenseManager.registerLicense(license)
val result = RPGKolasuParser(RPGFileType.DDS).parse(ddsFile)
val root = result.root ?: return

root.dataDescriptions.filterIsInstance<RecordFormat>().forEach { format ->
println("Record format: ${format.name} (${format.recordFileType})")
format.fields.forEach { field ->
println(" ${field.name} @ ${field.position}")
}
}
}

Physical vs logical files

When present on the model, record file type metadata distinguishes physical and logical files. Use it when building impact analysis for database migrations. Combining a DDS catalog with F-specs from RPGLE (program inventory, file I/O) and symbol resolution across a project directory gives you a complete file/field landscape.