Usage of Selectbykey property -
&Rec2 = CreateRecord(Record.FDC_TLO_HIR_STG);
&Rec1 = &Rs1(1).GetRecord(Record.FDC_TLO_HIR_STG);
SQLExec("%SelectByKey(:1)", &Rec1, &Rec2);
rem &Rec1 = &Rec2;
&Rec2.CopyFieldsTo(&Rec1);
If &LoadSuccess = True Then
&Rec1.FLAG1.Value = "Y";
&Rec1.Update();
End-If;
Strip Special Character -
method StripSpecialChar
/+ &String1 as String +/
/+ Returns String +/
Local number &SpclCharLen, &i;
Local array of string &SpclChars;
&SpclCharLen = 6;
&SpclChars = CreateArrayRept(" ", &SpclCharLen);
&SpclChars [1] = " ";
&SpclChars [2] = "-";
&SpclChars [3] = ".";
&SpclChars [4] = "/";
&SpclChars [5] = "(";
&SpclChars [6] = ")";
For &i = 1 To &SpclCharLen
&String1 = Substitute(&String1, &SpclChars [&i], "");
End-For;
Return &String1;
end-method;
Array concept to split address and load into 4 fields -
Local array &AddrArray;
&AddrArray = %This.SplitAddress(&NewHireRec);
&oCollAddresses.PROP_ADDRESS1 = LTrim(RTrim(&AddrArray [1], " "), " ");
&oCollAddresses.PROP_ADDRESS2 = LTrim(RTrim(&AddrArray [2], " "), " ");
&oCollAddresses.PROP_ADDRESS3 = LTrim(RTrim(&AddrArray [3], " "), " ");
&oCollAddresses.PROP_ADDRESS4 = LTrim(RTrim(&AddrArray [4], " "), " ");
method SplitAddress
/+ &NewHireRec as Record +/
/+ Returns Array of Any +/
Local array &AddrArray;
Local number &i, &j;
Local array &TempStringArray;
Local string &Temp1;
Local FDC_TLO_LIB2:FDC_TLO_NEWHIRE:FDC_TLO_NEWHIRE &TLO_NewHire = create FDC_TLO_LIB2:FDC_TLO_NEWHIRE:FDC_TLO_NEWHIRE();
&AddrArray = CreateArray();
For &i = 1 To 4
&AddrArray.Push("");
End-For;
If Len(&NewHireRec.ADDRESS100.Value) <= 55 And
Len(&NewHireRec.ADDRESS100_OTHER.Value) <= 55 Then
&AddrArray [1] = &NewHireRec.ADDRESS100.Value;
&AddrArray [2] = &NewHireRec.ADDRESS100_OTHER.Value;
&AddrArray [3] = "";
&AddrArray [4] = "";
Return &AddrArray;
End-If;
If Len(&NewHireRec.ADDRESS100.Value) <= 55 And
Len(&NewHireRec.ADDRESS100_OTHER.Value) > 55 Then
&AddrArray [1] = &NewHireRec.ADDRESS100.Value;
/* &NewHireRec.ADDRESS100_OTHER.Value is split and assigned to 2 & 3 */
&TempStringArray = &TLO_NewHire.ParseString(&NewHireRec.ADDRESS100_OTHER.Value, " ");
&AddrArray [2] = "";
For &i = 1 To &TempStringArray.Len
&Temp1 = &AddrArray [2] | " " | &TempStringArray [&i];
If Len(&Temp1) <= 55 Then
&AddrArray [2] = &Temp1;
Else
Break;
End-If;
End-For;
&AddrArray [3] = "";
For &j = &i To &TempStringArray.Len
&Temp1 = &AddrArray [3] | " " | &TempStringArray [&j];
If Len(&Temp1) <= 55 Then
&AddrArray [3] = &Temp1;
Else
Break;
End-If;
End-For;
&AddrArray [4] = "";
/* 07/28/2016 Syed(F72MURX) FDC_2003 Begin - Split based on length */
If &TempStringArray.Len = 1 Then
&TempStringArray = %This.SplitString(&NewHireRec, Field.ADDRESS100_OTHER, 55);
If &TempStringArray.Len > 1 Then
For &i = 1 To &TempStringArray.Len
If &i = 1 Then
&AddrArray [2] = &TempStringArray [1];
End-If;
If &i = 1 Then
&AddrArray [3] = &TempStringArray [2];
End-If;
End-For;
End-If;
End-If;
/* 07/28/2016 Syed(F72MURX) FDC_2003 End */
Return &AddrArray;
End-If;
If Len(&NewHireRec.ADDRESS100.Value) > 55 And
Len(&NewHireRec.ADDRESS100_OTHER.Value) <= 55 Then
/* &NewHireRec.ADDRESS100.Value is split and assigned to 1 & 2 */
&TempStringArray = &TLO_NewHire.ParseString(&NewHireRec.ADDRESS100.Value, " ");
&AddrArray [1] = "";
For &i = 1 To &TempStringArray.Len
&Temp1 = &AddrArray [1] | " " | &TempStringArray [&i];
If Len(&Temp1) <= 55 Then
&AddrArray [1] = &Temp1;
Else
Break;
End-If;
End-For;
&AddrArray [2] = "";
For &j = &i To &TempStringArray.Len
&Temp1 = &AddrArray [2] | " " | &TempStringArray [&j];
If Len(&Temp1) <= 55 Then
&AddrArray [2] = &Temp1;
Else
Break;
End-If;
End-For;
&AddrArray [3] = &NewHireRec.ADDRESS100_OTHER.Value;
&AddrArray [4] = "";
/* 07/28/2016 Syed(F72MURX) FDC_2003 Begin - Split based on length */
If &TempStringArray.Len = 1 Then
&TempStringArray = %This.SplitString(&NewHireRec, Field.ADDRESS100, 55);
If &TempStringArray.Len > 1 Then
For &i = 1 To &TempStringArray.Len
If &i = 1 Then
&AddrArray [1] = &TempStringArray [1];
End-If;
If &i = 1 Then
&AddrArray [2] = &TempStringArray [2];
End-If;
End-For;
End-If;
End-If;
/* 07/28/2016 Syed(F72MURX) FDC_2003 End */
Return &AddrArray;
End-If;
If Len(&NewHireRec.ADDRESS100.Value) > 55 And
Len(&NewHireRec.ADDRESS100_OTHER.Value) > 55 Then
/* &NewHireRec.ADDRESS100.Value is split and assigned to 1 & 2 */
&TempStringArray = &TLO_NewHire.ParseString(&NewHireRec.ADDRESS100.Value, " ");
&AddrArray [1] = "";
For &i = 1 To &TempStringArray.Len
&Temp1 = &AddrArray [1] | " " | &TempStringArray [&i];
If Len(&Temp1) <= 55 Then
&AddrArray [1] = &Temp1;
Else
Break;
End-If;
End-For;
&AddrArray [2] = "";
For &j = &i To &TempStringArray.Len
&Temp1 = &AddrArray [2] | " " | &TempStringArray [&j];
If Len(&Temp1) <= 55 Then
&AddrArray [2] = &Temp1;
Else
Break;
End-If;
End-For;
/* 07/28/2016 Syed(F72MURX) FDC_2003 Begin - Split based on length */
If &TempStringArray.Len = 1 Then
&TempStringArray = %This.SplitString(&NewHireRec, Field.ADDRESS100, 55);
If &TempStringArray.Len > 1 Then
For &i = 1 To &TempStringArray.Len
If &i = 1 Then
&AddrArray [1] = &TempStringArray [1];
End-If;
If &i = 1 Then
&AddrArray [2] = &TempStringArray [2];
End-If;
End-For;
End-If;
End-If;
/* 07/28/2016 Syed(F72MURX) FDC_2003 End */
/* &NewHireRec.ADDRESS100_OTHER.Value is split and assigned to 3 & 4 */
&TempStringArray = &TLO_NewHire.ParseString(&NewHireRec.ADDRESS100_OTHER.Value, " ");
&AddrArray [3] = "";
For &i = 1 To &TempStringArray.Len
&Temp1 = &AddrArray [3] | " " | &TempStringArray [&i];
If Len(&Temp1) <= 55 Then
&AddrArray [3] = &Temp1;
Else
Break;
End-If;
End-For;
&AddrArray [4] = "";
For &j = &i To &TempStringArray.Len
&Temp1 = &AddrArray [4] | " " | &TempStringArray [&j];
If Len(&Temp1) <= 55 Then
&AddrArray [4] = &Temp1;
Else
Break;
End-If;
End-For;
/* 07/28/2016 Syed(F72MURX) FDC_2003 Begin - Split based on length */
If &TempStringArray.Len = 1 Then
&TempStringArray = %This.SplitString(&NewHireRec, Field.ADDRESS100_OTHER, 55);
If &TempStringArray.Len > 1 Then
For &i = 1 To &TempStringArray.Len
If &i = 1 Then
&AddrArray [3] = &TempStringArray [1];
End-If;
If &i = 1 Then
&AddrArray [4] = &TempStringArray [2];
End-If;
End-For;
End-If;
End-If;
/* 07/28/2016 Syed(F72MURX) FDC_2003 End */
Return &AddrArray;
End-If;
end-method;
method SplitString
/+ &StringRec as Record, +/
/+ &FieldName as String, +/
/+ &StringLen as Number +/
/+ Returns Array of Any +/
Local array &StringArray1;
Local string &TempString, &TempString2;
Local number &i, &index1, &index2;
&StringArray1 = CreateArray();
&TempString = &StringRec.GetField((@("Field." | &FieldName))).Value;
If Len(&TempString) <= &StringLen Then
&StringArray1.Push(&TempString);
Else
&i = 1;
While (&i > 0)
If Len(&TempString) <= &StringLen Then
&StringArray1.Push(&TempString);
&i = - 1;
Else
&TempString2 = Substring(&TempString, 1, &StringLen);
&StringArray1.Push(&TempString2);
&TempString = Substring(&TempString, Len(&TempString2) + 1, Len(&TempString) - Len(&TempString2));
&i = 1;
End-If;
End-While;
End-If;
Return &StringArray1;
end-method;
method ParseString
/+ &String1 as String, +/
/+ &ParseBy as String +/
/+ Returns Array of Any +/
Local array &String2;
Local string &TempString, &MoreStringsFound;
Local number &i, &index1, &index2, &Len;
&String2 = CreateArray();
/* Get the count of separator in string */
&index1 = 1;
&index2 = Find(&ParseBy, &String1, &index1);
While &index2 <> 0
&MoreStringsFound = "Y";
/* Find if another separator is found */
&TempString = Substring(&String1, &index1, &index2 - &index1);
If All(&TempString) Then
&String2.Push(&TempString);
End-If;
&index1 = &index2 + 1;
&index2 = Find(&ParseBy, &String1, &index1);
End-While;
/* When only one string is found */
If &MoreStringsFound <> "Y" Then
&String2.Push(&String1);
Else
&TempString = Substring(&String1, &index1, Len(&String1));
If All(&TempString) Then
&String2.Push(&TempString);
End-If;
End-If;
Return &String2;
end-method;
No comments:
Post a Comment