青未了分享 http://blog.sciencenet.cn/u/yanghang

博文

IDL编译

已有 8843 次阅读 2015-5-4 19:59 |个人分类:IDL学习笔记|系统分类:科研笔记

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内置命令同名。






https://wap.sciencenet.cn/blog-346157-887355.html

上一篇:IDL数组操作
下一篇:IDL控制语句
收藏 IP: 150.229.204.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-29 15:10

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部