Thursday, 6 March 2025

how to create dml dynamically in Ab-initio

 $[

begin


let int i = 0;

let string(int) complete_list = "emp_nm,billable,age,designation,location";

let string(int) file_content = read_file(AI_SERIAL+'/'+'meta_dml.dat');

let string(int) first_line = string_split(file_content, 'n')[0];

let int len = length_of(string_split(first_line, "|"));

let string(int)[int] current_list = vector_slice(string_split(complete_list, ","), 0, len -1);

let int curr_len = length_of(current_list);

let string("") fld_nm = "";

let string(int) dml_data= "";

let dml_field_info curr_rec_info;

let dml_field_info[int] fld_vec = [vector];




for (i, i < curr_len)

begin

fld_nm = current_list;


curr_rec_info = if ( i == len -1) make_field(fld_nm, "string('n')") else make_field(fld_nm, "string('|')");

fld_vec = vector_append(fld_vec, curr_rec_info);


end


dml_data = add_fields(source_type = "recordnend", field_vec = fld_vec);

result :: dml_data;

end

---------------------------------------------------------------------------------------------------------------------

How to Create a Dynamic DML for a Input File?


My INPUT FILE : 

cust_name|cust_id|acct_number 

XYZ|001|19874578 

LMN|002|123456


PDL PARAMETER INPUT_DML; 


$[begin 

let string("") [] data = string_split(string_split(read_file("/home/vj 30954/test_ganesha1.dat"),"\n")[0], " ;|"); 

let decimal("") l=0; 

let string("") r; 

let string("") e ="record\n"; 

for(l,l<length_of(data)-1) 

begin 

e=string_concat(e,'string("|")',data[l], ";","\n"); 

end 

r=string_concat(e,'string(','"\\n")',dat a[ length_of(data)-1],";","\n"); result::string_concat(r,"end"); end] 


Above PDL will generate o/p like below : 


recod 

string("|') cust_name; 

string("|") cust_id; 

string("\n") acct_number; 

end


Sunday, 2 March 2025

Total counts of Records using Reformat

 let decimal(15) tot_rec_count=0;

/Reformat operation/
out::reformat(in)=
begin
if(next_in_sequence()>0)

begin
tot_rec_count = tot_rec_count + 1 ;
end
out.count::tot_rec_count;

end;

log_event_t log :: final_log_output() =
begin
log.event_type :: “Summary”;
log.event_text :: string_concat("Total No of Records = ", tot_rec_count);
end;

 After reformat Trash the flow. Collect your rec count in Log port.

how to create dml dynamically in Ab-initio

 $[ begin let int i = 0; let string(int) complete_list = "emp_nm,billable,age,designation,location"; let string(int) file_content ...