REM "Test range"; @If(Amount<0;@Return(" رقم سالب ");Amount> 900000000000000; @Return(" رقم هائل ! "); ""); REM "Parse, format fixed with 2 decimals"; money := @Text(Amount; "F2"); c := @Right("000" + @Word(money; ".";2); 3); d := @Right("000000000000000" + @Word(money; "."; 1); 15); REM "Constants"; n := "" : "واحد" : "اثنان" : "ثلاثة" : "أربعة" : "خمسة" : "ستة" : " سبعة " : " ثمانية " : "تسعة" : "عشرة" : "أحد عشر" : "أثنا عشر" : "ثلاثة عشر" : "أربعة عشر" : "خمسة عشر" : "ستة عشر" :"سبعة عشر" : "ثمانية عشر" : "تسعة عشر"; m := "" : "" : " عشرون " : " ثلاثون " : " أربعون " : " خمسون " : " ستون " : " سبعون " : " ثمانون " : " تسعون "; ma :="20":"30":"40":"50":"60":"70":"80":"90" ; REM "Ones"; d0 := @Middle(d; 12; 3); h0 := @Subset(@Subset(n; @TextToNumber(@Left(d0; 1)) + 1); -1); v0 := @TextToNumber(@Right(d0; 2)); x0 :=@If(h0 = ""; ""; h0="واحد" ; " مائة " ; h0="اثنان" ; " مائتان " ; @Left (h0 ; "ة") +"مائة"); y0 :=@Subset(@Subset(m; 1 + @TextToNumber(@Middle(d0; 1; 1))); -1); z0 :=@Subset(@Subset(n;@If(v0 > 19; @TextToNumber(@Right(d0; 1)); v0) + 1); -1); x00 :=@TextToNumber(@Middle(d0; 0; 1)); y00 :=@TextToNumber(@Middle(d0; 1; 1)); z00 :=@TextToNumber(@Right(d0; 1)); t0 := @If(x0+y0+z0=""; "" ; x00=0 & v0 >19 & @IsMember( @Text (v0) ; ma ); y0 ; x00=0 & v0 >19 & @IsNotMember( @Text (v0) ; ma ) ; z0 + " و " + y0 ; x00=0 & v0<=19 ; z0 ; y00=0 & z00=0 ; x0 ; v0>19 & @IsMember( @Text (v0) ; ma ) ; x0 + " و " + y0 ; v0>19 & @IsNotMember( @Text (v0) ; ma ) ; x0 + " و " + z0 + " و " + y0 ; x0+" و " + z0 ) ; REM "Fraction calculations"; ch0 := @Subset(@Subset(cn; @TextToNumber(@Left(c; 1)) + 1); -1); cv0 := @TextToNumber(@Right(c; 2)); cx :=@If(ch0 = ""; ""; ch0="واحد" ; " مائة " ; ch0 +" مائة " ); cy :=@Subset(@Subset(n;@If(cv0 > 19; @TextToNumber(@Right(c; 1)); cv0) + 1); -1); cz :=@Subset(@Subset(m; 1 + @TextToNumber(@Middle(c; 1; 1))); -1); yc :=@TextToNumber(@Right(c; 1)); zc :=@TextToNumber(@Middle(c; 1; 1)); ct0 :=@Trim (@If ( cz+cy =""; ""; zc=0 & yc = 0;cx; zc=0 ; cy + cz ; yc = 0 ; cy + cz ; @If(cv0 > 19; cy+" و " + cz ; cy +cz ))); REM "Thousands"; d1 := @Middle(d; 9; 3); h1 := @Subset(@Subset(n; @TextToNumber(@Left(d1; 1)) + 1); -1); v1 := @TextToNumber(@Right(d1; 2)); x1 :=@If(h1 = ""; ""; h1="واحد" ; " مائة " ; h1="اثنان" ; " مائتان " ; @Left (h1 ; "ة") +"مائة"); y1 := @Subset(@Subset(m; 1 + @TextToNumber(@Middle(d1; 1; 1))); -1); z1 := @Subset(@Subset(n; @If(v1 > 19; @TextToNumber(@Right(d1; 1)); v1) + 1); -1); x11 :=@TextToNumber(@Middle(d1; 0; 1)); y11 :=@TextToNumber(@Middle(d1; 1; 1)); z11 :=@TextToNumber(@Right(d1; 1)); t1 := @If(x1+y1+z1=""; "" ; x11=0 & v1 >19 & @IsMember( @Text (v1) ; ma ); y1 ; x11=0 & v1 >19 & @IsNotMember( @Text (v1) ; ma ) ; z1 + " و " + y1 ; x11=0 & v1<=19 ; z1 ; y11=0 & z11=0 ; x1 ; v1>19 & @IsMember( @Text (v1) ; ma ) ; x1 + " و " + y1 ; v1>19 & @IsNotMember( @Text (v1) ; ma ) ; x1 + " و " + z1 + " و " + y1 ; x1+" و " + z1 ) ; REM "Millions"; d2 := @Middle(d; 6; 3); h2 := @Subset(@Subset(n; @TextToNumber(@Left(d2; 1)) + 1); -1); v2 := @TextToNumber(@Right(d2; 2)); x2 :=@If(h2 = ""; ""; h2="واحد" ; " مائة " ; h2="اثنان" ; " مائتان " ; @Left (h2 ; "ة") +"مائة"); y2 := @Subset(@Subset(m; 1 + @TextToNumber(@Middle(d2; 1; 1))); -1); z2 := @Subset(@Subset(n; @If(v2 > 19; @TextToNumber(@Right(d2; 1)); v2) + 1); -1); x22 :=@TextToNumber(@Middle(d2; 0; 1)); y22 :=@TextToNumber(@Middle(d2; 1; 1)); z22 :=@TextToNumber(@Right(d2; 1)); t2 := @If(x2+y2+z2=""; "" ; x22=0 & v2 >19 & @IsMember( @Text (v2) ; ma ); y2 ; x22=0 & v2 >19 & @IsNotMember( @Text (v2) ; ma ) ; z2 + " و " + y2 ; x22=0 & v2<=19 ; z2 ; y22=0 & z22=0 ; x2 ; v2>19 & @IsMember( @Text (v2) ; ma ) ; x2 + " و " + y2 ; v2>19 & @IsNotMember( @Text (v2) ; ma ) ; x2 + " و " + z2 + " و " + y2 ; x2+" و " + z2 ) ; REM "Billions"; d3 := @Middle(d; 3; 3); h3 := @Subset(@Subset(n; @TextToNumber(@Left(d3; 1)) + 1); -1); v3 := @TextToNumber(@Right(d3; 2)); x3 :=@If(h3 = ""; ""; h3="واحد" ; " مائة " ; h3="اثنان" ; " مائتان " ; @Left (h3 ; "ة") +"مائة"); y3 := @Subset(@Subset(m; 1 + @TextToNumber(@Middle(d3; 1; 1))); -1); z3 := @Subset(@Subset(n; @If(v3 > 19; @TextToNumber(@Right(d3; 1)); v3) + 1); -1); x33 :=@TextToNumber(@Middle(d3; 0; 1)); y33 :=@TextToNumber(@Middle(d3; 1; 1)); z33 :=@TextToNumber(@Right(d3; 1)); t3 := @If(x3+y3+z3=""; "" ; x33=0 & v3 >19 & @IsMember( @Text (v3) ; ma ); y3 ; x33=0 & v3 >19 & @IsNotMember( @Text (v3) ; ma ) ; z3 + " و " + y3 ; x33=0 & v3<=19 ; z3 ; y33=0 & z33=0 ; x3 ; v3>19 & @IsMember( @Text (v3) ; ma ) ; x3 + " و " + y3 ; v3>19 & @IsNotMember( @Text (v3) ; ma ) ; x3 + " و " + z3 + " و " + y3 ; x3+" و " + z3 ) ; REM "Trillions"; d4 := @Left(d; 3); h4 := @Subset(@Subset(n; @TextToNumber(@Left(d4; 1)) + 1); -1); v4 := @TextToNumber(@Right(d4; 2)); x4 :=@If(h4 = ""; ""; h4="واحد" ; " مائة " ; h4="اثنان" ; " مائتان " ; @Left (h4 ; "ة") +"مائة"); y4 := @Subset(@Subset(m; 1 +@TextToNumber(@Middle(d4; 1; 1))); -1); z4 := @Subset(@Subset(n;@If(v4 > 19; @TextToNumber(@Right(d4; 1)); v4) + 1); -1); x44 :=@TextToNumber(@Middle(d4; 0; 1)); y44 :=@TextToNumber(@Middle(d4; 1; 1)); z44 :=@TextToNumber(@Right(d4; 1)); t4 := @If(x4+y4+z4=""; "" ; x44=0 & v4 >19 & @IsMember( @Text (v4) ; ma ); y4 ; x44=0 & v4 >19 & @IsNotMember( @Text (v4) ; ma ) ; z4 + " و " + y4 ; x44=0 & v4<=19 ; z4 ; y44=0 & z44=0 ; x4 ; v4>19 & @IsMember( @Text (v4) ; ma ) ; x4 + " و " + y4 ; v4>19 & @IsNotMember( @Text (v4) ; ma ) ; x4 + " و " + z4 + " و " + y4 ; x4+" و " + z4 ) ; REM "Put it together"; t5 := (t0 + t1 + t2 + t3 + t4); tt := @If(t0 + t1 + t2 + t3 + t4+c = "" : "000"; " صفر "; " فقط " + @If(t4 = ""; ""; t4 + @If (t3=""; "" ; " و ")+" تريليون " ) + @If(t3 = ""; ""; t3+" مليار " + @If (t2="";@if (t1=""; ""; " و "); " و ")) + @If(t2 = ""; ""; t2="واحد" ; @If (t1=""; " مليون " ; " مليون و "); t2 + @If (t1=""; " مليون " ; " مليون و ")) + @If(t1 = ""; ""; t1="واحد" ; @If (t0=""; " الف "; " الف و ") ; t1="اثنان" ; @If (t0="" ; " الفان "; " الفان و "); t1 + @If (t0=""; " الاف " ; " الاف و ")) + @If(t0 = ""; ""; @If (t1="" & t2 !="" ; " و "+ t0 ; t1="" & t2 ="" & t3 !=""; " و "+ t0 ; t0 ))+ " ") + @If ( t0+t1+t2+t3+t4="" ; "";@Text (Currency) + " " ) + @If(c = "":"00":"000" ; "" ; t5="" ; ct0 + " "+ Parts ; " و " + ct0 + " "+ Parts ) + @If ( t0+t1+t2+t3+t4+ct0="";""; " لا غير " ); tt