Skip to content

Instantly share code, notes, and snippets.

@NielsLiisberg
Last active July 15, 2021 12:54
Show Gist options
  • Save NielsLiisberg/9ca47191bae9f301c0f00310201aaab6 to your computer and use it in GitHub Desktop.
Save NielsLiisberg/9ca47191bae9f301c0f00310201aaab6 to your computer and use it in GitHub Desktop.
SQL append to IFS file
delete from qtemp.c;
insert into qtemp.c (srcdta) values
('{'),
('int m,f,l;'),
('m = 00002 + 00010 + 00400 ;'),
('IFS_APPEND.NAME.DAT[IFS_APPEND.NAME.LEN] =0;'),
('f = open(IFS_APPEND.NAME.DAT, m);'),
('l = write(f, IFS_APPEND.BUF.DAT,IFS_APPEND.BUF.LEN);'),
('close (f);'),
('}')
;
create or replace procedure qusrsys.ifs_append(name varchar(256), buf varchar(32700))
set option output=*print
begin
if buf is not null then
include qtemp/c(c);
end if;
end;
-- Test it like this
call qusrsys.ifs_append('/tmp/test.txt' , 'Hello');
@daframe
Copy link

daframe commented Dec 5, 2019

Same here.. :)
Line #10

('#includ<sys/stat.h>'),

@NielsLiisberg
Copy link
Author

Sorry! My fault- you need QSYSINC library installed ... I can make a version without this requirement..

@NielsLiisberg
Copy link
Author

The early version did not have that dependency - so please use this if you don't have QSYSINC installed:

https://gist.github.com/NielsLiisberg/9ca47191bae9f301c0f00310201aaab6/eb5ff1c1364a82117e0937d580489730720a3286

@chrjorgensen
Copy link

Seems like the ifs_append procedure has been overwritten by the corresponding ifs_write procedure!

Any chance to get the correct version of ifs_append back?

@NielsLiisberg
Copy link
Author

It's back - sorry !!

@chrjorgensen
Copy link

Thanks! :-)

@emidioporziella
Copy link

Hi,
create procedure error:
ID MES SEV RECORD TESTO
SQL0007 20 95 Posizione 1 Carattere '{' (HEX X'44') non valido
nell'istruzione SQL.
SQL0007 20 98 Posizione 20 Carattere '[' (HEX X'90') non valido
nell'istruzione SQL.
SQL0007 20 98 Posizione 40 Carattere ']' (HEX X'51') non valido
nell'istruzione SQL.
SQL0007 20 102 Posizione 1 Carattere '}' (HEX X'54') non valido
nell'istruzione SQL.

@NielsLiisberg
Copy link
Author

Hello @emidioporziella, I think you need to press the "raw" button in the gist before you copy the source into your ACS. If not maybe you have to set the ccsid on the source file in line 2. So try this updated version.

@emidioporziella
Copy link

Hi Niels,
I've solved using ACS.
Thank's a lot.

@NielsLiisberg
Copy link
Author

Great !! My pleasure :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment