Call a script within a script
Forums
Hi all,
I have created several scripts, one for each test. Now I want to run all of these scripts (or only some of them). My idea is to create a new script (maybe with option fields) from where I could start the other scripts. Is that possible?
Thank you,
Ole
Example of calling scripts from within a script
Hello Ole,
Here is an example for you. The first script has a menu with 3 buttons, the first button sends 4 character variables to a second script which displays the characters, the second button does the same but with integers and the third button asks for your name and then the second script will display your name. You will notice that in the third example even though we are only sending one variable we have to use "" for the other three variables.
The receiving scripts obtain these variables through the arg1, arg2, arg3 and arg4 variables. In this example I am just displaying them but in a more complex script you can take these variables and then work with them. Unfortunately there is only 4 variables that you can send at a time. If you need more you probably need to write the variables to a text file from the first script and then open the text file in the second script to obtain the variables.
The example scripts, once complete, will open the menu script again. You will notice that the function is different. The function used in the example scripts to return to the main script cannot send variables, it simply open the script.
Let me know if this answers your question or if you need more info on this.
I have attached the script that I used so you can play with them.
Good luck.
Brian
'*****************************************************************************************
'* Script :		CallAScriptMenu.iss
'* Author:	Brian Element
'* Date: 		Jan 29, 2013
'* Purpose:	Example of hot to call other scripts and return to the original script
'*****************************************************************************************
Begin Dialog NewDialog 21,20,201,179,"Calling Scripts Demo", .NewDialog
  PushButton 19,13,40,14, "Call Script 1", .PushButton1
  PushButton 20,41,40,14, "Call Script 2", .PushButton2
  Text 25,71,77,11, "Enter your Name:", .Text1
  TextBox 24,86,81,14, .TextBox1
  PushButton 27,109,40,14, "Call Script 3", .PushButton3
  OKButton 34,136,40,14, "OK", .OKButton1
  CancelButton 99,136,40,14, "Cancel", .CancelButton1
  Text 72,15,108,14, "This will pass the variables a, b, c and d.", .Text2
  Text 70,43,112,14, "This will pass the variable 1, 2, 3 and 4.", .Text3
End Dialog
Option Explicit
Sub Main
	'seeting up the variables to be used.
	Dim dlg As NewDialog
	Dim iButton As Integer
	Dim sName As String
	Dim sChar1 As String
	Dim sChar2 As String
	Dim sChar3 As String
	Dim sChar4 As String
	Dim iNum1 As Integer
	Dim iNum2 As Integer
	Dim iNum3 As Integer
	Dim iNum4 As Integer
	
	iButton = Dialog(dlg)
	
	Select Case iButton
		Case 1
			'This will send 4 characters to the file
			sChar1 = "a"
			sChar2 = "b"
			sChar3 = "c"
			sChar4 = "d"
			Client.RunIDEAScriptEX "CallAScriptExample1.iss", sChar1, sChar2, sChar3, schar4
		Case 2
			'This will send 4 integers to the file
			iNum1 = "1"
			iNum2 = "2"
			iNum3 = "3"
			iNum4 = "4"
			Client.RunIDEAScriptEX "CallAScriptExample2.iss", iNum1, iNum2, iNum3, iNum4
		Case 3
			'Even if you are only passing one variable you have to send blanks for the variables not being used.
			sName = dlg.TextBox1
			Client.RunIDEAScriptEX "CallAScriptExample3.iss", sName, "", "", ""
		
		
	End Select
End Sub
'*****************************************************************************************
'* Script :		CallAScriptExample1.iss
'* Author:	Brian Element
'* Date: 		Jan 29, 2013
'* Purpose:	Example of hot to call other scripts and return to the original script
'*****************************************************************************************
Sub Main
	MsgBox arg1
	MsgBox arg2
	MsgBox arg3
	MsgBox arg4
	Client.RunIDEAScript  "CallAScriptMenu.iss"
End Sub
'*****************************************************************************************
'* Script :		CallAScriptExample2.iss
'* Author:	Brian Element
'* Date: 		Jan 29, 2013
'* Purpose:	Example of hot to call other scripts and return to the original script
'*****************************************************************************************
Sub Main
	MsgBox arg1
	MsgBox arg2
	MsgBox arg3
	MsgBox arg4
	Client.RunIDEAScript  "CallAScriptMenu.iss"
End Sub
'*****************************************************************************************
'* Script :		CallAScriptExample3.iss
'* Author:	Brian Element
'* Date: 		Jan 29, 2013
'* Purpose:	Example of hot to call other scripts and return to the original script
'*****************************************************************************************
Sub Main
	MsgBox "Your name is: " & arg1
	Client.RunIDEAScript  "CallAScriptMenu.iss"
End Sub
Hi Brian,
Hi Brian,
Thank you so much for putting up this example. It is exactly what I am looking for. I have dowloaded your sample script and tried to run it however it said "Invalid macro filename". I am not sure if I have to copy the submacro to a specific folder in IDEA? 
Many thanks,
 
 
Hi Ole,
Hi Ole,
Glad I could help and glad you enjoyed the videos. IDEAScript is actually a very powerful language once you learn it but like anything else it takes time to learn how to use it. Let me know if you have any subjects you want me to explain or cover in the future. I am always looking for topics that could help users out.
Brian
 
         
Hi Ole and welcome to the
Hi Ole and welcome to the site. Yes it is, you can have up to 4 parameters that you can pass between scripts. I will try and put together an example for you to look at. It has been awhile since I have done this so give me a few days to refresh my memory and do an example for you.