Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
themeEclipse
linenumberstrue
collapsetrue
**FREE
CTL-OPT DFTACTGRP(*NO) ACTGRP(*CALLER) BNDDIR('QC2LE');
DCL-DS INPUTDATA_T QUALIFIED BASED(TEMPLATE);
	FILEID VARCHAR(640);
	USERID CHAR(10);
	IPADDR CHAR(15);
	INLINE IND;
END-DS;
DCL-PR TMPNAM POINTER EXTPROC('_C_IFS_tmpnam');
       STRING CHAR(39) OPTIONS(*OMIT);
END-PR;
DCL-PR MAIN EXTPGM('PUIDNLEXIT');
	TIMINGFLAG INT(10) CONST;
	INPUTDATA LIKEDS(INPUTDATA_T) CONST;
	STMFDIR VARCHAR(640);
	STMFNAME VARCHAR(256);
	ATTNAME VARCHAR(256);
	CONTENTTYPE VARCHAR(256);
	ALLOW INT(5);
END-PR;

DCL-PR UNLINK INT(10) EXTPROC('unlink');
    PATH POINTER VALUE OPTIONS(*STRING);
END-PR;
DCL-PI MAIN;
	TIMINGFLAG INT(10) CONST;
	INPUTDATA LIKEDS(INPUTDATA_T) CONST;
	STMFDIR VARCHAR(640);
	STMFNAME VARCHAR(256);
	ATTNAME VARCHAR(256);
	CONTENTTYPE VARCHAR(256);
	ALLOW INT(5);
END-PI;
DCL-S MYPIC SQLTYPE(BLOB_FILE);
DCL-S FILENAME VARCHAR(50);
DCL-S RECNUMPOS INT(5); // USED TO PARSE THE PARAM STRING
DCL-S BLOBLOC VARCHAR(25); // STORES THE KEYWORD FOR THE LOCATION OF THE TABLE CONTAINING THE BLOB
DCL-S RECID VARCHAR(25); // STORES THE RECORD KEY FOR THE BLOB IMAGE
IF %SUBST(INPUTDATA.FILEID:1:5) = 'BLOB:'; // CHECKING PASSED PARAMETER FOR THE KEYWORD 'BLOB'
 
    IF TIMINGFLAG = 0;
        FILENAME = %STR(TMPNAM(*OMIT)) + '.jpg';
        RECNUMPOS = %SCAN(':' : INPUTDATA.FILEID : 6);
        BLOBLOC = %SUBST(INPUTDATA.FILEID : 6 : RECNUMPOS - 6);
        RECID = %SUBST(INPUTDATA.FILEID : RECNUMPOS + 1 :
            %LEN(%TRIM(INPUTDATA.FILEID)) - RECNUMPOS);
        IF BLOBLOC = 'ANIMALS';
            MYPIC_FO = SQFCRT;
            MYPIC_NAME = FILENAME;
            MYPIC_NL = %LEN(%TRIM(FILENAME));
            EXEC SQL
            SELECT MYBLOB INTO :MYPIC FROM MYTABLE WHERE FILEID = :RECID;
            IF SQLCODE = 0; // SQL WAS SUCCESSFUL
                STMFNAME = FILENAME;
                ATTNAME = 'elephant';
                ALLOW = 1;
            ELSE;
                ALLOW = 0;
            ENDIF;
        ELSE;
            ALLOW = 0;
        ENDIF;

    ENDIF;
    IF TIMINGFLAG = 1;
        UNLINK(%TRIM(FILENAME));
    ENDIF;
ELSE;
    ALLOW = 1; //ADD NON BLOB DOWNLOAD CONDITIONS HERE
ENDIF;

*INLR = *ON;                                           

...