|
Well, I think I have this figured out. Now I just need to see if Domino
can read this BLOB field.
H ActGrp(*CALLER)
H DftActGrp(*NO)
***************************************************************************
* Program: *
* This is a test program. It tests how to populate a blob field.
*
* Inputs: *
* A one character field that is the record key to the file. *
* The IFS file name to fill the blob field with. Sample: *
* //ROB/dominochatsept12.pdf *
* *
* Modification log: *
* mm/dd/02 by R.Berendt, CCP Group Dekko Services, LLC *
* Created. *
* *
* Compilation instructions: *
* (no special instructions this time.) *
* *
***************************************************************************
/DEFINE DSpec
D BLOB PR EXTPGM('BLOB')
D FileKey 1a
D FileName 255a
D InsertSQl PR
D CreateFileSql PR
D BLOB PI *ENTRY PLIST
D FileKey 1a
D FileName 255a
D My_File s SQLTYPE(BLOB_FILE)
D* Code/400 may have a problem with the above. That's ok, the
compiler won't.
D* My_File will be expanded by the SQL preprocessor to the following:
D*My_File DS
D* My_File_NL 10u 0 // Name Length
D* My_File_DL 10u 0 // Data Length
D* My_File_FO 10u 0 // File Operation
D* // SQFRD = 2 = This is a file
that can be open, read
D* and closed.
DB2 figures the length of
D* the file, in
bytes, and stores that into
D* My_File_DL.
D* // SQFCRT = 8 = Create a new
file. If the file already
D* exists,
generate an error.
D* // SQFOVR = 16 = Create a new
file. If the file already
D* exists,
overwrite it.
D* // SQFAPP = 32 = Create a new
file. If the file already
D* exists, append
to it.
D* My_File_Name 255a // IFS file name
/UNDEFINE DSpec
C/EXEC SQL
C+ Set Option
C+ Naming = *Sys,
C+ Commit = *None,
C+ UsrPrf = *User,
C+ DynUsrPrf = *User,
C+ CloSqlCsr = *EndMod
C/END-EXEC
/free
My_File_NL = %len(%trim(FileName));
My_File_FO = SQFRD; // FileOperation = Read from the IFS file
My_File_Name = %trim(FileName);
InsertSql();
*inlr=*on;
return;
/end-free
P InsertSql B
D InsertSql PI
C/EXEC SQL
C+ Insert into TestBlob
C+ (MyChar, MyBlob)
C+ Values(:FileKey, :My_File)
C/END-EXEC
C/free
dsply sqlstt;
dsply sqlcod;
return;
/end-free
P InsertSql E
P CreateFileSql B
D CreateFileSql PI
D* Dummy subprocedure. Used for documentation only.
C/EXEC SQL
C+ CREATE TABLE ROB/TESTBLOB
C+ (MYCHAR CHAR ( 1) NOT NULL WITH DEFAULT,
C+ MYBLOB BLOB (100 m) NOT NULL WITH DEFAULT)
C/END-EXEC
C/free
dsply sqlstt;
dsply sqlcod;
return;
/end-free
P CreateFileSql E
Rob Berendt
--
"They that can give up essential liberty to obtain a little temporary
safety deserve neither liberty nor safety."
Benjamin Franklin
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.