NIPSTRAN

NIPSTRAN is a program developed by the National Archive and Records Administration (NARA).

Electronic Records and Special Media Division to analyze and extract data from NIPS 360 FFS files.

NIPSTRAN is implemented in C++ using Microsoft Foundation Classes.

Program User Guide

A user guide for NIPSTRAN exists (NIPSTRAN Program User Guide) and instructions on how to use NIPSTRAN as well as a overview of NIPS 360 FFS files.

Note that there were multiple versions of the user guide present in the NIPSTRAN archive available to us. The version included here was originally named IBM Formatted File System Rendering 3-5-2 08-10-14.pdf. This seems to be the most recent version that, judging by the date in the file name, was updated in 2014 even though the document itself states that last update was made in 2010.

Favorite Quote

The details of NIPS files are too complex and convoluted to detail in this document. The reader is referred to reference NIPS 360 FFS User's Manual - Volume 1: Introduction to File Concepts Appendix A, pages 94 - 136.

--- Section 10.3 - NIPS File Structure

Running NIPSTRAN on Linux

NIPSTRAN can be run on Linux using the WINE emulator.

Notes on what exactly NIPSTRAN reads

What data is read by NIPSTRAN? What data is omitted? Are there any substantial differences to PyNIPS?

Record Key

It does not seem like NIPSTRAN reads the Record Control Group as defined by the Data Control Record. The Record Control Group/Key is still output as it is usually also defined by the +RCN field.

Element Format Record

Element Format Records are parsed by the function void parse_format_record(bool bDegMinSecs, void* buffer,size_t bytesread). The Field Names are as listed in Appendix A of NIPS 360 User Manual Volume 1.

Field Name Read by NIPSTRAN Comment
Element Name Yes
Element Set Identification Yes
Element Type Identification Yes This is a single byte containing 7 flags. The restricted flag (in PyNIPS) is called hiden in NIPSTRAN.
Element Location Yes Called pEleOffset in NIPSTRAN
Element Length Yes Called pEleSize in NIPSTRAN
Element Mode Specification Yes
Input Subroutine Conversion Name Yes
Output Subroutine Conversion Name Yes
Label Location Yes
Label Lenght Yes
Edit Mask Location No
Edit Mask Length No
Size of Element on Output No There seems to be a bug in NIPSTRAN where the size on output XLEN is not read instead the input lenght is used. See line 1070 of NIPS.cpp.
Location of Field Names No If the Element Format Record describes a group there will be a variable number of field names defined in the record. This is somewhat redundant as every field is defined by it's own Element Format Record. NIPSTRAN does not read the field descriptions in the group defining element format record.
Number of Fields No

Variable Set Fields

NIPSTRAN does not handle variable lenght or variable set fields (like PyNIPS):

// No code has been developed to handle varriable lengths

This is a strong indication that variable length and variable set fields are not used in NIPS files.