$[
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