مثال بعدی محاسبه مساحت یک مستطیل است. واحد دریافتی از کاربر فوت هست و خروجی باید مساحت به فوت مربع و متر مربع باشد. برای تبدیل فوت مربع به متر مربع باید آن را در عدد ثابت 0.09290304 ضرب کنیم. این عدد را بصورت ماکرو در ابتدای برنامه تعریف کردم. برای استفاده از ماکرو در ارلنگ نام آن را که صرفا بخاطر یک قرارداد بصورت حروف بزرگ نوشته میشود را با ؟ فراخوانی میکنیم، کد زیر برنامه مورد نظر است:
-module(ex7). -export([main/0]). -define(CONRATE,0.09290304). main() -> try run() catch error:_Error -> io:format("Please Enter only Numeric type~n"); throw:negativeNumber -> io:format( "Please Enter only non-zero positive number~n") end. run() -> {Length, Width} = readDimension(), D = calc_area(Length,Width), io:fwrite("You entered dimensions of ~w feet by ~w feet.~n", [Length,Width]), io:fwrite("The area is~n ~w square feet~n ~w square meters~n", [D, D * ?CONRATE]). calc_area(Length, Width) -> Length * Width. readDimension() -> {ok,[First]} = io:fread( "What is the length of the room in feet? ","~d"), {ok,[Second]} = io:fread( "What is the width of the room in feet? ","~d"), if First =< 0 orelse Second =< 0 -> throw(negativeNumber); true -> ok end, {First,Second}.