参考: 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. JAVA验证身份证号码是否合法

    package com.chauvet.utils; import java.text.ParseException; import java.text.SimpleDateFormat; impor ...

  2. HTTP错误类别

    http_status_bad_request (400) the request could not be processed by the server due to invalid syntax ...

  3. RSA 每次公钥加密不同结果

    今天服务器端一哥们突然跑过来跟我说:我发现公钥每次加密都不同结果啊? 我说:怎么可能?不同的话,私要怎么解密和验证啊? 然后我屁颠屁颠的试了下,结果发现不论在在线RSA的还是自己公司 利用同一个明文加 ...

  4. 重温CLR(十五) 托管堆和垃圾回收

    本章要讨论托管应用程序如何构造新对象,托管堆如何控制这些对象的生存期,以及如何回收这些对象的内存.简单地说,本章要解释clr中的垃圾回收期是如何工作的,还要解释相关的性能问题.另外,本章讨论了如何设计 ...

  5. 自定义vue全局组件use使用(解释vue.use()的原理)

    我们在前面学习到是用别人的组件:Vue.use(VueRouter).Vue.use(Mint)等等.其实使用的这些都是全剧组件,这里我们就来讲解一下怎么样定义一个全局组件,并解释vue.use()的 ...

  6. SpringBoot 接收 单个String入参之解决方案

    场景: 在做接口时,有的时候,接口入参只需要一个参数,如果将一个参数封装成一个对象很麻烦,故有了以下方式: 思路: spring自带的参数解析器貌似是不具备这个能力的,所有自定义 方式方法: 1.定义 ...

  7. [LeetCode系列]爬梯问题的递归解法转换为迭代解法

    有一个n阶的梯子, 你每次只能爬1阶或2阶, 请问共有多少种登顶的爬法?(正好爬完n阶, 不能多也不能少) 本题最优解是直接套用菲波那切数列即可(因为菲波那切数列的第n个元素正好等于第n-1个元素和第 ...

  8. tomcat日志分类

    综合:Tomcat下相关的日志文件 Cataline引擎的日志文件,文件名catalina.日期.log Tomcat下内部代码丢出的日志,文件名localhost.日期.log(jsp页面内部错误的 ...

  9. bzoj 4407 于神之怒加强版——反演

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4407 \( ans = \sum\limits_{D=1}^{min(n,m)}\frac{ ...

  10. for, while的用法

    for循环求1+2+3+4+....+100 # include <stdio.h> int main(void) { int i; //循环中更新的变量i不能定义成浮点型 ; ; i&l ...