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


No comments:

Post a Comment

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 ...