参考: Programming and Control


序号 类名称  

功能说明

  语法 & 举例
01 DEFSYSV  

====<<<< Description >>>>====

新建一个系统变量。
可以跨程序使用,但是前提是所在程序需要“运行”一次才行。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

DEFSYSV, Name, Value [, Read_Only] [, EXISTS=variable] [, /TEST]

----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  Name:新建系统变量的名称,一般大写并以感叹号开头,例如:!RUNDIR。
◈  Value:初始化的值,可以是数字、字符串、数组或结构体。
◈  Read_Only:设置非零的话为只读,默认可以修改
◈  EXISTS:将此关键字设置为一个变量,此变量返回是否这个名字的系统变量已经存在,1为存在,0为不存在。
◈  EXISTS:设置此关键字,仅当此系统变量不存在的时候创建。

 

IDL> DEFSYSV, '!XYZ', EXISTS = i
IDL> IF i EQ 1 THEN PRINT, '!XYZ exists' ELSE PRINT, $
> '!XYZ does not exist'
!XYZ does not exist
02 EXECUTE  

====<<<< Description >>>>====

用来执行字符串所表达的可编译的函数。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

Result = EXECUTE(String [, CompileFlags] [, QuietExecution])
----------------------------------------------------------------------------------

====<<<< Return Value >>>>====

如果编译并执行了则返回 1,如果发生错误则返回 0。
----------------------------------------------------------------------------------

====<<<<  Parameters >>>>====

◈  String:表达式。
◈  CompileFlags:0、1、2
  0:默认值,正常输出错误,没有赋值给变量的表达式会报错
  1:不输出错误、不输出结果
  2:不输出错误、输出结果
◈  QuietExecution:设置此关键字,不输出错误。

 
IDL> void = execute('a=abs(-5)')
IDL> print, a
5 IDL> void = execute('abs(-5)', 2)
5
IDL> print, void
1
03 EXIT  

====<<<< Description >>>>====

退出 IDL。不能取消。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

EXIT [, /NO_CONFIRM] [, STATUS=code]
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  NO_CONFIRM:不显示任何确认框,否则会提示“是否保存”。

   
04 GET_LOGIN_INFO  

====<<<< Description >>>>====

返回运行 IDL 电脑的名称以及用户的登录名。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

Result = GET_LOGIN_INFO()
----------------------------------------------------------------------------------

====<<<<  Return Value >>>>====

返回一个匿名结构体,包括 MACHINE_NAME 和 USER_NAME。

 
IDL> get_login_info()
{
MACHINE_NAME: "JGZX-BNLI-B1",
USER_NAME: "McDelfino"
}
05 HELP  

====<<<< Description >>>>====

提供帮助信息。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

HELP, Expression1, ..., Expressionn, /BREAKPOINTS, /BRIEF, /DEVICE, /DLM, /FILES, /FULL, /FUNCTIONS, /HEAP_VARIABLES, /KEYS, /LAMBDA, /LAST_MESSAGE, LEVEL=value, /MEMORY, /MESSAGES, NAMES=string_of_variable_names, /OBJECTS, OUTPUT=variable, /PATH_CACHE, /PREFERENCES, /PROCEDURES, /RECALL_COMMANDS, /ROUTINES, /SHARED_MEMORY, /SOURCE_FILES, /STRUCTURES, /SYSTEM_VARIABLES, /TRACEBACK

----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  Expression:不选择关键字的情况下提供基本信息。
◈  STRUCTURE:更好的显示结构的内容。

 
IDL> a = 2
IDL> b = 'a'
IDL> help, a, b
A INT = 2
B STRING = 'a'
IDL> help, get_login_info(), /structure
** Structure <cf77d80>, 2 tags, length=32, data length=32, refs=1:
MACHINE_NAME STRING 'JGZX-BNLI-B1'
USER_NAME STRING 'McDelfino'
06 TAG_NAMES  

====<<<< Description >>>>====

返回结构体成员名字的字符串数组。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

Result = TAG_NAMES( Expression [, /STRUCTURE_NAME] )

----------------------------------------------------------------------------------

====<<<< Return Value >>>>====

返回结构体成员名称或者结构体的名称。
----------------------------------------------------------------------------------

====<<<<  Parameters >>>>====

◈  Expression:结构体。
◈  STRUCTURE_NAME:设置此关键字,返回结构体名称,对于匿名结构体而言返回值为空。

 
IDL> s1 = {a:1, b:INDGEN(5), c:'hello'}
IDL> PRINT, TAG_NAMES(s1)
A B C
IDL> PRINT, TAG_NAMES(s1, /structure_name) IDL> print, tag_names(get_login_info())
MACHINE_NAME USER_NAME
IDL> s2 = {s2name, a:1, b:INDGEN(5), c:'hello'}
IDL> PRINT, TAG_NAMES(s2, /structure_name)
S2NAME
07 ROUTINE_FILEPATH  

====<<<< Description >>>>====

返回当前正在编译的过程或函数的完整路径。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

Result = ROUTINE_FILEPATH( [Routine] [, /EITHER] [, /IS_FUNCTION] )

----------------------------------------------------------------------------------

====<<<< Return Value >>>>====

返回程序所在完整路径的字符串或字符串数组。
----------------------------------------------------------------------------------

====<<<<  Parameters >>>>====

◈  Routine:程序名称,如果设置为函数的话,需要指定IS_FUNCTION or EITHER keyword。不赋值的话,返回当前程序的路径。
◈  EITHER:过程和函数的路径均获取。
◈  IS_FUNCTION:只搜索函数,不搜索过程。

 
;获取当前程序的路径
PRINT, FILE_DIRNAME(ROUTINE_FILEPATH())
;获取当前工作空间的路径
CD, current=c
PRINT, c
-------          

【298】◀▶ IDL 系统过程&函数的更多相关文章

  1. win32编程中消息循环和WndProc()窗口过程函数

    原文地址:https://blog.csdn.net/zxxSsdsd/article/details/45504383 在win32程序的消息循环函数中  while (GetMessage (&a ...

  2. windows窗口过程函数名词解析

    windows窗口过程函数名词解析 LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) 1. LR ...

  3. win32程序通过LPCREATESTRUCT中的lpCreateParams传递参数给窗口过程函数

    win32窗口程序中如果需要给窗口过程函数传递自定义参数,可以通过LPCREATESTRUCT结构体中的lpCreateParams进行传递. 创建窗口实例函数: m_hWnd = CreateWin ...

  4. [javascript]获取系统时间函数

    var oDate=new Date(); //初始化系统时间函数 alert(oDate.getHours()); //获取时 alert(oDate.getMinutes()); //获取分 al ...

  5. MFC如何添加系统消息处理函数?

    http://zhidao.baidu.com/question/318026804.html 在MFC程序中,我们并不经常直接调用Windows API,而是从MFC类创建对象并调用属于这些对象的成 ...

  6. Delphi过程函数传递参数的八种方式

    今天一同事问我为什么有些过程函数里面有Var而有些没有,不解,遂到网上百度,得解.快哉,快哉. 在Delphi过程.函数中传递参数几个修饰符为Const.Var.Out.另一种不加修饰符的为默认按值传 ...

  7. 在中断服务函数中使用FreeRTOS系统延时函数vTaskDelay导致看门狗复位的情况

    @2019-04-09 [问题] 控制程序工作一段时间异常重启 [分析] 经定位分析重启原因为看门狗复位导致 [解决] 经排查发现在中断服务函数中使用了FreeRTOS的系统时延函数vTaskDela ...

  8. Delphi过程函数传递参数的几种方式

    Delphi过程函数传递参数的几种方式  在Delphi过程.函数中传递参数几个修饰符为Const.Var.Out. 另一种不加修饰符的为默认按值传递参数. 一.默认方式以值方式传递参数 proced ...

  9. Linux下系统时间函数、DST等相关问题总结(转)

    Linux下系统时间函数.DST等相关问题总结 下面这个结构体存储了跟时区相关的位移量(offset)以及是否存在DST等信息,根据所在的时区信息,很容易找到系统时间与UTC时间之间的时区偏移,另外根 ...

随机推荐

  1. web.xml配置详解(2)

    1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的 ...

  2. psoc4的中断笔记

    psoc可以自定义中断服务函数.

  3. 【spring源码学习】spring配置的事务方式是REQUIRED,但业务层抛出TransactionRequiredException异常问题

    (1)spring抛出异常的点:org.springframework.orm.jpa.EntityManagerFactoryUtils public static DataAccessExcept ...

  4. uwsgi配置理解

    最近使用uwsgi 部署了flask应用,出现了不少问题,仔细查阅了一下资料以及翻看了官方文档,就对自己了解到的做个总结~~ 一.http/http-socket/socketuwsgi开头当然少不了 ...

  5. nginx 支持ie 6 等低版本https 的配置

    nginx 配置 https 支持ie6 等低版本(主要是加密套件的问题) server { listen 443 ssl; server_name itapiway.demo.com; ssl_ce ...

  6. 互联网的keyvalue处理

    今天在和许伟讨论系统配置页面得时候,许伟提到了“打通页面”的概念,当时我没太明白,后来才知道是指类似于cloudera里面的配置页面那种,不是列表页,而是展示+编辑在一个页面.刚才想了一下,其实对于这 ...

  7. websphere删除概要文件(profiles)的方式

    [b]删除概要文件:[/b]方案一:1.找到profileRegistry.xml,在目录IBM\WebSphere\AppServer\properties里,去掉想删除的profile的配置即可. ...

  8. linux(8)

    第十九单元 nfs服务 ===============服务端 介绍: NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于198 ...

  9. Netty--JDK序列化编解码传输对象

    使用JDK序列化不需要额外的类库,只需要实现Serializable即可,但是序列化之后的码流只有Java才能反序列化,所以它不是跨语言的,另外由于Java序列化后码流比较大,效率也不高,所以在RPC ...

  10. if __name__=="__main__": 这个结尾的理解

    print "别人应用我做为模块导入,就只看到我" if __name__=="__main__": print "自己文件执行就看到我输出" ...