Code does not compile with IGOR 8: issue with /G variable
Erik_Kran
Hi,
I have been using a code that was compiling with Igor 6, but does not with Igor 8.04.
The beginning of the code is inserted below. The error code is:
Unknown/inappropriate name or symbol
if(LLimiteWN<=0)
LLimiteWN is a Global variable that is no longer recognized by the compiler.
Thanks in advance for your help.
Erik
#Pragma rtGlobals=0
#include "Keyword-Value-deliminor"
#include <Strings as Lists>
#include "GraphFormat.h"
#include "Cross_Hair_Cursors_for_Read_NicIR"
Menu "Macros" // .NicIR_mini2
"LoadNicoletFile<O/0"
submenu "SaveNicoletFile"
"SPX"
"ASCII"
end
"SaveOptCte"
"-"
"doFFT/2"
"Ratio/3"
"Absorbance/5"
"Transmittance/6"
"SpectralCalib"
"UnitConvert"
"-"
submenu "BaseLine"
"New Baseline"
"Validate Cursor/Q"
"Reset Baseline"
"Correct Baseline"
"Table BL points"
end
"SmoothWave/8"
submenu "Change Values"
"BlankRegion/7"
"kill_INF/1"
"NegatifToZero"
"Delete Point"
end
"-"
"Search Peaks"
"Substract/-"
"Deconvolve"
"-"
"DoTransfert2Trans/4"
"-"
end
Function/S LesWaveListes()
return(WaveList("*",";",""))
end
Function Init_glabalVar4Read()
VARIABLE/G LLimiteWN=400, HLimiteWN=4000, SSP=2, DisplayOrAppend, Is_Signed, ToSkip
VARIABLE/G NoLimite=0, LLimite, HautLimite
VARIABLE/G HeaderSize, FileSize, PointsInFile, Gain, ScanPoints, NumOfPoints, Peak_Location, NumOfScan
VARIABLE/G Ddate,Dtime,Year,moon,day,hour,minute,seconde,tick,temp1
VARIABLE/G/D GlobalOffset, GlobalFactor, FirstX, theDeltaX, LastX, XScale
VARIABLE/G/D XPosition, YPosition, LaserFrequency,ScanPeak_Location,MaxValY,MinValY
VARIABLE/G Velocity, Aperture,FFTPoints, NumScanBckgrd,NumPntsFFT
STRING/G Sdate,Stime, FileTitle,Le_Type,Le_Flags,Le_text,gFExtension= ".I*",Auto,OtherExt,History
VARIABLE/D/G xOfCursorA,xOfCursorB
VARIABLE/G DifFirstX
STRING/G CurrentWave,Head1,Head2,Head3,dw,nomFich,fSource,ListeW
STRING/G text
VARIABLE/G continuer
end
Function Init_glabalVar4Subs()
VARIABLE/G lx, rx
VARIABLE/G gvalueF,gIncrement
VARIABLE/G dw_max,dw_min,aw_max,aw_min,bw_max,bw_min
VARIABLE/G lx_dw,rx_dw,lx_aw,rx_aw,lx_bw,rx_bw
VARIABLE/G Axies_decalage1,Axies_decalage2,Axies_decalage3
STRING/G gaw, gbw, gdw
end
Proc KillGlobals4Subs()
KillStrings gaw,gbw,gdw
KillVariables dw_max,dw_min,aw_max,aw_min,bw_max,bw_min
KillVariables lx_dw,rx_dw,lx_aw,rx_aw,lx_bw,rx_bw
KillVariables Axies_decalage1,Axies_decalage2,Axies_decalage3
KillVariables lx,rx
end
Function Init_glabalVar4doProc()
VARIABLE/G KeepOld,undothis,defaultvalueV1,defaultvalueV2,var3
STRING/G promptaW, awList, bwList, dwList, promptV1, promptP1,PromptV2,v2List
STRING/G default_aW, default_bW, default_dW,defaultvalueP2,defaultvalueP2,para1List,defaultvalueP1
STRING/G wNameExt
// CoordonnÈes des curseurs et nombre de curseurs
VARIABLE/G nbCsr
STRING/G interWx,interWy
end
// Chargement d'un fichier au format SPX
Macro LoadNicoletFile(LowLimiteWN,HihgLimiteWN,AutoMan,WholeFolder,SampleSpace,FExtension,ForDisplay,OtherExtension)
VARIABLE LowLimiteWN = LLimiteWN*(1-nolimite),HihgLimiteWN =HLimiteWN*(1-nolimite),WholeFolder=2
VARIABLE ForDisplay=2
STRING SampleSpace= num2str(SSP),FExtension = gFExtension,AutoMan,OtherExtension=""
Prompt ForDisplay, "Display or Append", popup, "Display;Append;Display folder;None";
Prompt AutoMan, "Standard or manual range ?",popup,"Manual range;Automatic range"
Prompt SampleSpace, "Standard range", popup, "VFIR : 0 - 1975 cm-1 (SSP=8);FIR : 0 - 3950 cm-1 (SSP=4);MIR : 0 - 7899 cm-1 (SSP=2);Vis-NIR : 0 - 15798 cm-1 (SSP=1);UV-Vis : 0 - 31596 cm-1 (SSP=0.5)";
Prompt LowLimiteWN,"First wavenumber in cm-1 ( 0 => lower limit)"
Prompt HihgLimiteWN,"Last wavenumber in cm-1 ( 0 => upper limit)"
Prompt WholeFolder, "Read All Files in the Folder ?",popup,"Whole Folder with extension:;One File"
Prompt FExtension, "File Extension :",popup, "all;A;B;C;I;S;R"
Prompt OtherExtension, "Other Extension ?"
#include "Keyword-Value-deliminor"
#include <Strings as Lists>
#include "GraphFormat.h"
#include "Cross_Hair_Cursors_for_Read_NicIR"
Menu "Macros" // .NicIR_mini2
"LoadNicoletFile<O/0"
submenu "SaveNicoletFile"
"SPX"
"ASCII"
end
"SaveOptCte"
"-"
"doFFT/2"
"Ratio/3"
"Absorbance/5"
"Transmittance/6"
"SpectralCalib"
"UnitConvert"
"-"
submenu "BaseLine"
"New Baseline"
"Validate Cursor/Q"
"Reset Baseline"
"Correct Baseline"
"Table BL points"
end
"SmoothWave/8"
submenu "Change Values"
"BlankRegion/7"
"kill_INF/1"
"NegatifToZero"
"Delete Point"
end
"-"
"Search Peaks"
"Substract/-"
"Deconvolve"
"-"
"DoTransfert2Trans/4"
"-"
end
Function/S LesWaveListes()
return(WaveList("*",";",""))
end
Function Init_glabalVar4Read()
VARIABLE/G LLimiteWN=400, HLimiteWN=4000, SSP=2, DisplayOrAppend, Is_Signed, ToSkip
VARIABLE/G NoLimite=0, LLimite, HautLimite
VARIABLE/G HeaderSize, FileSize, PointsInFile, Gain, ScanPoints, NumOfPoints, Peak_Location, NumOfScan
VARIABLE/G Ddate,Dtime,Year,moon,day,hour,minute,seconde,tick,temp1
VARIABLE/G/D GlobalOffset, GlobalFactor, FirstX, theDeltaX, LastX, XScale
VARIABLE/G/D XPosition, YPosition, LaserFrequency,ScanPeak_Location,MaxValY,MinValY
VARIABLE/G Velocity, Aperture,FFTPoints, NumScanBckgrd,NumPntsFFT
STRING/G Sdate,Stime, FileTitle,Le_Type,Le_Flags,Le_text,gFExtension= ".I*",Auto,OtherExt,History
VARIABLE/D/G xOfCursorA,xOfCursorB
VARIABLE/G DifFirstX
STRING/G CurrentWave,Head1,Head2,Head3,dw,nomFich,fSource,ListeW
STRING/G text
VARIABLE/G continuer
end
Function Init_glabalVar4Subs()
VARIABLE/G lx, rx
VARIABLE/G gvalueF,gIncrement
VARIABLE/G dw_max,dw_min,aw_max,aw_min,bw_max,bw_min
VARIABLE/G lx_dw,rx_dw,lx_aw,rx_aw,lx_bw,rx_bw
VARIABLE/G Axies_decalage1,Axies_decalage2,Axies_decalage3
STRING/G gaw, gbw, gdw
end
Proc KillGlobals4Subs()
KillStrings gaw,gbw,gdw
KillVariables dw_max,dw_min,aw_max,aw_min,bw_max,bw_min
KillVariables lx_dw,rx_dw,lx_aw,rx_aw,lx_bw,rx_bw
KillVariables Axies_decalage1,Axies_decalage2,Axies_decalage3
KillVariables lx,rx
end
Function Init_glabalVar4doProc()
VARIABLE/G KeepOld,undothis,defaultvalueV1,defaultvalueV2,var3
STRING/G promptaW, awList, bwList, dwList, promptV1, promptP1,PromptV2,v2List
STRING/G default_aW, default_bW, default_dW,defaultvalueP2,defaultvalueP2,para1List,defaultvalueP1
STRING/G wNameExt
// CoordonnÈes des curseurs et nombre de curseurs
VARIABLE/G nbCsr
STRING/G interWx,interWy
end
// Chargement d'un fichier au format SPX
Macro LoadNicoletFile(LowLimiteWN,HihgLimiteWN,AutoMan,WholeFolder,SampleSpace,FExtension,ForDisplay,OtherExtension)
VARIABLE LowLimiteWN = LLimiteWN*(1-nolimite),HihgLimiteWN =HLimiteWN*(1-nolimite),WholeFolder=2
VARIABLE ForDisplay=2
STRING SampleSpace= num2str(SSP),FExtension = gFExtension,AutoMan,OtherExtension=""
Prompt ForDisplay, "Display or Append", popup, "Display;Append;Display folder;None";
Prompt AutoMan, "Standard or manual range ?",popup,"Manual range;Automatic range"
Prompt SampleSpace, "Standard range", popup, "VFIR : 0 - 1975 cm-1 (SSP=8);FIR : 0 - 3950 cm-1 (SSP=4);MIR : 0 - 7899 cm-1 (SSP=2);Vis-NIR : 0 - 15798 cm-1 (SSP=1);UV-Vis : 0 - 31596 cm-1 (SSP=0.5)";
Prompt LowLimiteWN,"First wavenumber in cm-1 ( 0 => lower limit)"
Prompt HihgLimiteWN,"Last wavenumber in cm-1 ( 0 => upper limit)"
Prompt WholeFolder, "Read All Files in the Folder ?",popup,"Whole Folder with extension:;One File"
Prompt FExtension, "File Extension :",popup, "all;A;B;C;I;S;R"
Prompt OtherExtension, "Other Extension ?"
Can you create a small self contained example? I don't see an if statement in the code you posted.
August 25, 2022 at 07:30 am - Permalink
The help file "What's New in Igor Pro 7" contains this:
You need to add this statement:
in any function that uses the global numeric variable LLimiteWN (assuming that the globals are in the root data folder) and likewise for all other global numeric variables.
Similarly you need to add this statement:
SVAR CurrentWave = root:CurrentWave
in any function that uses the global string variable CurrentWave and likewise for all other global string variables.
For background information, execute this:
For future programming, it is best to avoid global variables as much as practical. There is a good and simple explanation of this at this web page which I will quote here:
Also:
DisplayHelpTopic "Uses For Global Variables"
And for more search for "Why are global variables bad?"
August 25, 2022 at 07:31 am - Permalink
In reply to The help file "What's New in… by hrodstein
Thank you so much for your post. I will update the code. In fact, the original code was written in 1992 (!), then updated in 2003 - but by earlier post-docs and interns.
Erik
August 25, 2022 at 09:21 am - Permalink