Opening a SAVF without an IBM i

Log in to save

jSAVF reads an IBM i save file on a PC, with no connection to a system. The current version is 1.83, from 7 December 2025, downloadable from the author's site. It also opens ISO9660 and AWSTAPE tape images.

It is for the cases where DSPSAVF cannot be run: a vendor sends a SAVF and you want to know what is in it before restoring, or what is left is the backup of a machine that has been switched off, and there is no system to load it on.

What it reads

SAVF compressionRead
*NOYes
*YES (before V5R3) and *LOWYes
*MEDIUM, *HIGHYes
zlib, which according to the author appeared with V7R5Yes

Once the file is open, the object list looks like DSPSAVF's, and can be printed to a text file like DSPSAVF ... OUTPUT(*PRINT).

What it extracts

  • Sources: members of source files (QRPGLESRC, QCLLESRC, QSQLLESRC and the others) in three forms: text only, source format with line number and date, or CSV. Always in UTF-8.
  • Tables and physical files: as CSV, with most column types (numeric, dates, text, LOBs). The author warns that some text fields can come out mis-decoded when the encoding cannot be worked out, and that very large LOBs may not export in full.
  • Data areas: as DSPDTAARA would show them.
  • SAVFs inside the SAVF: exported as valid SAVFs, which jSAVF itself opens.
  • IFS files (*STMF) in saves made with SAV: exported without conversion.

Other object types are exported raw.

Checking it is whole

jSAVF compares the file size with the one in the header, so it notices a truncated SAVF; it checks the blocks it reads against their checksums; and from a menu it verifies every block and the overall checksum. It is the first check to make on a SAVF that arrived by email or through an FTP transfer in text mode instead of binary.

Stated limits

  • limited support for SAVFs made from the IFS with SAV;
  • it may fail on SAVFs made with uncommon SAV* commands or by very old OS/400 releases;
  • it needs OpenJDK 25 or later; the Windows installer includes it. Anyone installing a JRE separately must select every option, because some EBCDIC conversion tables are optional.

A SAVF is a piece of a system. It contains real data, often customers'. The author asks not to be sent SAVFs without agreeing it with the data owners: that also goes for anyone thinking of opening one with some other tool found online.

Example

Library and file names are made up.

A vendor sends PATCH0925.SAVF with fixes to the ERP, and asks for it to be restored with RSTOBJ into the production library. Before doing so:

  1. jSAVF opens and verifies the file: size and blocks are fine.
  2. The list shows four programs, a QRPGLESRC source file with four members and a physical file ITEMS.
  3. The physical file was not announced. Exported to CSV, it holds the item master of another of the vendor's customers.

The SAVF goes back unrestored: an RSTOBJ of *ALL would have replaced the production ITEMS file.

Which releases

jSAVF runs on the PC, so it does not depend on the system release; the limit is on the SAVF, which must not come from a very old release. On an IBM i the same list information comes from DSPSAVF and from the SQL services QSYS2.SAVE_FILE_INFO and QSYS2.SAVE_FILE_OBJECTS, named on the 7.6 DSPSAVF page.

Sources

← Back to blog

Comments

No comments yet. Be the first to comment!

You need an account to comment. Log in · Sign up