Vous êtes sur la page 1sur 10

Ring Documentation, Release 1.

1
2
3
4
5
6
7
8
9
10

28.14 Get Active Source File Name

We can get the active source file name (*.ring) using the filename() function
Syntax:
filename() ---> String contains the active source file name.

Example:
see "Active Source File Name : " + filename() + nl

Output:
Active Source File Name : tests\filename.ring

Example:
if sysargv[2] = filename()
see "I'm the main program file!" + nl
# we can run tests here!
else
see "I'm a sub file in a program" + nl
ok

28.15 PrevFileName() Function

Using the PrevFileName() function we can get the previous active source file name.
The previous file would be the file of the caller function, Or the file of the function that we called before calling
PrevFileName().
Syntax:
prevfilename() ---> String contains the previous source file name.

Example:
The next function in stdlib.ring uses the PrevFileName() to know if the file of the caller function is the main source
file of the program or not.
Func IsMainSourceFile
if PrevFileName() = sysargv[2]
return true
ok
return false

28.14. Get Active Source File Name 148


Ring Documentation, Release 1.3

28.16 CurrentDir() Function

Return the path of the current directory


Syntax:
CurrenDir() ---> String contains the path of the currect directory

28.17 ExeFileName() Function

Return the Ring executable file name


Syntax:
exefilename() ---> String contains the Ring executable file name

28.18 ChDir() Function

Change the current directory


Syntax:
ChDir(cNewPath)

28.19 ExeFolder() Function

Return the Ring executable file path


Syntax:
exefolder() ---> String contains the Ring executable path

28.20 Version() Function

Return the Ring version


Syntax:
version() ---> String contains the Ring version

Output:
1.3

28.16. CurrentDir() Function 149


CHAPTER

TWENTYNINE

EVAL() AND DEBUGGING

In this chapter we are going to learn about


Error Handling using Try/Catch/Done
Eval() function
Raise() function
Assert() function

29.1 Try/Catch/Done

Syntax:
Try
Statements...
Catch
Statements...
Done

The statements in the Try block will be executed, if any error happens then the statements in the catch block will be
executed.
Inside the catch block we can use the variable cCatchError to get the error message
Example:
Try
see 5/0
Catch
see "Catch!" + nl + cCatchError
Done

Output:
Catch!
Error (R1) : Cann't divide by zero !

29.2 Eval() Function

We can execute code during the runtime from string using the Eval() function
Syntax:

150
Ring Documentation, Release 1.3

Eval(cCode)

Example:
Eval("nOutput = 5+2*5 " )
See "5+2*5 = " + nOutput + nl
Eval("for x = 1 to 10 see x + nl next")
Eval("func test see 'message from test!' ")
test()

Output:
5+2*5 = 15
1
2
3
4
5
6
7
8
9
10
message from test!

29.3 Raise() Function

We can raise an exception using the Raise() function


Syntax:
Raise(cErrorMessage)

The function will display the error message then end the execution of the program.
We can use Try/Catch/Done to avoid exceptions generated by raise() function.
Example:
nMode = 10

if nMode < 0 or nMode > 5


raise("Error : nMode not in the range 1:4")
ok

Output:
Line 4 Error : nMode not in the range 1:4
In raise in file tests\raise.ring

Example:
try
testmode(6)
catch
see "avoid raise!"
done

testmode(-1)

29.3. Raise() Function 151


Ring Documentation, Release 1.3

func testmode nMode

if nMode < 0 or nMode > 5


raise("Error : nMode not in the range 1:4")
ok

Output:
avoid raise!
Line 12 Error : nMode not in the range 1:4
In raise In function testmode() in file tests\raise2.ring
called from line 7 in file tests\raise2.ring

29.4 Assert() Function

We can use the Assert() function to test conditions before executing the code
If the test fail the program will be terminated with an error message contains the assert condition.
Syntax:
Assert( condition )

Example:
x = 10
assert( x = 10)
assert( x = 100 )

Output:
Line 3 Assertion Failed!
In assert in file tests\assert.ring

29.4. Assert() Function 152


CHAPTER

THIRTY

DEMO PROGRAMS

In this chapter we will see simple demo programs


Language Shell
Main Menu

30.1 Language Shell

We can create simple interactive programming environment using the next program
while true
see nl + "code:> "
give cCode
try
eval(cCode)
catch
see cCatchError
done
end

Output:
code:> see "hello world"
hello world
code:> for x = 1 to 10 see x + nl next
1
2
3
4
5
6
7
8
9
10

code:> func test see "Hello from test" + nl

code:> test()
Hello from test

code:> bye

153
Ring Documentation, Release 1.3

30.2 Main Menu

Example:
# Demo Program

while true

see "

Main Menu
===========
[1] Say Hello
[2] Sum two numbers
[3] Stars
[4] Fact
[5] Exit

" give nMenu see nl

# we can use Switch-ON-Other-OFF instead of IF-BUT-ELSE-OK

Switch nMenu
On 1 sayhello()
On 2 Sum()
On 3 Stars()
On 4
see "Enter Number : " give x
see "Output : "

Try
see Fact(number(x))
Catch
see "Error in parameters!" + nl
Done

On "5" return
Other see "bad option" + nl
Off

end

func sayhello
see "Enter your name ? " give fname
see "Hello " + fname + nl

func sum
see "number 1 : " give num1 see "number 2 : " give num2
see "Sum : " see 0 + num1 + num2

func stars
for x = 1 to 10
see space(8)
for y = 1 to x see "*" next see nl
next

func fact x if x = 1 return 1 else return x * fact(x-1) ok

30.2. Main Menu 154


Ring Documentation, Release 1.3

func space x y = "" for t=1 to x y += " " next return y

Output:
Main Menu
===========
[1] Say Hello
[2] Sum two numbers
[3] Stars
[4] Fact
[5] Exit

Enter your name ? Mahmoud Fayed


Hello Mahmoud Fayed

Main Menu
===========
[1] Say Hello
[2] Sum two numbers
[3] Stars
[4] Fact
[5] Exit

number 1 : 3
number 2 : 4
Sum : 7

Main Menu
===========
[1] Say Hello
[2] Sum two numbers
[3] Stars
[4] Fact
[5] Exit

*
**
***
****
*****
******
*******
********
*********
**********

Main Menu
===========
[1] Say Hello
[2] Sum two numbers

30.2. Main Menu 155


Ring Documentation, Release 1.3

[3] Stars
[4] Fact
[5] Exit

Enter Number : 5
Output : 120

Main Menu
===========
[1] Say Hello
[2] Sum two numbers
[3] Stars
[4] Fact
[5] Exit

30.2. Main Menu 156


CHAPTER

THIRTYONE

ODBC FUNCTIONS

This chapter contains the ODBC functions provided by the Ring programming language.
odbc_init()
odbc_drivers()
odbc_datasources()
odbc_close()
odbc_connect()
odbc_disconnect()
odbc_execute()
odbc_colcount()
odbc_fetch()
odbc_getdata()
odbc_tables()
odbc_columns()
odbc_autocommit()
odbc_commit()
odbc_rollback()

31.1 odbc_init() Function

We can create ODBC Handle using the odbc_init() function


Syntax:
odbc_init() ---> ODBC Handle

31.2 odbc_drivers() Function

We can get a list of ODBC drivers using the odbc_drivers() function


Syntax:

157

Vous aimerez peut-être aussi