Flat File Parser Echo Example
From MidrangeWiki
Purpose
This example shows how to use the FFP (Flat File Parser) service programs in the most simplistic way.
The data is read from a stream file on the IFS and then shown on the screen with the matching line format.
Data Format
00012010-12-201234567890123450 00012010-12-201234567890987900
Position | Description |
---|---|
1 - 4 | store id |
5 - 14 | transaction date (format *ISO) |
15 - 37 | item number (EAN) |
38 - 40 | quantity |
Code
/** * \brief FFP Example : Echo input to screen * * \author Mihael Schmidt * \date 19.12.2010 */ H dftactgrp(*no) actgrp(*caller) *--------------------------------------------------------------- * PEP *--------------------------------------------------------------- D main PR extpgm('FFPEX01') D main PI *--------------------------------------------------------------- * Prototypes *--------------------------------------------------------------- // // as we do the configuration manually we need // to include the prototypes of the ffp modules // /include 'ffp/parser_h.rpgle' /include 'ffp/line_processor_h.rpgle' /include 'ffp/echo_line_processor_h.rpgle' // input providers have its own project /include 'rng/input_provider_h.rpgle' /include 'rng/streamfile_input_provider_h.rpgle' *--------------------------------------------------------------- * Variables *--------------------------------------------------------------- D parser S * D lineProcessor S * D inputProvider S * D lineFormatImage... D S 100A D inputPath S 1000A /free lineFormatImage = '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' + x'00'; inputPath = '/home/iusr0001/src/ffp/example/echo-input.txt' + x'00'; // create parser instance parser = ffp_create(); // create line processor instance lineProcessor = ffp_processor_echo_create(); // create input provider instance inputProvider = rng_input_stmf_create(%addr(inputPath)); // // configure parser // ffp_addLineFormatFromImage(parser : 'Variable line Format' : %addr(lineFormatImage)); ffp_addLineProcessor(parser : lineProcessor); ffp_setInputProvider(parser : inputProvider); // do the actual parsing ffp_parse(parser); // clean up ffp_finalize(parser); *inlr = *on; return; /end-free