||
IDL程序分两类:过程(pro)和函数(Function)
Pro 过程名 ,参数1,参数2,参数3、、、关键字1,关键字2、、、
命令语句
End
Function 函数名,参数1,参数2,参数3、、、关键字1,关键字2、、、
命令语句
return ;这是过程与函数最大的区别 有返回值
End
(一)手动编译
在
IDL
编译程序中有
.Run
、
.Rnew
和
.Compile
三个可执行的命令。
.Run
是用来编译和执行
IDL
主程序的命令组合。
.Rnew
命令与
.Run
命令很相似,
不同之处在于,
Renew
命令在主程序编译和运行之
前将删除所有已经存在的变量
.Compile
命令编译过程和函数。
使用这三个命令时,
文件名不必用引号括起,
也没有必要用扩展名
.pro
。
几乎所有的
IDL
文件以
Pro
为扩展名。
要运行一个已经编译的程序,只要
IDL
命令输入行中输入程序模块名
在IDL编译程序中有.Run、.Rnew和.Compile三个可执行的命令。使用这三个命令时,文件名不必用引号括起,也没有必要用扩展名.pro。几乎所有的IDL文件以Pro为扩展名。要运行一个已经编译的程序,只要IDL命令输入行中输入程序模块名。
1. .compile
进行手动编译
多个过程和函数可以同时被编译。
2. .run和.rnew
.Run是用来编译和执行IDL主程序的命令组合。
.Rnew命令与.Run命令很相似,不同之处在于,Renew命令在主程序编译和运行之前将删除所有已经存在的变量。
3. .go
4. resolve_routine
Resolve_Routine命令,以IDL程序模块名作为参数,编译与之同名的文件
Resolve_Routine命令的优点在于可以用在IDL程序模块里来编译其他程序模块,而Compile命令只适用于IDL命令行。例如:要编译Cindex.pro文件中的所有程序模块,可以输入: IDL>Resolve,‘Cindex’编译时,不管它以前是否已编译过,程序仍然将被编译。
5.Resolve_All
Resolve_All 命令的功能与之很相似。Resolve_All 命令将交互式地搜索IDL内存中任何未编译的程序模块并同时编译它们。
(二)自动编译
1.retall
在任何错误导致一个IDL程序运行中断时,输入retall,返回主层次。
(三)程序编译规则
对于一个文件中有多个程序模块,程序编译规则对他们的顺序作出了要求。文件中的程序模块是一个接一个地编译,直到满足某个条件。下面的规则列出了这些条件。
规则1:编译到主程序后,编译就会停止,接着编译和运行主程序。这个规则表明了在一个文件中,只允许有一个主程序模块。如果要编译所有的程序模块,主程序模块必须是该文件中最后一个程序模块。
规则2:编译到与文件同名的程序模块时,文件将停止编译。在这种情况下,与文件同名的程序模块被编译后,立即执行该模块。 这就是说,如果想编译文件中的所有程序模块,与文件同名的程序模块应当放在最后。换句话说,如果最后一个程序模块是一个名为ImageOut的函数,文件名应为ImageOut.pro。
规则3:编译到文件末尾或适合其他规则时,文件将停止编译。这个规则表明,如果此文件中没有一个主程序或一个与文件同名的程序模块,文件中所有的模块将会被编译,并且不会运行任何一个程序模块。
程序编译和自动运行规则
当过程或函数出现在
IDL
命令、
IDL
命令行,或
IDL
代码中,它们会自动地被编译和运
行。过程或函数所在的文件存在于当前工作路径或由!
Path
系统变量指定的路径中。
在实践中,那些非常重要的、经常被其他程序调用的程序模块应该放在自己的文件或与
之同名的文件中。其他任何模块应位于主程序模块之前,或者它们是主程序的辅助性模块。
注意,
IDL
的系统过程,如
Plot
,
Surface
等,的优先级比其他命令高,因此,应当尽量
避免自己的程序与
IDL
内置命令同名。
(四)程序编译和自动运行规则
当过程或函数出现在IDL命令、IDL命令行,或IDL代码中,它们会自动地被编译和运行。过程或函数所在的文件存在于当前工作路径或由!Path系统变量指定的路径中。
在实践中,那些非常重要的、经常被其他程序调用的程序模块应该放在自己的文件或与之同名的文件中。其他任何模块应位于主程序模块之前,或者它们是主程序的辅助性模块。
注意,IDL的系统过程,如 Plot,Surface等,的优先级比其他命令高,因此,应当尽量避免自己的程序与IDL内置命令同名。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-29 15:10
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社