DDUX^I"@[Mgic@  !$ (-.048<@DHpTTT^^DFCC4D[<2! ,I(L]$$ ]Run_ChangedRun@nd(U]$@.]} RunNumberArrayHiers?$ ]Run_ChangedRun@](qDFWL4D   Pul  DFCC4D[=2! ,I(L]$$ ]Run_ChangedRun@nd(U]$@.]} RunNumberArrayHiers?$ ]Run_ChangedRun@](qDFCC4D[>2! ,I(L]$$ ]Run_ChangedRun@nd(U]$@.]} RunNumberArrayHiers?$ ]Run_ChangedRun@](qDFPA4Dn,հ].恮|q恮.T6^.݁KʭO[X.맣ɸzTsG恮oʯ̼Z쁮ߜE7恮.>.Z}_KK'[cQ.ʩ X9~QG1 X9.恮DFPA4Dn.DFListGmwn8^0 / ${p!P(\1 / ${p!P(\2 / ${p!P(\3 / ${p!P(\4 / ${p!P(\5 / ${p!P(\6 / ${p!P(\DFListbYmwn8^Ocean Flux Errors{p!P(\heOcean Flux Errors{p!P(\he?Some of the files needed to process the run could not be found., The run folder is missing.P(\he, The run folder is missing.P(\he!, The ocean flux file is missing., The run folder is missing.P(\he", The ocean basin file is missing., The rsf file is missing.g.P(\he, The rsf file is missing.g.P(\he&, There are no valid years to process., The rsf file is missing.g.P(\heG, You cannot process years that are beyond the current simulation date., The rsf file is missing.g.P(\he , The first oda file is missing., The rsf file is missing.g.P(\heDFList epLb has no trend ${p!P(\po uses data file "^0"p!P(\po uses a step function ofp!P(\po has a constant change of !P(\po has a constant change of !P(\po linearly changes by ^0 per year has a constant change of !P(\po, exponentialy changes by ^0 percent per yearDFListBmwn8^ Delete errors ${p!P(\ cDelete errors ${p!P(\ c$You cannot delete these simulations:, has a folder.${p!P(\ c, is archived..${p!P(\ c, is a master scenario.p!P(\ cDFList{RunNumberArrayHierSample_Control_Run{̿p!P(\Solar_Decrease_Run{̿p!P(\ Modern_1958ase_Run{̿p!P(\Global_Warming_01n{̿p!P(\ 58mya_test_01g_01n{̿p!P(\ Ice_Age_21kyag_01n{̿p!P(\SnowballEarth_580Ma̿p!P(\ newobservered_580Ma̿p!P(\ ObservedOcean_010Ma̿p!P(\DFList](.w8contains ${p!P(\ starts with ${p!P(\ ends withth ${p!P(\isds withth ${p!P(\DFListz6mwn8^Title / ${|p!P(\ eJournal ID ${|p!P(\Authoral ID ${|p!P(\DFListKmw8^ Setup errors ${ 8p!P(\heSetup errors ${ 8p!P(\he=Some of the files needed to start the run could not be found:Setup errors ${ 8p!P(\he8, The ground initial conditions file could not be found.Setup errors ${ 8p!P(\he*, The ocean input file could not be found.Setup errors ${ 8p!P(\he5, The drag coefficient input file could not be found.Setup errors ${ 8p!P(\he/, The radiation file, RTAU, could not be found.Setup errors ${ 8p!P(\he/, The radiation file, RPLK, could not be found.Setup errors ${ 8p!P(\he/, The vegatation input file could not be found.Setup errors ${ 8p!P(\he/, The topography input file could not be found.rrors ${ 8p!P(\herrors ${ 8p!P(\he<, The atmosphere initial conditions file could not be found.rrors ${ 8p!P(\heF, The ocean file for predicted SSTs (Qflux OTSPEC) could not be found.rrors ${ 8p!P(\he;, The Max. Mixed Layer Depth file (MLD) could not be found.rrors ${ 8p!P(\he4, The deep ocean input file (ED) could not be found.rrors ${ 8p!P(\he8, The ocean basins file is needed to collect ocean flux.rrors ${ 8p!P(\heDFList|(.n8mII2test01sC9_ANN1901-1911!P(\mII2test01sC9_JUL1901-1911!P(\DFListmwn8^None / ${пp!P(\ Data File ${пp!P(\ Step (ppm) ${пp!P(\Constant (ppm) ${пp!P(\ Linear (ppm)m) ${пp!P(\Exponential (%)${пp!P(\DFListQ"mw8^Setup critical errorsp!P(\heSetup critical errorsp!P(\heYou need to fix a few things before you can every try to setup this run. You are missing the following critical pieces of information:ritical errorsp!P(\heritical errorsp!P(\he+, The default input folder cannot be found.ritical errorsp!P(\he*, The custom input folder cannot be found.ritical errorsp!P(\he$, The output folder cannot be found.ritical errorsp!P(\he , The run folder already exists.DFListhmw8^ / ${ܿp!P(\rrSThis is a list of folders that can be pointed to by path manager. The first name is / ${ܿp!P(\rr3the constand the second name is the filesystem namekEdGCM;p!P(\rrkDatabase;P(\rrkDatabase;P(\rr/kCurrentRun;kOutput;Output PM_Database>P(\rr kInput;Inputut PM_Database>P(\rrDFList!(j8jpeg / ${ Xp!P(\jpgg / ${ Xp!P(\jp2g / ${ Xp!P(\pict / ${ Xp!P(\pctt / ${ Xp!P(\pict / ${ Xp!P(\tiff / ${ Xp!P(\tiff / ${ Xp!P(\giff / ${ Xp!P(\giff / ${ Xp!P(\8bps / ${ Xp!P(\8bim / ${ Xp!P(\psdm / ${ Xp!P(\pngf / ${ Xp!P(\pngf / ${ Xp!P(\pdff / ${ Xp!P(\pdff / ${ Xp!P(\bmpf / ${ Xp!P(\DFListdamwn8^1 / ${ dp!P(\2 / ${ dp!P(\3 / ${ dp!P(\4 / ${ dp!P(\5 / ${ dp!P(\6 / ${ dp!P(\7 / ${ dp!P(\8 / ${ dp!P(\9 / ${ dp!P(\10 / ${ dp!P(\11 / ${ dp!P(\12 / ${ dp!P(\13 / ${ dp!P(\14 / ${ dp!P(\15 / ${ dp!P(\16 / ${ dp!P(\17 / ${ dp!P(\18 / ${ dp!P(\19 / ${ dp!P(\20 / ${ dp!P(\DFListw=Messages UAM_Messages9` 0% /p_Mes(\s('UAM 1.0d2 (User Authentication Manager)Login9` 0% /p_Mes(\s(login window title[(ZPLogin9` 0% /p_Mes(\s(EEdGCM requires that you enter your username and password to continue.login window message(ZP Authenticate% /p_Mes(\s(authentication window titlePAuthenticate% /p_Mes(\s(>EdGCM requires an administrative user to complete this action.  auth messageon window titlePDFListmwn8^Run ID / ${Կp!P(\LabelD / ${Կp!P(\OceanD / ${Կp!P(\DatenD / ${Կp!P(\OwnerD / ${Կp!P(\DFList+ m{w8bInfo / ${ Lp!P(\Init / ${ Lp!P(\Ocen / ${ Lp!P(\Diag / ${ Lp!P(\Forc / ${ Lp!P(\CO2c / ${ Lp!P(\N2Oc / ${ Lp!P(\CH4c / ${ Lp!P(\CFC11 / ${ Lp!P(\CFC12 / ${ Lp!P(\Sol12 / ${ Lp!P(\Pow12 / ${ Lp!P(\Dev12 / ${ Lp!P(\DFList6}m{T08b0 / ${ hp!P(\A 31 / ${ hp!P(\A 59 / ${ hp!P(\A 90 / ${ hp!P(\A 120 / ${ hp!P(\A 151 / ${ hp!P(\A 181 / ${ hp!P(\A 212 / ${ hp!P(\A 243 / ${ hp!P(\A 273 / ${ hp!P(\A 304 / ${ hp!P(\A 334 / ${ hp!P(\A 365 / ${ hp!P(\A 365 / ${ hp!P(\A 365 / ${ hp!P(\A 0These are the days for each month from the model365 / ${ hp!P(\A :DATA JDOFM/0,31,59,90,120,151,181,212,243,273,304,334,365/365 / ${ hp!P(\A DFList0`mwĄ=^Run ID / ${p!P(\ Creation Date ${p!P(\DFList5#`$8rsf_ / ${ |p!P(\grnd / ${ |p!P(\obsr / ${ |p!P(\topo / ${ |p!P(\vegt / ${ |p!P(\drag / ${ |p!P(\rtau / ${ |p!P(\rplk / ${ |p!P(\ocen / ${ |p!P(\mmld / ${ |p!P(\basn / ${ |p!P(\difu / ${ |p!P(\sprg / ${ |p!P(\pbtb / ${ |p!P(\pbso / ${ |p!P(\pbuo / ${ |p!P(\pbsi / ${ |p!P(\pbui / ${ |p!P(\pbsl / ${ |p!P(\pbul / ${ |p!P(\DFList=mw8^0 / ${ Pp!P(\1 / ${ Pp!P(\2 / ${ Pp!P(\3 / ${ Pp!P(\4 / ${ Pp!P(\5 / ${ Pp!P(\6 / ${ Pp!P(\7 / ${ Pp!P(\8 / ${ Pp!P(\9 / ${ Pp!P(\10 / ${ Pp!P(\11 / ${ Pp!P(\DFListUm{8@$8b Import errors ${ȿp!P(\ sImport errors ${ȿp!P(\ snThe simulation "^0" cannot import ^1 fields because EdGCM could not find them in this version of the database.P(\ sDFList mw8^315.0 / ${ Tp!P(\ar0.295 / ${ Tp!P(\ar1.400 / ${ Tp!P(\ar0.008 / ${ Tp!P(\ar0.025 / ${ Tp!P(\ar1367.0 / ${ Tp!P(\ar1367.0 / ${ Tp!P(\ar1c ** Here are the original lines from R83ZAmacC91367.0 / ${ Tp!P(\arMC H2O CO2 O3 O2 NO2 N2O CH4 CCL3F1 CCL2F2 4211.1367.0 / ${ Tp!P(\arMC DATA FULGAS/1.0, 1.0,1.0, 1.0,1.0, 1.0, 1.0, 1.0, 1.0/4212.1367.0 / ${ Tp!P(\arMc DATA PPMV58/0.0,315.0,0.0,210000.,0.0,0.295,1.400,8.00E-6,25.0E-6/4213.1367.0 / ${ Tp!P(\arGsolar is derived from a different dataset, but the 1958 value is 1367.0DFListGm{T08b 7.826x10x9 ${ lt: : alues from year: 0maDFList9 Trend orbitdSim Trend orbit嵔None9 00%Op /m Tr'or Calculate 00%Op /m Tr'or Use Data File%Op /m Tr'orDFListE]Page&_\Td PostPage4Td019 `%OpTd 0tPag'29 `%OpTd 0tPag'39 `%OpTd 0tPag'49 `%OpTd 0tPag'59 `%OpTd 0tPag'DFListE%LhtmlV` , ,Р ,pl'< ,pl'���������������<html><head><title> ,pl'���7



,pl'��������������</body></html> tle> ,pl'���������������</body></html> tle> ,pl'���,<!-- Support for an image: image, x, y -- 6>����������<p align=center>le> ,pl'��������������<p align=center><img src=l'��������������></p>ign=center><img src=l'��������������</p> ign=center><img src=l'���������������</p> ign=center><img src=l'��� <!-- Support a text block -- 11>����������<p>> ign=center><img src=l'��������������</p> ign=center><img src=l'��������������<small>n=center><img src=l'��������������</small>=center><img src=l'���������������</small>=center><img src=l'��� <!-- Javascript goes here -- 16>����������<p align=center><A href="l'�������������� "><IMG SRC="ter><A href="l'�������������� "></A></p>="ter><A href="l'��������������<!--Table for images-- 20>'���������������<!--Table for images-- 20>'���1<small><table align=center summary="Figures"><tr>�����������<!--Table for images-- 20>'���#<td align="center" valign="bottom">����������</td>able for images-- 20>'��������������<td width="15%"></td>- 20>'��������������</tr></table></small>- 20>'��������������</tr></table></small>- 20>'��������������<td align="left" valign="top">'��������������<td align="right" valign="top">'���������������<td align="right" valign="top">'���$</td> <td align="left" valign="top">����������<!--Logo-- 30>ht" valign="top">'���������������<!--Logo-- 30>ht" valign="top">'���Q<p align="center"><img src="Images/Logo.jpg" alt="EdGCM Logo" align="middle"></p>���������������DFListg�n modes��� Ocean modes����V�������������������� Specified SST����d.an m.��������������Mixed-Layer Ocean (Qflux)an m.��������������Mixed-Layer + Deep Diffusionm.��������������Observed SST (1871-2002)sionm.�������������� Dynamic Ocean(1871-2002)sionm.������������DFListF2�n modes shortcean modes shortV�������������������� Specified SST����/pan m. s�������������� Mixed-LayerST����/pan m. s��������������Mixed-Layer Deep�/pan m. s��������������Observedyer Deep�/pan m. s��������������Dynamicdyer Deep�/pan m. s������������DFListO�ts�%L���Alerts�������V����������������������` 7Q 7P����œ` 7OprtsL.���GReplace eJournal?;Are you sure you want to overwrite the eJournal "^0"?������������` 7Q 7P����œ` 7OprtsL.���9Save error;Can't save simulation "^0" because it is busy.������������` 7Q 7P����œ` 7OprtsL.���7Save error;Can't save eJournal "^0" because it is busy.������������` 7Q 7P����œ` 7OprtsL.���dThis eJournal has no title;You cannot convert this eJournal to a web page without giving it a title.������������` 7Q 7P����œ` 7OprtsL.���]Can't import image;You need to pick a valid name to import the image and a valid folder name.������������` 7Q 7P����œ` 7OprtsL.���Can't import image;The image could not be imported because file "^0" already exists. You can import the image again with a different name.������������` 7Q 7P����œ` 7OprtsL.���TCannot save pasted image;The image "^0" could not be saved because an error occured.������������` 7Q 7P����œ` 7OprtsL.���VCannot paste image;Images pasted into eJournals must be copied from the image browser.������������` 7Q 7P����œ` 7OprtsL.���FNothing to show;You can't list the simulations because there are none.����������10` 7Q 7P����œ` 7OprtsL.���������������10` 7Q 7P����œ` 7OprtsL.���DNothing to show;You can't list the eJournals because there are none.�����������10` 7Q 7P����œ` 7OprtsL.���lCan't create scenario;You cannot make a scenario from this simulation. First run "^0" for at least one hour.�����������10` 7Q 7P����œ` 7OprtsL.���<Can't clean up ^0;There is no run folder for ^0 to clean up.�����������10` 7Q 7P����œ` 7OprtsL.���XCan't clean up ^0;You have not selected a range or years to clean up or a month to keep.�����������10` 7Q 7P����œ` 7OprtsL.���Really clean up ^0?;Cleaning up will delete files. You cannot undo this operation. Cleaning up will free up about ^1 of disk space?�����������10` 7Q 7P����œ` 7OprtsL.���Really clean up ocean folder for ^0?;All files in the ocean folder will be deleted regardless of the date range you select. Are you sure you want to do this?�����������10` 7Q 7P����œ` 7OprtsL.���dMissing Picture;The picture could not be read because it is missing or is not in a supported format.�����������10` 7Q 7P����œ` 7OprtsL.���You have extended the run "^0" to "^1";If the simulation was running previously you need to restart it for the new end date to take effect.�����������10` 7Q 7P����œ` 7OprtsL.���Can only extend run "^0" to "^1". A simulation can only be extended to the end of your longest trend. Do you want to extend "^0" to "^1".����������20` 7Q 7P����œ` 7OprtsL.���������������20` 7Q 7P����œ` 7OprtsL.���Missing solar correction file;The solar correction file in folder "^0" is missing. You will need to fill out the solar correction value manually.�����������20` 7Q 7P����œ` 7OprtsL.���Break instructor scenario?;If you break the instructor scenario "^0" it will no longer run in scenario mode. Links between this instructor scenario and its student scenarios may be broken and no more student scenarios will be allowed for this run.�����������20` 7Q 7P����œ` 7OprtsL.���yMark run as archived?;Marking run "^0" as archived will prevent you from running it. Archived runs can only be processed.�����������20` 7Q 7P����œ` 7OprtsL.���\Can't delete run;You cannot delete run "^0" because it is archived or a instructor scenario.�����������20` 7Q 7P����œ` 7OprtsL.���qCan't delete run;Run "^0" has a run folder in output and cannot be deleted. You must delete the run folder first.�����������20` 7Q 7P����œ` 7OprtsL.���FDelete run?;Are you sure that you want to delete run "^0" permanently?�����������20` 7Q 7P����œ` 7OprtsL.���<No runs left;You have no runs left, please create a new run.�����������20` 7Q 7P����œ` 7OprtsL.���RCan't delete run "^0";Deleting the first record is not currently allowed in EdGCM.�����������20` 7Q 7P����œ` 7OprtsL.���VCan't import;This file cannot be imported because it does not contain any simulations.����������30` 7Q 7P����œ` 7OprtsL.���������������30` 7Q 7P����œ` 7OprtsL.���\Can't import;The simulation "^0" you want to import is a duplicate of an existing simulation�����������30` 7Q 7P����œ` 7OprtsL.���UCan't import;The simulation "^0" you want to import is from a newer version of EdGCM.�����������30` 7Q 7P����œ` 7OprtsL.���Incomplete import;When simulation "^0" was imported ^1 fields could not be matched. The simulation may be incomplete and you should check it.�����������30` 7Q 7P����œ` 7OprtsL.���vNo diagnostic files found.;To view simulation output you must first create diagnostics using the Analyze Output tools.�����������30` 7Q 7P����œ` 7OprtsL.���SNo time period;You must pick at least one time period to average over for the Maps.�����������30` 7Q 7P����œ` 7OprtsL.���bDelete section?;Deleting a section cannot be undone. Are you sure you want to delete this section?�����������30` 7Q 7P����œ` 7OprtsL.���HCan't delete section;You cannot delete the only section in the eJournal.�����������30` 7Q 7P����œ` 7OprtsL.���Ocean flux problems;The ocean basin file cannot be found. You will still collect ocean fluxes but cannot process them without some help.�����������30` 7Q 7P����œ` 7OprtsL.���DDelete simulations?;Are you sure you want to delete ^0 simulation^1?����������40` 7Q 7P����œ` 7OprtsL.���������������40` 7Q 7P����œ` 7OprtsL.���The file "^0" contains ^1 simulations with ^2 duplicates of run IDs already in your database. To overwrite the duplicates (except for those marked old-model), choose Import. Don't Replace will not import duplicates.�����������40` 7Q 7P����œ` 7OprtsL.���Too few years (bug);You have selected less than 9 years to process for the simulation "^0". Due to a bug in PlotShop too few years doesn't work, sorry.�����������40` 7Q 7P����œ` 7OprtsL.���Replace existing maps?;The file "^0" already exists. If you create new maps you will replace any variables you selected in the past with the current selection.�����������40` 7Q 7P����œ` 7OprtsL.���iNo images found;No images were found durring the update. Probably your images folder is missing or empty.�����������40` 7Q 7P����œ` 7OprtsL.���jNot avalible;The file "^0" cannot be viewed because the PC version of SuSpect is not avalible in EdGCM ^1.�����������40` 7Q 7P����œ` 7OprtsL.���mMissing topography file;You cannot create tables because the topography file is missing from your simulation.�����������40` 7Q 7P����œ` 7OprtsL.���YMissing topography file;You cannot analyze output because the topography file is missing �����������40` 7Q 7P����œ` 7OprtsL.���Locked database file;You cannot run EdGCM because the database file is locked. Either permissions are wrong or you are trying to run EdGCM off a CD.�����������40` 7Q 7P����œ` 7OprtsL.���GMissing folder;You cannot run EdGCM because the folder "^0" is missing.����������50` 7Q 7P����œ` 7OprtsL.���������������50` 7Q 7P����œ` 7OprtsL.���\Can't create set;You cannot create set "^0" because a set with the same name already exists.�����������50` 7Q 7P����œ` 7OprtsL.���oDuplicate scenario?;You cannot start a scenario directly. Would you like to create a duplicate of "^0" instead?�����������50` 7Q 7P����œ` 7OprtsL.���HCan't start;You cannot start the simulation "^0" because it is archived.�����������50` 7Q 7P����œ` 7OprtsL.���SOutdated set;Oops, set "^0" is outdated and cannot be used. Please delete this set.�����������50` 7Q 7P����œ` 7OprtsL.���[Duplicate set name;You can't create set "^0" because there is already a set with that name.�����������50` 7Q 7P����œ` 7OprtsL.���KDelete eJournal?;Are you sure you want to delete eJournal "^0" permanently?�����������50` 7Q 7P����œ` 7OprtsL.���[Duplicate set name;You can't rename set "^0" because there is already a set with that name.�����������50` 7Q 7P����œ` 7OprtsL.���[Can't extend simulation. Simulation "^0" cannot be extened beyond the length of the trends.�����������50` 7Q 7P����œ` 7OprtsL.���sErase simulation and start over?;Delete all previous output from simulation "^0" and start over from the beginning?����������60` 7Q 7P����œ` 7OprtsL.���������������60` 7Q 7P����œ` 7OprtsL.���?No trend files;There are no trend files available to pick from.�����������60` 7Q 7P����œ` 7OprtsL.���Missing default simulation;The default simulation "Sample_Control_Run" is missing, you cannot create new runs, though duplicate will still work.�����������60` 7Q 7P����œ` 7OprtsL.���SImport complete;EdGCM 4D works best if you restart after importing. Quit EdGCM now?�����������60` 7Q 7P����œ` 7OprtsL.���=Invalid search;No run ids contained the search criteria "^0".�����������60` 7Q 7P����œ` 7OprtsL.���iCan't create scenario;You cannot create a new scenario from "^0" because it is already a parent scenario.�����������60` 7Q 7P����œ` 7OprtsL.���fCan't create scenario copy;You cannot create scenario copy "^0" because that run id is already in use.�����������60` 7Q 7P����œ` 7OprtsL.���`Abstract is too long;Your abstract is ^0 words, and eJournal abstracts are limited to 300 words.����������60` 7Q 7P����œ` 7OprtsL.���tBefore observations;Greenhouse gas values are available from 1850 to 2050. The 1958 control run values will be used.����������60` 7Q 7P����œ` 7OprtsL.���wAfter projected trends;Greenhouse gas values are available from 1850 to 2050. The 1958 control run values will be used.���������70` 7Q 7P����œ` 7OprtsL.��������������70` 7Q 7P����œ` 7OprtsL.���zBefore observations;The solar values extend back to 1500, no telescope, no trend. The 1958 control run value will be used.����������70` 7Q 7P����œ` 7OprtsL.���cAfter observations;The solar trend data goes through 1998. The 1958 control run value will be used.����������70` 7Q 7P����œ` 7OprtsL.���Scale large image?;The image "^0" is larger than 800 by 800 pixels. You should scale this image, unless you need the fine details from the original.����������70` 7Q 7P����œ` 7OprtsL.���CSorry you entered an invalid username or password;Please try again.����������70` 7Q 7P����œ` 7OprtsL.���UCan't change permissions;You cannot remove yourself from the list of owners of a run.�������� ��70` 7Q 7P����œ` 7OprtsL.���4Not supported;You cannot start a simulation from ^0.�������� ��70` 7Q 7P����œ` 7OprtsL.���2Can't ^1 simulation;You cannot ^1 simulation "^0".�������� ��70` 7Q 7P����œ` 7OprtsL.���}Can't ^1 running simulation;You cannot ^1 simulation "^0" because it is currently running. Please pause the simulation first.�������� ��70` 7Q 7P����œ` 7OprtsL.���fNo blank run IDs;You cannot have a blank run ID so the name of this run had been changed back to "^0".�������� �80` 7Q 7P����œ` 7OprtsL.��������������80` 7Q 7P����œ` 7OprtsL.���QInvalid password;The passwords you have entered do not match, please retype them.����������80` 7Q 7P����œ` 7OprtsL.���{Can't delete Admin;You cannot delete the Admin user from EdGCM because you need an administrator to access the User Editor.����������80` 7Q 7P����œ` 7OprtsL.���KNo password;You should assign a password for user "^0" for better security.����������80` 7Q 7P����œ` 7OprtsL.���eCan't delete eJournal;You can't delete an eJournal that is currently selected in the eJournal window.����������80` 7Q 7P����œ` 7OprtsL.���@Delete eJournals?;Are you sure you want to delete ^0 eJournal^1?����������80` 7Q 7P����œ` 7OprtsL.���uNo blank eJournal IDs;You cannot have a blank eJournal ID so the name of this eJournal had been changed back to "^0".����������80` 7Q 7P����œ` 7OprtsL.���jDuplicate eJournal ID;The name you picked already exists, the eJournal name has been changed back to "^0".����������80` 7Q 7P����œ` 7OprtsL.���cDuplicate run ID;The name you picked already exists, the run ID name has been changed back to "^0".����������80` 7Q 7P����œ` 7OprtsL.���9Can't clean up runs;There are no run folders to clean up.���������90` 7Q 7P����œ` 7OprtsL.��������������90` 7Q 7P����œ` 7OprtsL.���mImported old run;Run "^0" is from EdGCM 2.1 and cannot be run directly. Please review "^0" before you use it.����������90` 7Q 7P����œ` 7OprtsL.���|Can't redo simulation;Simulation "^0" is locked and cannot be modified. You must unlock "^0" before you redo the simulation.����������90` 7Q 7P����œ` 7OprtsL.���Cancel processing?;A Fortran program is processing output from the model. If you cancel this operation you may need to quit EdGCM.����������90` 7Q 7P����œ` 7OprtsL.���Time Series uses all years when processing;You cannot select a sub-range of years when processing Time Series data because the calculations are always performed on all available years. To plot a subset of the years, change the axis scale in EVA instead.����������90` 7Q 7P����œ` 7OprtsL.���sDuplicate assignment;You already have an assignment named "^0". Please choose a different name for your assignment.����������90` 7Q 7P����œ` 7OprtsL.���<File not found;The file for assignment "^0" cannot be found.����������90` 7Q 7P����œ` 7OprtsL.���OUnknown assignment;The assignment is of some unknown type and cannot be viewed.�������� ��90` 7Q 7P����œ` 7OprtsL.���.No name;You must give every assignment a name.��������!��90` 7Q 7P����œ` 7OprtsL.���(Delete user;Should user "^0" be deleted?��������"�100` 7Q 7P����œ` 7OprtsL.������������#��100` 7Q 7P����œ` 7OprtsL.���^Reset orbit;The orbit for the simulation "^0" has been reset to the modern orbital parameters.��������$��100` 7Q 7P����œ` 7OprtsL.���eExtend simulation "^0";When would you like simulation "^0" to end? The new end year must be after ^1.��������%��100` 7Q 7P����œ` 7OprtsL.���aSimulation already complete;The simulation "^0" has already complete and cannot be started again.��������&��100` 7Q 7P����œ` 7OprtsL.���CNo simulations selected;You must selection at least one simulation.������������������������������������������������DFList�and Mail�� Web and Mail���V����������������������` - -�����H -p and.l���GThis contains the list of weblinks and email messages to auto generate.������������` - -�����H -p and.l���+Lines are paired with purpose and then link����������Homepage -�����H -p and.l��������������http://edgcm.columbia.edu and.l�������������� Contact Mark.columbia.edu and.l���������������Contact Mark.columbia.edu and.l���2http://edgcm.columbia.edu/contact_us/contacts.html����������Email UsMark.columbia.edu and.l���������������Email UsMark.columbia.edu and.l���2http://edgcm.columbia.edu/contact_us/contacts.html����������Email Bug Reportumbia.edu and.l���������������Email Bug Reportumbia.edu and.l���'http://dev.edgcm.columbia.edu/newticket����������Science Forumsrtumbia.edu and.l���������������Science Forumsrtumbia.edu and.l��� http://forums.edgcm.columbia.edu����������Simulation Exchangeia.edu and.l��������������NAmulation Exchangeia.edu and.l��������������eJournal Exchangegeia.edu and.l��������������NAournal Exchangegeia.edu and.l��������������Updates Exchangegeia.edu and.l���������������Updates Exchangegeia.edu and.l���"http://edgcm.columbia.edu/download����������Support Exchangegeia.edu and.l���������������Support Exchangegeia.edu and.l��� http://forums.edgcm.columbia.edu���������Aboutrt Exchangegeia.edu and.l�������������http://edgcm.columbia.edu/about.l�������������FAQp://edgcm.columbia.edu/about.l��������������FAQp://edgcm.columbia.edu/about.l���9http://forums.edgcm.columbia.edu/faq.php?faq=new_faq_item���������Registerdgcm.columbia.edu/about.l��������������Registerdgcm.columbia.edu/about.l���-http://forums.edgcm.columbia.edu/register.php�����������������������������������������������������DFList�eck ErrorsxRundeck Errors<`��������������������Simulation errors:deck&Tor���������������Simulation errors:deck&Tor���Your simulation contains some errors and cannot be converted to a rundeck. Here are some of your errors so that you may correct them:����������, There is no run number.deck&Tor��������������, There is no start date.deck&Tor��������������, There is no end date.e.deck&Tor��������������, There is no owner.te.e.deck&Tor��������������, There is no comment..e.deck&Tor��������������, There is no label.t..e.deck&Tor���������������, There is no label.t..e.deck&Tor���', TAUP is not set to a realistic value.�����������, There is no label.t..e.deck&Tor���;, Ocean flux collection doesn't support absolute dates yet.�����������, There is no label.t..e.deck&Tor���), CO2 must be greater than or equal to 0.�����������, There is no label.t..e.deck&Tor���), NO2 must be greater than or equal to 0.�����������, There is no label.t..e.deck&Tor���3, CH4 (Methane) must be greater than or equal to 0.�����������, There is no label.t..e.deck&Tor���0, F11 (CFCs) must be greater than or equal to 0.�����������, There is no label.t..e.deck&Tor���0, F12 (CFCs) must be greater than or equal to 0.�����������, There is no label.t..e.deck&Tor���+, Solar must be greater than or equal to 0.�����������, There is no label.t..e.deck&Tor���*, Reference year is later than start date.����������, There is no label.t..e.deck&Tor���5, Reference year must be 1871 for the observed ocean.����������, There is no label.t..e.deck&Tor���7, End date is after the end of the observed ocean file.����������, There is no label.t..e.deck&Tor���8, Ocean flux collection date is earlier than start date.����������, There is no label.t..e.deck&Tor���., OmegaT must be between -360 and 360 degrees.����������, There is no label.t..e.deck&Tor���0, Axial tilt must be between -90 and 90 degrees.����������, There is no label.t..e.deck&Tor���', Eccentricity must be between 0 and 1.������DFLE4D���4���Rundeck Errorsc�h�e�.�o�r�g�/�x dSim Scenario���������2 ����G Flux Errors,0���T���4��m��bYRundeck Summary Trend*, Referen Rundeck Summary�le "^0"�������W% Delete Errors�����������������B CM_Folders���������������yRunNumberArrayHier�������� I{dFind SearchType������ r.� ��]Alerts������������B����OdFind FieldToSearch eList����z6 Setup Errors�����ete eJournalK hier_listentl��d.vious outp��|dSim Trend ppm�������������Setup Critical Errors�L@Q" PM_Folders������wbhPostPage�. �������&E] CM_ImageTypes��v(� ��! dText Count������ 4da UAM_Messages8�����M w=dFind FieldToSearch@�@��Group_Name_ListF��YdH�+ Months JDOFML�������Q6} dTool runlist\�U����0`html`�����h��d�$E Input Typesh���0��@5 Start_Monthsp������= Import Errors��Z|�@��UPPMV58�׀����< Ocean modes short�,@������F2 Model Grids��������������������GInput Types OTSpec�������������R Ocean modes��������������������gPostProcessing Errors����������pdSim Trend W/ms^2��������������BSimulation_Period_Dating�������PPMV58 Revisted����������������wIPostOHT������������������������F Web and Mail������������������� Model Names��������������������| dPost Tabs���������������������ZToolbar������������������������'* dTool Sort������������������dSim Trend ppboButton1������Startup_Folders���������������� Months Fullmary����������������XSetup Folder Errorsnd����������*MonthsberArrayHier�������������1 dSim IStarts���p��������Q] Model Apps@ a Model Apps Bin���� �dSim Trend orbit���������������9����������DFBA4D������.�a�p��������������������������������������������DFBA4DxD������gpJ�͔�v�PK�����������DFBA4DQ������e J=jNMdT+\vBg(PKBg8Bg8��DFBA4D"������q:J����\OPCp<vBg(PKBg8Bg8��DFBA4Dz������$`J�w¸YA~LvPKDFl��{�-�!������������������������������������������������DFBA4Dx������q�JTlTTdvTPKTTT��DFBA4Dx�������J��������@v� @PK� H� H��DFBA4DM�����.�a�pL}LLvLPKLLL��������DFBA4D"r�����.�a�pJ�� m~v� PK�,����DFBA4DL�����.�a�pJj,tvPK��DFMEN4J�:79,1d��`������ Close Window/Wq��Generic_CloseWindoww�qa���W����������������(-it2Z ����Do_Quittabase���w�qa��� ���������������User Editor...ryp�������������UAM_Editor_Open�� ����������9����������������(-port Records���Do_Quittabase���w�qa��� ����������������Quit2Z ���Do_Quittabase���w�qa���Q��������������Quit2Z ���Do_Quittabase���w�qa���Q��������������Quit2Z ���Do_Quittabase���w�qa��Q��������������Quit2Z ���Do_Quittabase���w�qa��Q��������������Quit2Z ���Do_Quittabase���w�qa��Q��������������Quit2Z ���Do_Quittabase���w�qa��Q��������������99n��t�dlefthtoprighttop��tt@����������6BC-������������������������������������������������������������������������������������������������ ����name���������bheight����d0� Scen��5{��������v(͝nԎE���� �ZS�������� (10DKN$E:)�������������������������������������������������������33������������"?��I8@g]l?:@*@?������>p]@3@w@���������@L@w@x�����x��������������������������������g;����g@���k"������������@��A0��@�����������g����������������������������������������������������������������������������=��$������������������������������������������������������������������������������zwwwwwwwwwsssssssssssssssssssssssssssssssssssss��Іg_����j`wwwwwwwwwwwwwwwwwwwwwwwwwwwww����������������������������������������������������������������������������������������������������������������������������������������������������������������������������ӡӡӡӡӡӡӡӡӡӡ��{���������������;�����5���������G�����5�������������K��� ��5����f�������������`�����5���������a��� ��5����f�������������~�����5������������ ��5����f������������������5������������ ��5����f������������������5�����������������������������������{��������������������������������������������������������������������������������������������������������������������� ��������++������������W`��������++������������W`��������++������������W`��������++������������W`��������++������������W`��������++������������W`��������++������������W`��������++������������W`��������++������������W`��������++���������������������������������������������������������������������������������������������������������������������������������������������������������������������� ?{���� ������������W`��������++���������������W`��������++���������������W`��������++���������������W����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c��DFMEN4� :79,5�� U������:131,18����9����VpVp������X������������UpmEx ?X���Z������������'(-V������`W�NAM#/����6�9.W����� ���� ����������������:131,20�V������PY`������������V����������������Wp���X������������':131,21V�������PY`�����������Clipboard_Copypy�,W�������C������������':131,22���`Y`�����������V�Clipboard_Pastete�����������������V������������':131,23Y`V�������PY`��������macsV����������������Q����� ������������'G:131,24All����`Y`��������macs�Post_Processing_FillQ�����������A������������'6(-�������'�V������`Z�� �'� ��VY ����� ����� ����������������Preferences...trols��a����? Pref_Openn_Temp_CreateKeywords����,���������������� Preferencessontrols��a����? Pref_Openn_Temp_CreateKeywords����,����������������:131,25re`������QdQ`������Q_������������Q_�����������Y�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������DFCC4Dj�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q��(-31,27rssQ`������PQdp��DFl��3�;/4������Q_Qa��������������������Enable DFCC4Dj�,�gS����������������AboutBoxA����?�� ��Y��DF#GRPU��(�<�F��-��X�+��%�''�O��K~�,^�<b�:� �x`�M�i>� �b��� ����������������+���2���@��/���������/����������������������������������������������������������������������������������DFl���,� ������������������������������������������������DFl��j�,�gS��acOS������������������������������������������DFCC4DM�,�gS��������������������������������������efauDFCC4DI�,�gS����������������6027</integer> <key>DeviDFCC4DxN�x� �<���*��^�� ^��� (WebAndMailLauncher}1(�@�������11���`���acce����@���������������������������DFCC4Dj�R�:�������������d�d��*������������d�d�$��pc�������������d�d���������������d�d����������������������������������������������������������DFCC4Dxh�R�:�������������d�d��*������������d�d�$��pc�������������d�d���������������d�d����x���������������������������������������������������������������������������������������������������������DFMEN4v� Go�����������������EdGCM 4D Folder^A�������]��Go_EdGCM�]��F��������]����� ���������������� Output Folder������������(�� Go_Output��������A���A����������� ���������������� Input FolderFoldero��������Go_Input�������?��������������������������������(-n Folders Foldero���������Go_Run���������?��������������� ���������������� Run Folders Foldero��������Go_Run���������?��������������� ����������������Diagnostics Folder�������������Go_Diag��������������������������� ����������������(-������������n������������s�����JݠU0])3����� ���������������� Data Folder Foldero��������Go_Data��������?��������������������������������Documentation Folderolder����wGo_Docsications5{����������������� ���������������� Images Folder��g0qgp����qiGo_Image���K���%� ^����d4��� ����������������Diagnostics Folder�������������Go_Diag��������������������������� ����������������Diagnostics Folder�������������Go_Diag��������������������������� ����������������Diagnostics Folder�������������Go_Diag��������������������������� ������������������v��������������������������������������������������������������������������r. P�(?�<es��������������������������������������������������������������������������������"|��5{����������������������������������������������������������������������x��������������������������������������������������������������������������������������������������������������������������������9����11��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� wxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n������������������������������������������������������DFMEN4PK�Web��P�����������EdGCM Homepage^A������������sGo_WebHomepage])3����� ����������������FAQCM SupportBD^B������������s Go_WebFAQportport3����������������������Support ForumsD^B������������s Go_WebSupportport3����� ����������������Registerrter^BD^B������������sGo_WebRegisterort3����������������������Registerrter^BD^B������������sGo_WebRegisterort3����������������������Registerrter^BD^B������������sGo_WebRegisterort3����������������������Registerrter^BD^B������������sGo_WebRegisterort3����������������������Registerrter^BD^B������������sGo_WebRegisterort3����������������������(-g Reporter^BD^B������������s�Go_EmailBugReport3����� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������:FFFFFFFFFFFFFF.{.{FFFFFFFFFFFFFF:���������))������))������))������))������))������))������))������))����5{��������ӡӡӡӡӡӡ����������������DFMEN4� Windowons������Setup Simulationsh����������Simulation_Open�������������������1����������������Simulation Library������������� List_Openssing_Open���������������2���������������� Setup Oceansontrols��a����? Flux_Openn_Temp_CreateKeywords����3����������������(-alyze Output������������������PostProcessing_Open��������������� ����������������Analyze Output�����������������PostProcessing_Open���������������4����������������(-age Browser  ���������������Info_iPhoto_Open������������������ ���������������� Image Browser  ��������������Info_iPhoto_Open������������������5����������������eJournalk Cleanup������������� InfoText_Open� �� ����������6����������������eJournal Libraryp������������� eList_Openen3� �� ����������7����������������(-ournal Libraryp��������������eList_Openen3� �� ��������������������������� Assignmentsionsyp������������� Assign_Openegions ����������8����������������Special Regionsyp�������������Go_SpecialRegions ��������������������������������������� f(�G;<������������������:131,26���������������������������������������v���ȯ��������������d����������������������������&������������ ������������������������W��������������W��������������W��������������W��������������W���������"��V�U ����������B�����������ᎆ�����������V������������V�e������x��A0��A���A@���5{������������7K75 ���.׮������������A���@��A�����������������������������������������������������{D��k�������!kk!��������JJ����������!1)11)111111)1)111)11)1111))����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{{{{{����k{{{{{{{{{{{{{{{{{{{{s���R{{{{{{{{{{{{{{{R���!k{{{{{{an addition ��~����������������������������������S������,@��D@�� ������%�����������ԃo�?{uDU@��P��l^������f����?0�����?0�����HH=# =# ���� *j��p|`p|%  ������ �� d|U ����|`p�������������������� ����������������������������������� փ_|U ����|`p�������������������� ��������������������������������������������������� ,Y|U ����|`p�������������������� ����������������������������������� T|U ����|`p�������������������� ����������������������������������� ؃O|U ����|`p�������������������� ��������������������������������������������������� .G|U ����|`p�������������������� ����������������������������������� B|U ����|`p�������������������� ����������������������������������� ڃ=|U ����|`p�������������������� ��������������������������������������������������� 07|U ����|`p�������������������� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -k55999999999999911999999999999955-k%)������������%)-k55999999999999911999999999������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������DFMEN4j� Edit�|@������Undo�����������������T��������"Nl����� ����������Z����������������(-|����|���n�����f�f��������n=j��� ����������������Cuty�����"�"�i"�i@"��5{�Info_iPhoto_Copyht�""h���������X����������������Copy�����"�"�i"�i@"��5{Info_iPhoto_Copyht�""h���������C���������������Paste����������� '59+ ������Info_iPhoto_Paste�����������������V���������������Clear������p������������������������������������������������������ ���������������� Select All�p�����������������Select All������������������������� ����������������(-p'����p�����������������Select All������������������������ ���������������� Preferencesard��������������� Pref_Openl������������������������,������������������p'����p���������������� Select All������������������������A����������������A@��A ��t��������������������������������������������������������������������������������������������������������������������������DFMEN4Md� Image Browser������First�������������������Info_iPhoto_MFirstumb� ����������{����������������Previous����n����������������Info_iPhoto_MPrev�����������������[����������������Next�����^N>,^N>,^N>,^N>,Info_iPhoto_MNext=B����p���]����������������Last$������������A���A���AInfo_iPhoto_MLast���������������}����������������(-date�����p��t�j����������ձj��������t��8����������� ����������������Update�����p��t�j��������Info_iPhoto_Sync��8�����������U���������������� Import...��5{������������������Info_iPhoto_ImportImage����������I����������������zO`����r��Ι00o����������{����������͝��������������f>����������}��������������������������������������������������DFMEN4\� Edit�;4@���y������Undo���A���A���A����� ��� �� �Y( �����8�����������������������Z���������������(-������������nitemb"�"�i"�i�@""�"5��� ����*���������d��� ����������������Cuti���������@NP��������������p������������N���������X���������������Copy����������������������������Copy������������������������������C���������������Paste������p������������������InfoText_Paste��������������������V���������������Clear����������������������������������������������������������� ��������������� Select All������������������������������������������������������A���������������(-�������rarName""itemb"�"�i"�i@""�">,���������+������ ���������������� Preferencesard,^��� Pref_Open��O9nFd&���� &V���,�����������������������������d"3H9code to open/close sections in the toolbar, and show/hide����������DFMEN4C� eJournal����?������New������?��?����������A ��InfoText_NewRecord����P_���N���������������� Duplicate���n�� ����������InfoText_DuplicateRecord������D����������������Delete��Ā �|`����?��InfoText_DeleteRecord�������������R���������������� Permissions���p׬�����������InfoText_Permissions��������������P����������������(-ndrmation���p׬������������InfoText_FindDialog��������������������������������Find...tion���p׬����������� InfoText_FindDialog���������������F���������������� Find Againn���p׬�����������InfoText_FindAgaing���������������G����������������(-formation���p׬������������InfoText_InfoDialog��������������������������������Preview for Web...����������� InfoText_HTML���������������������J����������������Export for Webions�����Y���BInfoText_HTMLPathmg������Y���2���M����������������(-nk to Simulations�����Y���B�InfoText_LinkToSimg������Y���2��������������������Link to Simulations�����Y���BInfoText_LinkToSimg������Y���2���L���������������� View Links������������������InfoText_LinkOpen��5{�����������K��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������DFMEN4Qe�Mode2u@����������� Make Archive ������������������Simulation_MakeArchive������������ ���������������� Clear Status����n���������������Simulation_ClearCurrentDate������������������������ Clear Date������n��������������Simulation_ClearCurrentDate��������������������������] � windowProci��#�Simulation_ProcessID2�� p � windowProci��#�Run��������DFMEN4Y� Simulation$1p��������Newk\Unlockk/W!e<I�����5{����Simulation_FakeCreate �������N���������������� Duplicateckk/W!e<I�����5{����Simulation_Duplicatek �������D����������������Deletenlockk/W!e<I�����5{����Simulation_Deletelock �������\����������������Simulation Summary����5{����Simulation_ViewRundeck �������R����������������(-mulation Summary����5{�����Simulation_ViewRundeck ������������������������Open All SectionsI�����5{����Simulation_OpenAllSections�������]����������������Close All Sections�����5{����Simulation_CloseAllSections�������[����������������(-mulation Summary����5{�����Simulation_ViewRundeck ������������������������Link to eJournals�����5{����Simulation_LinkUnlock �������L���������������� View Linksk/W!e<I�����5{���� eList_Open_LockUnlock �������K����������������(-eak ScenarionH����������Simulation_MakeChiro���������� ���������������� Make ScenarioW!e<I�����5{����Simulation_MakeSennario �������M����������������Break ScenarionH���������Simulation_MakeChiro�������A���$����������������(-rmissionssions�q�������UAM_Perm_Dialog�q�������������������������������Permissions...ns�q������UAM_Perm_Dialog�q��������������p���������������� Lock\Unlockk/W!e<I�����5{����Simulation_LockUnlock �������U����������������(-port Test�I�q�������XML_Export��;R�q�������������� ����������������ImportRecord����������������� XML_Import������������������������I����������������ExportRecord�q������ XML_Exportt��;R�q��������������G����������������^��w�� ��,����b)��ӡӡӡӡӡӡӡP������w��w��,��I ���������ӡӡӡӡӡӡӡ����������`��I ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{����������5��@���<�����5��@��D��Y���E�����5��@���F������J�����5��@���K�����5��@��D��]���T�����5��@���U������Y�����5��@���Z�����5��@��D��f���c�����5��@���d������h�����5��@���i�����5��@��D��c���r�����5��@���s������w�����5��@���x�����5��@��D����������5��@��������������N��h��b����������b����������������N����m����������������N��s��~����������~����������������N����V����������N�������������� �����7а�Toolbar_Disclosure���N� ���7����7а��q�������itemhtnNumEnd���#�RunNumberArray@��N�#�Run_RunNumStart�#�Run_RunNumStatusd�#� RunDate��7����7а��NumScenMasts�#�Run_RunNumRunning�#� RunIDArrayR�#�Run_RunNumOnDis� JListl���������4Vx4Vx���������{M�����PSH����������������������������������������������������������������������������������������������������������������DFMEN4�Analyze��ePaste������Clear��������:l�����������?PostProcessing_Clear��������� ���D����������������Fill���������������������������PostProcessing_Fill�4Y+���������F����������������Extract������������������������PostProcessing_Create�������������E����������������Viewct Last 10 Years�����������PostProcessing_ViewastNYearss�����O����������������(-ew���������������������������PostProcessing_View�4Y+��������� ����������������Show Set���p��]�������� Sets_Open�����������$<�����S����������������Show Set���p��]�������� Sets_Open�����������$<�����S����������������Show Set���p��]�������� Sets_Open�����������$<�����S����������������fvp���acce���fvP���acce���fw���acce���fw`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ 9TrۍB ����������i] ������������������������������������������������������������������������������������������������RY`gnu| &/8AKT]gqz��������������������������������������������������������������������������������������!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8������������������������������������������DFMEN4� Library`� ������Find�������������������List_Find_MenuButton�� ����������F����������������Show All�c0���n�� List_ShowAll���������?�����������J����������������(-������������ ����������������Delete �?��f����0@ List_Deletee0���������������D���������������� Cleanup...s��p������! List_Cleanupions!������!���K����������������Permissions...p������!List_Permissions!������!���P����������������(-����������p������!�!������!!������!��� ����������������ImportRecord����������������� List_Import�����������������������I����������������ExportRecord����������������� XML_Exportt�����������������������G����������������������������������������������������������������������������������������������������������DFMEN4L}�File���jl������ Close Window��Generic_CloseWindoww�qa���W����������������(-it2Z ����Do_Quittabase���w�qa��������������������User Editor...��UAM_Editor_Open�w�qa���9����������������(-it2Z ����Do_Quittabase���w�qa��������������������Quit2Z ���Do_Quittabase���w�qa���Q���������������Quit2Z ���Do_Quittabase���w�qa���Q���������������Quit2Z ���Do_Quittabase���w�qa��Q���������������Quit2Z ���Do_Quittabase���w�qa��Q���������������Quit2Z ���Do_Quittabase���w�qa��Q�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{���������������N������e����������w���������������������������������������/���������������������������+�������C��/�������C��E����L�������C��Q�����i�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������k��������!cc!���������J{{J����������������������������������������������������������������������������������������������������������������������������������DFMEN4ZK�:79,6��Q_�������:131,27re`������QdQ`������Q_������������Q_�����������Y���������������:131,28tion�`Qdp��������MEN4Q�QaP�� ���p�X��������������U���������������:131,29rssQ`������PQdp������������Q`����Q_Qa��I�������������������Q`�������PQdp���������Q`���������������������������������������������DFMEN4m�Users p ��������New User...��N�����bAdUAM_Editor_NewRecord����6��N���N���������������� Delete Users...�n��������������UAM_Editor_DeleteRecord�����������D���������������� Save User�������2���������UAM_Editor_SaveRecord����� ���s��������������������"3H(the second sets the mode, the modes are:""��ce����������<���������d�d��������p��������������������������������������������������������������������������������������������������������������������DFMEN4�LibraryR� �$ ������Find����������������������bAd eList_Find�������������� �?�����F����������������Show All��������n���4���������� eList_ShowAllisclosurec��S���J����������������(- `�����5��@���i�����5��@��D��o���s������� ��������������������Delete]Run_UpdateList@# �R eList_DeleteHiera�ڡӡӡ���D����������������Permissions...pN��֔�������eList_Permissions7d$show/hide s���P����������������owsN�������������������������������������������������������������������������������������������������������DFMEN4A�Trend m����������CO2�������������������bAdSimulation_TrendCO2��������4��������������������N2O�����s���n_ProcessID�Simulation_TrendN2O�����������������������������CH4<P�����������������������Simulation_TrendCH4��������������������������������CFC11�7d9code to open/close seSimulation_TrendCFC11 and show/ ��������������������CFC12�� ��p^����Simulation_TrendCFC12�����������������������������Solar������������������������Simulation_TrendSolar��������������������������������������������������������������������������������������������������������������������������DFLIBA��� xDQ"zxxM"rL����������������������������������DFCC4DN� <�F���4��'��&��b$.Show about box for EdGCM through a dialog box.$���������������b$������� �����������b$ input ���� �����������b$ none p_���� ��������0001b$ output00���� ��������EMakb$ none r��.�����������TAT  @width�@heightD� S�J���8�������� @% @�@�������� @ 4D_versionD� @ EdGCM_version�12��������������������"�����������TAT b$ set stringsD �&����������� @ vs4Dversion@23���������������� @ 4D_versionDw�4th Dimension ��@�  @�  @�  @ vs4Dversion�@�?��������@�@�������������w�.��@ vs4Dversion!@�@��������"��w�.��@ vs4Dversion!@�@�������"�H���6��������� @ EdGCM_versionw� EdGCM 4D ��#@VersionOfEdGCM�����������������������������������������$���������������b$ setup window���8���&������������@�7 @������w�AboutBox�������H���6������������@width @��@�@���������@�@�����������J���8��������-� @height� @��@�@���������@�@�����������~���l�����������@� @width�@height��@width��@�@��������@height���@�@�������$@�"��w�About����.��������������@� w�About EdGCM 4D����������������������$���������������b$ do the dialog���2��� ������������@�( @������w�AboutBox��������������������@����0���������������@ @OK�8@�?�����������&��������������� @��@�?�������������������������@���&��������������� @��@�����������������������������@���������������������sID����,��������������@#@Pref_ProcessIDzDFCC4D9�E9h�b���P��'��&��b$JDisplays an alert and returns the OK value. This loads the appriate dialogum�^���L����"����b$Gand does all the string replacement to set the message. Remember to set���d���R�������b$Lthe ParamText if you want dynamic messages. Note that two buttons are always@���f���T��������scalb$Nshown for alter types 1-3 while the others may vary. A future version of EdGCM�d���R����P����b$Lcould show or hide buttons as the number of AlterButtons is specified almost@E�$�����������TAT b$ all the time. ������������TAT b$�IM���� �������� b$ inputk_�z���h��������0001b$Q AlertType, 1=Note, 2=Caution, 3=Stop, 4=Scale, 5=Lock (UAM), 6=Quit (XML), 7=Exb$ tend (Setup) 00�8���&��������EMakb$! AlertNum, error message to load04�z���h������������b$Q AlertButtons (optional parameter), 1=OK/Cancel, 2=OK, 3=Cancel/OK, 4=OK Cancel b$ (no default)n������ ���������t�)b$ output�`�J���8���������T�ib$2 OK?, returns the ok value as a longint (1 is ok) �a�F���4����������} @��� @�� @��@ AlertType�@AlertNum$���.������������"�@ @�8@�@���������� �0���������������@ @��@ AlertButtonsl����(������������t�i@ AlertButtonsl @��t������������� � @� �6���$����������@% @�@��������@AlertStr$��� ������������e�r@ @pos���$���������������@ AlertType @����$������������t�)@AlertNum$ @��u��������������T�i�t�&�������������}b$Get the strings��P���>���������"�@AlertStr$ @GetListItemStr #@ AlertList�@AlertNum$���6���$������������@pos@� w�;�@AlertStr$����`���N������������#@ AlertTitleA@�  @AlertStr$�@�?��������@pos�P@�?�����������N���<������������#@ AlertText@�  @AlertStr$�@pos��@�?������������������������������*���������������b$do the subsitutionH���h���V������������#@ AlertTitleA@� #@ AlertTitleA�w�^0�#@AlertParamText�@�?�����������d���R������������#@ AlertText@� #@ AlertText�w�^0�#@AlertParamText�@�?�����������h���V������������#@ AlertTitleA@� #@ AlertTitleA�w�^1�#@AlertParamText�@�@������������d���R������������#@ AlertText@� #@ AlertText�w�^1�#@AlertParamText�@�@������������h���V������������#@ AlertTitleA@� #@ AlertTitleA�w�^2�#@AlertParamText�@�@������������d���R������������#@ AlertText@� #@ AlertText�w�^2�#@AlertParamText�@�@������������h���V������������#@ AlertTitleA@� #@ AlertTitleA�w�^3�#@AlertParamText�@�@�����������d���R������������#@ AlertText@� #@ AlertText�w�^3�#@AlertParamText�@�@������������������������������$���������������b$ do the dialog������������������@� @��@�@���������P@�@��������@��@�@���������P@�@��������@��@�@����������@�@��������@��@�@����������@�@��������$@�'��w���wX Open a modal window������������������@���@���.������������@ @ AlertType�8@�?��������wXnote���2��� ������������@�( @������w� AlertNote����B���0������������@ @ AlertType�8@�@���������wXcaution���6���$������������@�( @������w� AlertCaution����@���.������������@ @ AlertType�8@�@���������wXstop���2��� ������������@�( @������w� AlertStop����@���.������������@ @ AlertType�8@�@��������wXscale���4���"������������@�( @������w� AlertScale�����F���4������������@ @ AlertType�8@�@��������wX lock (UAM)T���2��� ������������@�( @������w� AlertUser����F���4������������@ @ AlertType�8@�@��������wX quit (XML)T���2��� ������������@�( @������w� AlertQuit����F���4������������@ @ AlertType�8@�@��������wX quit (XML)T���4���"������������@�( @������w� NewEndDate��������������������@���2��� ������������@�( @������w� AlertNote�������������������@���<���*������������@��� No longer need the modal window������� ������������ @�� @OK��ache manager now starts in it'DFCC4D 6�,r�6���$��'��&��b$Setup the alert manager package��P���>����l�scalb$8This package emulates the features of the System 7/8/9/Xke�V���D��������scalb$>dialog manager so that I can show better alerts. Like the realw�X���F�����������b$@manager I replace ^0..^3 with the strings set in the param text.����f���T����F����b$OThe errors are stored in the list "Alerts" as <title>;<text> with ^0..^3 placedD�6���$�����������b$for dynamic string replacement.������������������b$������� ��������TAT b$ input MM���� �������� b$ none k_���� ��������kZo{b$ output���� ��������TAT b$ none MM�(����������� # AlertTitleAw��0 �&�����������#@ AlertTextw���>���,��������#@AlertParamTextz�@�?�������w��)�>���,��������kZkZ#@AlertParamTextz�@�@��������w��J�>���,��������111#@AlertParamTextz�@�@��������w���>���,��������#@AlertParamTextz�@�@�������w����4���"�����������#@ AlertList@ w�Alerts����PostDefaultSetzw�lDefault Variables��� ���DFl��0l���Q�eEva������������������@��������������DFl��L�w���������@������������������@���L���:����DFl��<�w���@�@���������@error�@�@��������DFl��x�7���@#������������������@����������������DFCC4D�,, ����������(]������������������������DFCC4D@����������������������������������������������������DFCC4D�OK*�V���D��'&��&&��gS>Scan through the images folder and see how to adjust the cacheB�V���D��������#��S>to match what's on disk. This code collects more info than the���V���D�����������S?images or output scan code to match the information avalible in���T���B������������S=the image browser. The CM_Image table store the info since it���Z���H�����������SBis different. A second table CM_Fat stores the thumbnails to speedI�0��������������Sloading a sorting records���(�����������OS 1, set semaphore^�P���>���������S9 2, scan folder and determine which files are image files���X���F��������SA 3, delete records for files in the database that are not on disk��V���D���������S> 4, add records for files on disk that are not in the database���D���2���������S, 5, add thumbnails to CM_Fat for the images ���*������������S 6, clear semaphore���L���:����������%@�@�������� @imagesFolderPath�@tempPath$�P(�D���2��������@@imagesFoldersCountc�@imagesFileCount����J���8���������@�@�@�������� @ imagesFolders�@���������������H���6��������� @�@�@�������� @ imagesFiles�@���������������������������H4���(���������������Sset the semaphore���8���&��������@���@worksc@�w�l$CM_ImagesScan��������������������@����� ������������Ssetupf�H���6��������� @imagesFolderPathc @ PM_FindFolderw�lImages���@���.�����������@ @imagesFolderPath� @ imagesFolders���B���0�����������@imagesFoldersCountcc@ @ imagesFolders����@���.������������@@imagesFoldersCountc�c@����������������������������������:���(������������S"remove records for deleted folders���V���D������������ @CM_ImagesInvalidate� @ imagesFolders��@��� ����@�� ������V���D������������ @CM_ImagesInvalidate� @ imagesFolders��@��� ����@�� ������������������� ���*��������������Sprocess each folder���D���2�����������@@i�@�?��������@imagesFoldersCountc����f���T������������@tempPath$c @ PM_MakePath @imagesFolderPath8� @ imagesFolders�@i�@�����N���<������������@ @PM_DocumentList�@tempPath$�� @ imagesFiles�����p���^������������ @CM_ImagesScanFolder� @ imagesFolders�@i�� @ imagesFiles�� @imagesFolderPathd�������������������@������������������@������������������@����������������������@���.������������S(cleanup, update toolbar, clear semaphore���4���"������������#@CM_UpdateImagesc@�?����������.���������������#@CM_Priv_ScanImagescc@����.���������������@�w�l$CM_ImagesScan����.�����������@I#@Toolbar_ProcessID��@���.��������@#@InfoPict_ProcessIDc�c@���������������B���0���������%@@J#@InfoPict_ProcessIDc����$@� ��34�4���"������������#@InfoPict_Buttonc@�@����������0���������������@I#@InfoPict_ProcessIDc�������������������@������������������@����������������������DFCC4D�t�q� ��������� List_Open���.�����������I~#List_ProcessID~~������������������������������DFCC4Ds4"�H���6����+��"0/Convert a click on the LinksList into a search "������������������*���������������]]]�]@$]��]]�8���&����������] LinksList�]@]�����������]]���D���2������������ SearchWord�] ] LinksListWord] ] LinksList]]���D���2����������� FieldList] ]LinksListField] ] LinksList]]e �D���2������������ SearchType�] ] LinksListType] ] LinksList]]ou�*�������OP��� InfoText_LinkSearchp��������OP������������OP����������������������������������������������������������DFCC4DR�,�bK�V���D�������8<Copy an image to the clipboard with the special info I need \��(�������@�����-� selection���&�������������curRecl���*�������"����\� clipCustomcp���������������B ]�<���*������������8"check that it's a valid selection ����&��������������� selection�����<���*�������'� selection�@$��� ���V���D���������8=same code as InfoText_DragAndDrop treat like start of a drag �sk�8���&��������#�DragTransferPict� selection���R���@���������89to find the current selected record I have to be smarter ����0������������curRecl������ ��]�<���*������������������ ��#�PictInfoToolbarRec���H���6��������ff#�DragTransferFilename��?���������� ������H���6����X�����#�DragTransferFilename��@����������� ����&�������X�����value��� ���ch�@���.����X����� foundPreviewo���� ���value ��@���.����X������ foundPreviewo�@�@��?�������w �6���$����X���������� ��� foundPreviewo o�4���"����X����#�DragTransferCaption��� ����H��������X������t �4���"����X�����#�DragTransferCaption��� ����F��������X�e co��er�0�������X�2��������� ���curRecl��������������f��ho�@���.���������8'setup the blob to put in the clipboard ����J���8���������^� clipCustomc��@���������������������������������3333ho�,������������8set the clipboard ^�E@�*���������������� � selection f�6���$������������\�4Dim� clipCustomc��������������������il������������������������������DFCC4D�,�z�`���N��&\��%\��gSIDuplicate a record in the database and add it into the list. This versionfn�^���L��������SGuses the revised rules described by Mark on 3/25/5 to replace the older���b���P������������SKrules. The rules are as follows, with lowers rules having higher precidence�����������������S�o��<���*�����������S%Duplicate all field values by default�������������aaaaS��$���������������S RunID field:���D���2��������0001S,1)On NEW or DUPLICATE: Enter uniq"RunID5092"14������������EMakS�ia�(���������������SRun label field:����4���"���������� S2)On NEW Run label should be:�e�L���:��������� �aS4"YOU MUST TYPE A SHORT DESCRIPTION OF YOUR RUN HERE">��b���P����������SJ3)On DUPLICATE add"Copy of:"to front of Run Label(remove last 8 characters�a�$������������i�aS if necessary)�����������������S����&������������� SComments field:�a�8���&��������� �aS!4)On NEW blank the field entirely�u�:���(����������S"5)On DUPLICATE place"Copy of Run:"� �������������i�aS��s�h���V������������SQThis version now uses semaphores to ensure that the arrays don't change under it.�@������������� �S��[���� ���������)�S input�r�f���T����������)SO (optional) boolean, is the code running in new mode instead of duplicate mode�l�D���2����������S- (optional) string, default name for new run� ���� ���������a�b1 @���s�>���,����������E@%@�@�������� @��@ inRunNumber��B�"������������a�n@1@isNew��n�.���������������@@�>@���������������$������������l�iS C_BOOLEAN($1)�f� ������������n�N@isNew> @���������������:�=@�� ������������e�w@isNew>@��e��������������@�[�.������������s�t@@�>@�?���������d�4���"���������l� SC_STRING(19;$2;$inRunNumber)� �&�������������@ inRunNumber> @�� �������������� @��&������������ �a@@ArrayNum$��t�L���:����������@%@�@��������@ NewRunNumbere�@ OldRunNumberl��c�6���$���������i�a@%@�@��������@OldLabel$��`�"�������������`@@dummy��f�:���(���������o�d@� @ modelandgridd�@�@����������a���������������:�=���� ������������Ssetup�(�����������>� @Run_Critical_Begin> ������������������&���������������Slocate in array���0���������������@ArrayNum$>@�@���������,���������������@ OldRunNumberl>@�������(���������������@OldLabel$>@�������:���(������������@@ArrayNum$�>�>`@�?�����������D���2������������@ArrayNum$>@�#@ RunIDArrayR�@ArrayNum$�����������������������.���������������Scleanup existing record���*����������� @Simulation_SaveRecord�0�����������SRunArray_ChangeRunNumber ))��������������0�����������Sduplicate and update name��"���������������@�@���������"���������������@�@����������������������������:���(������������S"if passed a run number then use it���.���������������@@�>@�?�����������2��� ������������@ NewRunNumbere>@ inRunNumber������������������@���.���������������Screate a new run number���\���J������������@ NewRunNumbere>w�lRunID�>�@� @�@�������wO8 use sequence>������������������@���X���F������������SAgenerate unique run number if I can't use the name I've generated���f���T������������@@�#@RunNumberArrayz�@ NewRunNumbere�@�?���������>@���������������x���f��������.@ NewRunNumbere>@�@ NewRunNumbere�@�@��������@�@���������>�@� @�@�������..�������������� @�$�,���������������@����>@ NewRunNumbere����������������������$���������������S update status���*���������������@�m���>@�������������� ���������������@����>@�����������������������2��� ������������Supdate other random fields���4���"������������@����>@�fw�l 00/00/0000����� ���������������@�v���>@�!���"���������������@����>w�l�>����������������������&���������������Sactions for new��� ���������������@@isNew����&���������������Sactions for new���T���B������������@����>w�l2YOU MUST TYPE A SHORT DESCRIPTION OF YOUR RUN HERE���"���������������@�|���>w�l�>������������������@���,���������������Sactions for duplicate���b���P������������SK[Model Variables]Label:="Copy of : "+Substring([Model Variables]Label;1;51)������x������������SQ[Model Variables]Description:=[Model Variables]Description+Char(Carriage return )S+$OldRunNumber+": "+$OldLabel���`���N������������@����>w�l Copy of : ��>�@� @�����@�?��������@�@�����������"���������������@�|���>w�l�>������������������@����������������������:���(������������S#update model & grid (don't do this)���:���(������������ @GetModelAndGrid @ modelandgridd���� ���������������@@isNew����t���b������������SQIf (modelandgrid{1}<4)`force model to be 1.0.7 if is it is older, and set grid Sto 8x10���b���P������������@����> @GetListItemStr>#@ ModelNamesRef�@�@��������wO8 model 1.0.7���b���P������������@����> @GetListItemStr>#@ ModelGridsRef�@�@���������wO8 grid 8x10x9������������������@����������������������N���<������������S7change subrecords so that the current user is the owner���"���������������@�m@��������:���(������������@@�@������>@���������������"���������������@�`@��������"���������������@�m@�����������������������@���"���������������@�H@��������*���������������@����>#@UAM_User����������������������@���.������������S)update the run list using the Run Manager���D���2������������S-Run_ID_To_Select passes the run ID to select���*��������������� @Simulation_SaveRecord���&���������������#@ Run_CheckDB>@����(���������������#@ Run_DirtySets>@����8���&������������#@Run_ID_To_Select>@�@���������:���(������������#@RunListReinitToolbar8>@�?����������2��� ������������ @Simulation_LockUnlock@������������������������>���,������������S'update the library if it is open (list)���8���&������������#@InfoText_ProcessID>>@��������������,���������������@I#@List_ProcessIDz�����������������������*���������������Supdate the details~���N���<������������@�w�lSetup Simulation, Run ID: 8�>�@ NewRunNumbere����,���������������@I�>`@�?�����������.��������������@I#@Toolbar_ProcessID�������������������@������������������������� ������������Scleanup���&��������������� @Run_Critical_End��������DFCC4Dk �#�d���R��&"��%"��gSMSetup the model to run for the currently selected run. This involves a lot of���d���R���������SMcopying files from input folders into the run folder and a rundeck. This code���b���P����x�scalSJreplaces the setup script used on Unix, except for the compile part. Since/�`���N��������TAT SIthe model is staticly compiled in EdGCM there is no need to interact withdy�b���P�����������SJPro Fortran. This version of the code uses Cache Manager to find the files�N���<��������0001S7and improves error checking and cross platform support.00������������EMakS�ia���� ������������S input������ �������S none� ���� ������h� S output��J���8�������S2 true if everything worked and false if it didn't�r����������i�nS��P�����������Svar�l���� ����������1 @������T���B��������@%@�@��������@ outputPatho�@ inputPath�@filePath$������� ���������@- @��ap�&��������� @@ error_num����$������������@2@docrefn����:���(�����d@%@�@�������� @ RundeckTitlen�e�8���&���������@%@�@�������� @ RundeckDesc���J���8���������@�@�@�������� @ RundeckErrors�@�@�����������(������������@@listRef� @s���$������������@@listLen����(���������L@@ listItemRef����(������������@1@ allFoldersa�� �H���6���������@�@�@�������� @ folderNames�@�@������������P���>���������@�@�@�������� @folderSpecialNames>�@�@������������6���$���������@� @ modelgrid�@�@����������������������������"��������� S basic setup���.������������@ error_num>@��������������@���.��������@listRef>@w�lSetup Critical Errors���0��������KK�@listLen>@|@listRef���V���D��������@z@listRef�@�?��������@ listItemRef� @ RundeckTitlen����T���B���������@z@listRef�@�@���������@ listItemRef� @ RundeckDesc��������������������(������������Scheck model/grid����6���$��������� @GetModelAndGrid @ modelgrid��������������������B���0���������@ outputPatho> @ PM_FindFolderw�lOutput����>���,���������@ inputPath> @ PM_FindFolderw�lInput����4���"���������@@�����w�l All Folders����&������������@ allFoldersa>@����>���,���������@@��� ���@�� ���@�?�����������2��� ���������@S@�� ��� @ folderNames������������@�&�������� ))@ allFoldersa>@�))�@���.������6 @ folderNames�@�?�������C>w�lDefault+%�<���*��������� @ folderNames�@�@��������C>@�������������������@�������������������d���R���������@@ @ PM_MakePath@ inputPath�w�lDefault�@������@���������������>���,���������@ error_num>@�?��������>�@ error_num���|���j��������� @ RundeckErrors�@ error_numC>@� @ error_num��>� @GetListItemStr>@listRef�@�@�����������������������@������p���������@@ @ PM_MakePath@ inputPath�@�����@������@��������������@ allFoldersa�@�����>���,���������@ error_num>@�?��������>�@ error_num���|���j��������� @ RundeckErrors�@ error_numC>@� @ error_num��>� @GetListItemStr>@listRef�@�@�����������������������@���@���.���������@@@ outputPatho����@���������������>���,���������@ error_num>@�?��������>�@ error_num���|���j�����9 @ RundeckErrors�@ error_numC>@� @ error_num��>� @GetListItemStr>@listRef�@�@�������� �������������@���b���P���������@@ @ PM_MakePath@ outputPatho�@�����@����@���������������>���,���������@ error_num>@�?��������>�@ error_num���|���j��������� @ RundeckErrors�@ error_numC>@� @ error_num��>� @GetListItemStr>@listRef�@�@�����������������������@�������������������6���$���������@@ error_num�>@���������������$������������S report errors���j���X���������@� @ RundeckErrors�@ error_num�>�@�?��������@�@��������>`@ error_num����&������������Serror dialog ���>���,���������@�7@������w�lRundeck Errors������������������@�@��>`@�@��������� @�@���������@��>`@�@��������� @�@����������>`@�?���������>`@�?���������>`@�@ �������w�l�>����8���&���������@�(@������w�lRundeck Errors����������������@������� ��������� @��>@��������������������������������@���D���2���������S-if there are no critical errors then continue���.������������@ error_num>@��������������������������������� ���������Ssetup���$������������@y@listRef����>���,���������@listRef>@w�lSetup Folder Errors����0������������@listLen>@|@listRef����V���D���������@z@listRef�@�?��������@ listItemRef� @ RundeckTitlen����T���B���������@z@listRef�@�@���������@ listItemRef� @ RundeckDesc��������������������*������������Screate run folder ���B���0���������@ outputPatho> @ PM_FindFolderw�lCurRun����(������������@@ outputPatho����F���4���������@ outputPatho> @ PM_FindFolderw�l CurrentRun�����:���(���������@@@ outputPatho����$@������>���,���������@ error_num>@�?��������>�@ error_num���|���j��������� @ RundeckErrors�@ error_numC>@� @ error_num��>� @GetListItemStr>@listRef�@�@�����������������������@���0������������Sthis creates the rundeck��������������������>���,���������S&save a namelist file (FOR110.DAT file) ���J���8���������@position$>@�w�lLabel and Namelist:�@��������6���$���������@@position$�@���������������>���,���������@ error_num>@�?��������>�@ error_num���|���j��������� @ RundeckErrors�@ error_numC>@� @ error_num��>� @GetListItemStr>@listRef�@�@�����������������������@���R���@���������@position$>@position$�>�@�w�lLabel and Namelist: >����D���2���������@temp_name_listz>@� @�����@position$����V���D���������@filePath$> @ PM_MakePath@ outputPatho�w�lfort.110��@�����2��� ���������@docrefP>@ @filePath$����0������������@ @OKl���@�?�����������>���,���������@ error_num>@�?��������>�@ error_num���|���j��������� @ RundeckErrors�@ error_numC>@� @ error_num��>� @GetListItemStr>@listRef�@�@�����������������������@���2��� ���������@@filePath$�w�lR*ch����2��� ���������@#@ PM_Platform�$@������j���X���������@temp_name_listz>@�@temp_name_list>�@�Z$@��&��@�Z@�@������������������������@���@���.���������@temp_name_listz>@@temp_name_list>����������������@���8���&���������@�g@docrefa�@temp_name_listz����$������������@ @docrefa��������������������2��� ���������Ssave a regular rundeck file���\���J���������@filePath$> @ PM_MakePath@ outputPatho�@�����>�w�l.R@�@�����2��� ���������@docrefP>@ @filePath$����2��� ���������@@filePath$�w�lR*ch����2��� ���������@#@ PM_Platform�$@������.������������@�g@docreft�@��������������������@���6���$���������@�g@docreft�@@���������������������@���$������������@ @docreft��������������������@���.���������S(save the rundeck for the rest of the run���2��� ��������� @Rundeck_Createz@��@�����.������������@temp_name_listz>@�������Z���H���������@filePath$> @ PM_MakePath@ outputPatho�w�l fort.110full>�@�����2��� ���������@docrefP>@ @filePath$����2��� ���������@@filePath$�w�lR*ch����2��� ���������@#@ PM_Platform�$@������j���X���������@temp_name_listz>@�@temp_name_list>�@�Z$@��&��@�Z@�@������������������������@���@���.���������@temp_name_listz>@@temp_name_list>����������������@���8���&���������@�g@docrefa�@temp_name_listz����$������������@ @docrefa��������������������2��� ���������S creates the output folders���J���8���������@ @ PM_MakePath@ outputPatho�w�lacc�@������L���:���������@ @ PM_MakePath@ outputPatho�w�locean�@������J���8���������@ @ PM_MakePath@ outputPatho�w�lprt�@������J���8���������@ @ PM_MakePath@ outputPatho�w�lrsf�@����������������������4���"���������Screate the diagnostic folders���f���T���������@filePath$> @ PM_MakePath@ outputPatho�w�l diagnostics_>�>�@�����@�����&������������@@filePath$����X���F���������@ @ PM_MakePath@filePath$�w�ltables_�>�@�����@������V���D���������@ @ PM_MakePath@filePath$�w�lmaps_�>�@�����@������X���F���������@ @ PM_MakePath@filePath$�w�lplots_`�>�@�����@������Z���H���������@ @ PM_MakePath@filePath$�w�l vertical_�>�@�����@����������������������.���������������Scopy the actualy model���F���4������������@ inputPath> @ PM_FindFolderw�l Applications>����P���>������������@ inputPath> @ PM_MakePath@ inputPath�w�lModel�@�������������������������������������������`���N������������SIcopy the model requested, check if using version 1.0.7 of the model first���z���h������������@ @ modelgrid�@�?�������C� @�@��������wO8-model version 1.0.7 and later start different���H���6������������ @Setup_RunLunarz@ outputPatho�@ inputPath�������������������@����������������������@���.���������@#@ PM_Platform�$@���wO8 Mac model���^���L���������@filePath$> @ PM_MakePath@ outputPatho�@�����>�w�l.app�@���H���6��������� @Setup_RunModelMac@filePath$�@ inputPath�����������������@�"������������S error check��H���6���������@@@filePath$����$@���wO8 package app�>�>���,������������@ error_num>@�?��������>�@ error_num���|���j������������ @ RundeckErrors�@ error_numC>@� @ error_num��>� @GetListItemStr>@listRef�@�@��������������������������@ e�"���������������@�� PC model>��^���L������������@filePath$> @ PM_MakePath@ outputPatho�@�����>�w�l.exe�@�����N���<������������S6$filePath:=PM_MakePath ($outputPath;"model.exe";False)0������������������@ @ PM_MakePath@ inputPath� @GetListItemStrz#@ ModelAppsRefo� @ modelgrid�@�@��������C��>�w�l.exe�@���@filePath$���������������������"���������������S error checkEr�L���:������������@@@filePath$����$@���wO8single file app���>���,���������� @ error_num>@�?��������>�@ error_num�a�|���j���������h�" @ RundeckErrors�@ error_numC>@� @ error_num��>� @GetListItemStr>@listRef�@�@����������������������V�a@ i�������������e�c@��������������`@ a�������������e�v@�������������A�R@S������������9@99���������������&@�&���������������Sdisplay results?�6���$������������@@ error_num�@��������������(���������������Severything worked������ ������������ @��>@�������������������@�,���������������Ssomething went wrong>���*���������������Scleanup array listor�j���X������������@� @ RundeckErrors�@ error_num�>�@�?��������@�@��������>`@ error_num����&������������h�eSerror dialog ke�>���,������������@�7@������w�lRundeck Errors���������������������@�@��>`@�@��������� @�@���������@��>`@�@��������� @�@����������>`@�?���������>`@�?���������>`@�@ �������w�lAlert���� ���������������@�w�l�>����8���&������������@�(@������w�lRundeck Errors����0���������������Sdelete the failed folder����F���4������������@ outputPatho> @ PM_FindFolderw�l CurrentRun�����:���(������������ @PM_RecursiveDelete>@ outputPatho������� ������������ @��>@�������������������@������������������@������������������������� ������������Scleanup���$���������������@y@listRef����*���������������@�Y @ RundeckErrors����*���������������@�Y @ RundeckTitlen����(���������������@�Y @ RundeckDesc�������������������������������������������������DFCC4D1�~�\���J�� �� ���7dCLoad an image from the thumbnail folder based on the current record��F���4������������7d-and the item in the ItemName array pointed to�� ������������7d input���D���2���������7d* item in the ItemName array to use, 1..80����&��������������\ ����k��um���� ���� z�����\k ������������������������������*������������������� 4D:��>���,������������7d%check that there is something to load����H���6�������� 4D:\�� �ItemNameI�k����?������������@���.������������7d'get the image from the preview database���2��� ��������????\value �ItemNameI�k�@���.��������@\ foundPreviewo���� ����value���<�@���.����T�����\� foundPreviewo������?����������6�6���$��������4_li\����� ���� foundPreviewo�����4���"������������ \ItemPictI�k}��� ����������������\\�8���&���������L�7dblanks for unused pictures �����F���4���������\5�� White Missing� �ItemPictI�k}���������������\\����������������\\�0����������������7dblank for no record �rN�B���0������������\5�� White 128� �ItemPictI�k}��-������������� 2\\������������DFCC4D'�r!�N���<����������85find the list of folders in the input folder for the ����N���<����������84popup menu of potential input folders. Then set all x����R���@�������������89the related menus which really hang off the input folder ��� ������������8menu. ���������������������� ���������8var �����>���,�������������%x��@�������x�input_pathnamexxx���"���������������x�lenxxB�L���:�����������x��@�������x � inputFolderspx������������xxw������������==x���>���,�������������8%use cache manager to get folder list ����@���.�������������x���� ��x��� ���x@��?�������xxq�6���$��������{{�Sx��� ��x � inputFolderspxx����������������x���*����������������8add extra items x��F���4������������lenx�x � inputFolderspx�x�@��?�����������D���2��������www��x � inputFolderspx�lenx��@��������xx�6���$����������� � inputFolderspx�lenxx\�-\���R���@�������� � inputFolderspx�len�x�@��?�������xx\� All Folders\���V���D��������prin � inputFolderspx�len�x�@��@��������xx\�Update Folders\������������ <\�,�������<��=�8setup other menus ^�?p�4���"����<���$ �Simulation_InputMenuSetOthers���������������������������������������������������DFCC4D�,�B���0�� �� �� �7d*handle all the form events for the Journalpt�(��������������[� info_button�������������������M������������o:Pa[al�(������������)�[���$�����n�"�������������; [ InfoText_Load� �(�����������[���$�������:���(���������� [InfoText_SaveRecord��������������o�(������������)�[���$��� ��n�4���"����ʺ�����[ info_buttonB#�InfoText_Button��4���"����ʺ�����#[InfoText_ButtonB����������������������ʺ�����[�D���2����ʺ�����[� info_button����?��������create���(�������������� [InfoText_NewRecordd��F���4������������[� info_button����@��������� duplicate���.�������������� [InfoText_DuplicateRecord����D���2������������[� info_button����@���������delete���*��������������� [InfoText_DeleteRecord��J���8�����������[� info_button����@�������� html previewu���"��������������� [ InfoText_HTMLon�B���0�����������[� info_button����@��������infoB���(��������������� [InfoText_InfoDialog��F���4����r����[� info_button����@��������sections���$�������r� [InfoText_Count@���H���6����r�[� info_button����@�������� edit links��R���@����r� [InfoText_LinkDialog��?�����������������������H���6����r�[� info_button����@�������� view links�&�������r� [InfoText_LinkOpen�L���:����r��5[� info_button����@��������export for web`�=�(������������7dInfoText_WebListB��*����������� [ InfoText_HTML�(l���L���:��������????[� info_button����@��������full page view`77������������[���F���4��������[� info_button����@�������� safe save�N���<��������Yk:k[����$SafeSaveInfoText���@�������������R�:���(�������� [InfoText_SaveRecord��������������0�����������%)[���$SafeSaveInfoText��������������[A�H���6�������� [Alert_ParamText����������������������B���0������� [ Alert_Alert��@�����������@����������e����������)�[��������������E�n[�*����������� [InfoText_ChangeRecord�������������,M[���������������[I��������DFCC4D; r�4���"��'&��&&��gSHandle the input folder menu���`���N�����������SIthis does all the work of loading the input files for all the other menus������������������M�"���������������@item�nu��������������0������������EMak@ S�(���������������@@�$@������.��������������� @Simulation_InputMenuInit���(��������aaaa@@�$@����H���6���������@@������� @ inputFoldersp� @ inputFolderspX����.���������������Supdate the folder list���T���B������������@ @ inputFoldersp� @ inputFolderspX�w�lUpdate Folders����8���&������������ @ CM_Rescan@��@��@�������.��������������� @Simulation_InputMenuInit���>���,������������@itemlc@� @ inputFoldersp�@��������6���$����������@@item���c`@�?��������_�2��� ������������ @ inputFolderspc@�����������������������������@���,�������������� @ inputFolderspc@itemt������������������@��������������4@���<���*������������S%update the file list and the databaseI�@���.��������@���@����c @ inputFoldersp� @ inputFolderspX���2��� ������������ @Simulation_InputMenuSetOthers������������������@��������������� @������������������@��������������������������������������DFCC4DJb�R�*�����'A��&A��gScreate a new recordT#���� ��������@i��_���������n�����:���(������������ @InfoText_SaveRecord@�?�����������"��������������@�D@���������*��������������@����@�?����������2��� ������������SnfoText]Title:="Untitled"���2��� ���������� S[InfoText]Author:="Author"� �F���4���������8�0@����w�leJournal���@� @�@���������<���*���������l�L@@i�@�?��������@�@���������o�6���$������������ @ItemListI�@i@�����������������������������@��<���*������������@@i�@�?��������@�@����������.�������������� @ItemNameI�@iw�l���0��������������� @ ItemCaption�@iw�l���������������� @���(���������������@�Y @ SearchListe����&�����������d@�Y @ LinksList��*���������������@�Y @ LinksListType����.���������������@�Y @LinksListFieldNum����.���������������@�Y @LinksListTableNum����H���6������������@�@�@�������� @ SearchListe�@������������� �F���4���������L@�@�@�������� @ LinksList�@���������������:���(������������@� @ LinksListType�@���������������>���,������������@� @LinksListFieldNum�@���������������>���,������������@� @LinksListTableNum�@���������������J���8������������@�@�@�������� @ LinksListWord�@���������������~���l������������ @Store_Variable_Blob@����� @CurrentItemVers� @ItemListI� @ItemNameI� @ ItemCaption���������������� @Store_Variable_Blob@����� @CurrentLinksVersl� @ LinksList� @ LinksListType� @LinksListFieldr� @ LinksListWord�w �"���������������@�H@�!������*��������������@�!���#@UAM_User���"��������������@�5@���������,�������������� @InfoText_JournalListAdd���(��������������� @InfoText_LoadRecord������������������������������������������������DFCC4D(�I�S�`���N������������8FAdd records to the database for files that are not already contained. ����\���J������������8CRemove records in database where there is no file. Create previews ����d���R���������8Kfor new files and import descriptions if the exist. This code is different �mN�b���P���������8Ifrom the old image browser cache which left the previews in file format. ��d���R���������8JI'm going to trade database size for speed. Each file is checked for type ��in�2��� ������������8and against the database �� ���������������8 input �ks�0���������������8 ptr to folder name ���.�����������3333�8 ptr to file names ����.���������������8 ptr to folder path ����l���Z������������- �� �� ��� folderPtr�filesPtr$� folderPathPtr� fileTypesPtri�F���4����������cmCount� fileCount�fPosC�pos�J���8����������������@�������� cmFilenames�������������L���:����������������@������� � fullFilenames������������@�>���,���������������cmRecordNumbers���������������4���"�������������%��@��������value�*����������������� foundImagef�&���������������� folderPtr �����&����������������filesPtr$ ����*���������������� folderPathPtr �����������������������<���*���������������filesPtr$ � fullFilenamesFo�t���b������������� fileTypesPtri �CM_InputScanFilenameToType��filesPtr$� folderPtr� folderPathPtr ��L���:������������ �CM_ImagesScanQTType�filesPtr$� fileTypesPtriې�P���>���������������filesPtr$� fileTypesPtri � fullFilenames�L�������������������$����������������8 do queries �/�@���.����������������� ����� ���@� folderPtr���0����������������cmCount��L���� ��th�8���&������������� fileCount��filesPtr$ld������������������.����������������8scan for duplicates ����6���$��������������cmCount�@��������������������������������(����������������8build and sort �v�R���@���������������� ��� cmFilenames���� ���cmRecordNumbers�N�>���,��������������� cmFilenames�cmRecordNumbers���P���>���������������filesPtr$� fileTypesPtri � fullFilenameser�,����������������fPos��?�����������������������������^���L�������������8Escan both arrays, move the mark down as files are matched to records ����:���(��������������i��?��������cmCount���V���D�������������pos�� � fullFilenames� cmFilenames�i�fPosl�2��� ��������������pos�@��������������*����������������8mark found files �dd�4���"�������������filesPtr$�pos\�~\���6���$�������������fPos�pos��@��?��������th�,����������������8mark found records ����2��� ������������� cmFilenames�i\�~\���"����������������8 breakout �st�2��� ��������������fPos�@� fileCount���6���$�������������i�cmCount��@��?���������������������������v������������������������������������������������������������������������������0����������������8add records & previews ����<���*��������������i��?�������� fileCount ��:���(��������������filesPtr$�i�@\�~����������������� �CM_ImagesScanAdd�filesPtr$�i � fullFilenames�i� fileTypesPtri�i� folderPtr� folderPathPtrrd������������������d������������������������������������+�P���>�������������86delete unmatched records in CM_Images and CM_Previews ����:���(��������������i��?��������cmCount��:���(�������������� cmFilenames�i�@\�~��@���.������������������ ���cmRecordNumbers�i��&����������������value��� ���le�>���,������������� foundImagef���� ���value���>���,�������������� foundImagef�@�@��?���������� ����������������8delete �?�4���"������������������ ��� foundImagefe��$�����������������:���� ����������������������$�����������������:���� �����������������������������������������������������������,�����������������Y � fullFilenames�������������������DFCC4DkA)�t���b�����FQHandle deleting a section when a user clicks delete (which triggers an info changFe). l���b���P���������FHA special variable handles the fact the info is marked as changed twice �st� �����������s{F input ad�.�������ѐ����F number of section -���,�����������F number of image ^�0��������������-- -�-- sectionNum�--��.�����������-- -�--imageNum@--���(�����������- sectionNum�- -�-x�&�����������,Ge-imageNum@- -�-���������������-�,�����������-- -ItemDeleteBlock--���:���(����������1F second change should be blocked l���,��������Yj -ItemDeleteBlock--�-Q���������--���B���0�����,GeF(first change should be used, and marked ����>���,�������� -InfoText_AddSub-- sectionNum�--�--���,����������� -ItemDeleteBlock--�-Q�������������--"����������������DFCC4D;��~�H���6�������7d/set the other menus dependent on the input menu����d���R��������ers:�7dKwhile this is the wrong location I also set the ocean transports menu here,�ha�`���N�����������7dGI know that this is wrong, but there are problems doing this other ways�������������������"���������������7d local var���2��� ��������[�i��start��end���*�����������[1� useDefaultu�����&�����������[-�foldPtr�����:���(��������[%��@�������� � AllFoldersl�����8���&��������[ �menuPtrAm���@������������6���$��������jo`[ �curPtrA���@�����������������������jrl�-���� ��������jtp�7dclear����(�����������jv@[�Y � rsf_files����,�����������jxt[�Y � ground_fileso��Q�.�����������jz|[�Y �observed_files@�����*������������[�Y � topo_fileso��-�(���������������[�Y � veg_files��es�*���������������[�Y � drag_filesr���*���������������[�Y � rtau_filest���*������������I[�Y � rplk_filesp���*������������[�Y � ocen_filesc����4���"����������7dCLEAR VARIABLE(otsp_files)0�-�*��������������[�Y � mmld_filesm���*�����������[�Y � basn_filesa���*�����������[�Y � difu_filesi�����4���"���������7dCLEAR VARIABLE(a23sp_files)�an�.������������I[�Y �pbl_table_files�����0�����������111[�Y �pbl_socean_files@���,�0�����������[�Y �pbl_uocean_files@��lo�.���������� [�Y �pbl_sice_files@�����.�������������[�Y �pbl_uice_files@�����.�������������[�Y �pbl_sland_files�����.�������������0[�Y �pbl_uland_files����������������������� ����������{�7dvar��H���6����������[���@�������� � rsf_files���������������P�L���:���������s�t[���@�������� � ground_fileso����������������N���<����������2[���@�������� �observed_files@������������������J���8���������� [���@�������� � topo_fileso����������������H���6����������[���@�������� � veg_files��������������� �J���8����������[���@�������� � drag_filesr����������������J���8����������0[���@�������� � rtau_filest����������������J���8����������[���@�������� � rplk_filesp����������������J���8����������{[���@�������� � ocen_filesc����������������6���$�����������7dARRAY STRING(80;otsp_files;0)����J���8���������s�t[���@�������� � mmld_filesm������������������J���8��������� �[���@�������� � basn_filesa���������������ws�J���8������� [���@�������� � difu_filesi����������������8���&�����������7dARRAY STRING(80;a23sp_files;0)��ag�N���<����������[���@�������� �pbl_table_files������������������P���>����������0[���@�������� �pbl_socean_files@���������������er�P���>����������[���@�������� �pbl_uocean_files@����������������N���<����������{[���@�������� �pbl_sice_files@������������������N���<����������[���@�������� �pbl_uice_files@������������������N���<���������s�t[���@�������� �pbl_sland_files������������������N���<���������n�d[���@�������� �pbl_uland_files����������������������������������.������������� �7dset up pointer arrays����B���0���������� [menuPtrAmj��?�������}}� � rsf_files� f�F���4���������� [menuPtrAmj��@��������}}� � ground_fileso��H���6����������0 [menuPtrAmj��@��������}}� �observed_files@�il�D���2���������� [menuPtrAmj��@�������}}� � topo_fileso�8�B���0����������{ [menuPtrAmj��@�������}}� � veg_files�o �D���2���������� [menuPtrAmj��@�������}}� � drag_filesr� n�D���2���������s�t [menuPtrAmj��@�������}}� � rtau_filest��D���2���������2�3 [menuPtrAmj��@�������}}� � rplk_filesp��D���2��������MUTX [menuPtrAmj��@�������}}� � ocen_filesc� a�4���"������������7dmenuPtrA{10}:=->otsp_files0��:�D���2����������� [menuPtrAmj��@�������}}� � mmld_filesm���D���2����������� [menuPtrAmj��@�������}}� � basn_filesa����D���2����������� [menuPtrAmj��@�������}}� � difu_filesi����4���"�������������7dmenuPtrA{13}:=->a23sp_files����H���6������������ [menuPtrAmj��@�������}}� �pbl_table_files����J���8������������ [menuPtrAmj��@�������}}� �pbl_socean_files@����J���8������������ [menuPtrAmj��@�������}}� �pbl_uocean_files@����H���6������������ [menuPtrAmj��@�������}}� �pbl_sice_files@� ��H���6������������ [menuPtrAmj��@�������}}� �pbl_uice_files@�ub�H���6������������ [menuPtrAmj��@�������}}� �pbl_sland_files����H���6������������ [menuPtrAmj��@�������}}� �pbl_uland_files� ��<���*������������ [curPtrAj��?�������}}���o������<���*������������ [curPtrAj��@��������}}���������<���*������������ [curPtrAj��@��������}}���k������<���*������������ [curPtrAj��@�������}}�������et�<���*������������ [curPtrAj��@�������}}�������CK�<���*������������ [curPtrAj��@�������}}���~���� (�<���*������������ [curPtrAj��@�������}}������� (�<���*������������ [curPtrAj��@�������}}�������AN�<���*������������ [curPtrAj��@�������}}�������un�N���<�������������7d4curPtrA{10}:=->[Model Variables]Qflux Boundry OTSPEC�����<���*������������ [curPtrAj��@�������}}���������<���*������������ [curPtrAj��@�������}}���n������<���*������������ [curPtrAj��@�������}}����������R���@�������������7d8curPtrA{13}:=->[Model Variables]Special Regions Boundary��(�<���*������������ [curPtrAj��@�������}}�������un�<���*������������ [curPtrAj��@�������}}���������<���*������������ [curPtrAj��@�������}}���������<���*������������ [curPtrAj��@�������}}���������<���*������������ [curPtrAj��@�������}}�������ng�<���*������������ [curPtrAj��@�������}}��������<���*������������ [curPtrAj��@�������}}�������ES�����������������u �������������������h���V�������������7dOcheck if all input folders should be checked or only the currently selected one� (�*���������������[foldPtr}�������ss�,���������������[start}��?��������]�*���������������[end}��?�����������<���*������������[ � inputFoldersp������������������(���������������[ useDefaultu}���TE����������������[[�R���@������������[ � inputFolderspj � inputFoldersp}���� All Folders����(���������������[ useDefaultu}���IS�,���������������[start}��?�����������F���4������������[end}� � inputFoldersp��}P��@��������������������������[[��(���������������[ useDefaultu}���ES����������������[[d����������������[[������������������[��^���L�������������7dEloop over all the input folders, do only once for normal menu choices����z���h������������ [FileListByType@�� Input Types�� useDefaultu�����foldPtr�� �menuPtrAm�� �curPtrA��ND�������������������F���4�������������7d-list ocean folders into ocean transports menu�(�@���.������������ [Simulation_OcnTransMenuSet���������SS�������������������P���>�������������7d7list special region files and pick right item, plus new���*���������������[�Y � a23sp_files����J���8������������[���@�������� � a23sp_files���������������LI�Z���H������������ [FileListSpecialRegions�� � a23sp_files����������sprg������������������������������������DFCC4D.��?�~���l��&��%��gSQCopy all the input files into the run folder so that the run can start. The modelS itself is copied~�v���d�����������SQin Setup_RunFolder as is the rundeck. This code does all the other input files anS d returns��r���`�����������SQmeaningful errors if things go wrong. Fixed bug where solar trend was not writtenS out.V����������������S������� �������� ADOS input���D���2��������4S, none (implicitly folderNames has been set)������ ������������S output���4���"��������@���S boolean, sucess or failure�������������������@�����������������Svar���� ���������� 1 @�����j���X������������@%@�@�������� @ outputPathu� @ inputPath� @inputSpecialPath�@filePath$����&���������������@@ error_num����:���(������������@%@�@�������� @ RundeckTitlen����8���&������������@%@�@�������� @ RundeckDesc����J���8������������@�@�@�������� @ RundeckErrors�@�@�����������$���������������@@listRef����$������������� @@listLen����(�����������KK�@@ listItemRef���(��������������@@ folderCount���������������������"��������dS basic setupap�.���������������@ error_num%@��������������8���&��������@���@listRef%@w�l Setup Errors%����0���������������@listLen%@|@listRef���V���D������������@z@listRef�@�?��������@ listItemRef� @ RundeckTitlen����T���B���������� @z@listRef�@�@���������@ listItemRef� @ RundeckDesc�����������������������"���������������S path setup8���>���,������������ @ inputPath% @ PM_FindFolderw�lInput����N���<������������ @inputSpecialPath% @ PM_FindFolderw�l Input Special����F���4������������ @ outputPathu% @ PM_FindFolderw�l CurrentRun�����H���6��������� @folderSpecialNames%�@�?�������4%w�lDefault���F���4��������� @folderSpecialNames%�@�@��������4%w�lUser4�������������������6���$���������Sfiles needed to start the model�����������������0������������Sground data file, unit 7�������~������������@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�����%�w�l.grnd�@�@�����������*������������� @@copied����@���=�>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@���������������������������@����������������0����������� Socean data file, unit 15� �J���8�������� ))@@�����@�@���������wO8observed ocean mode����~������������@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�����%�w�l.obsr�@�@�����������6���$���������� @�� sst, qflux or deep ocean mode�t����~�����������@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�����%�w�l.ocen�@�@������������������������ @�$�*���������������@@copied����@�����>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@����������������������.���������������Sdrag data file, unit 19������~����������0@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�~����%�w�l.drag�@�@���������/�*������������� @@copied����@���=�>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@����������������������8���&������������S!radiation rtau data file, unit 21������~��������@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�����%�w�l.rtau�@�@���������*���������������@@copied����@�����>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@����������������������8���&������������S!radiation rplk data file, unit 22������~������������@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�����%�w�l.rplk�@�@�����������*���������������@@copied����@�����>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@����������������������4���"������������Svegetation data file, unit 23������~������������@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�����%�w�l.vegt�@�@�����������*���������������@@copied����@�����>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@����������������������4���"������������Stopography data file, unit 26������~������������@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�����%�w�l.topo�@�@�����������*���������������@@copied����@�����>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@����������������������D���2������������S-special regions data file (optional), unit 29���4���"������������Suses a different input folder������������������@copied�% @Setup_CopyFiles28) @folderSpecialNames��) @inputSpecialPathe�) @ outputPathu�@�����%�w�l.sprg�@�@������������������������������2��� ������������Srestart data file, unit 109������~������������@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�o����%�w�l.rsf_�@�@�����������*���������������@@copied����@�����>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@����������������������.���������������Sfiles needed for qflux���2��� ������������@@�����%@���������������,���������������Sotspec file, unit 17%������������������SQotspec files are an exception and are loaded from a special location, the alternaS'te folders are never used for this file���N���<������������@filePath$% @FindOTSpecFolder8)@�����)@��������6���$������������@filename$%@�����%�w�l.otsp���^���L������������@@ @ PM_MakePath@filePath$�@filename$�@������$@������>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@������v������������ @PM_CopyFortranz@�?��������@filename$�@filePath$�@������������ @ outputPathu�@�@��������@��������������������@����������������������D���2������������S-max mixed layer depth file data file, unit 25������~������������@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�����%�w�l.mmld�@�@�����������*���������������@@copied����@�����>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@����������������������2��� ������������Sfiles needed for deep ocean���2��� ������������@@�����%@�?�����������>���,������������S'deep ocean diffusion data file, unit 62������~������������@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�����%�w�l.difu�@�@�����������*���������������@@copied����@�����>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@������������������@������������������@���v���d������������SQif you want to collect ocean fluxes for qflux then you need the mixed layer dept,S unit 25a��� ���������������@@�����������~������������@copied�% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�����%�w�l.mmld�@�@�����������*���������������@@copied����@�����>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@������������������@������������������@����������������������F���4������������S.basin file for processing ocean flux, optional���,���������������@filename$%w�lkBasin ���@���.������������ @ outputPathu% @ PM_FindFolderw�locean�������������������@copiedd% @Setup_CopyFiles28) @ folderNames�) @ inputPath�) @ outputPathu�@�n����%�w�l.basn�@������������@filename$����*���������������@@copiedm���@�����>���,������������@ error_num%@�?��������%�@ error_num���|���j������������ @ RundeckErrors�@ error_num4%@� @ error_num��%� @GetListItemStr%@listRef�@�@��������������������������@����������������������>���,������������S&create forcings files, if requested to ������������������SCO2���\���J������������@@�U����x @�����x @�����x @�'����x @�1����x @�C�������2��� ������������@#@ PM_Platform�$@��������������������� @ trendSetter_I @ PM_FindFolderw�l CurrentRun����� @ PM_FindFolderw�l diagnostics����@��@�����%�w�l trends�������������������@������~������������ @ trendSetter_I @ PM_FindFolderw�l CurrentRun��� @ PM_FindFolderw�l diagnostics��@��@�����%�w�l trends�������������������@������������������@����������������������h���V������������SPexport run as xml file for later reimport, surpress error messages just for thiso���6���$������������@@ error_num�@���������������2��� ������������@@#@Simulation_ProcessID(����6���$������������#@Simulation_Button%@�@����������2��� ������������@I#@Simulation_ProcessID(�������������������@����������������������&���������������Sdisplay results���6���$������������@@ error_num�@���������������(���������������Severything worked������ ������������ @��%@�������������������@���,���������������Ssomething went wrong%���*���������������Scleanup array list���j���X������������@� @ RundeckErrors�@ error_num�%�@�?��������@�@��������%`@ error_num����&���������������Serror dialog ���>���,������������@�7@������w�lRundeck Errors���������������������@�@��%`@�@��������� @�@���������@��%`@�@��������� @�@����������%`@�?���������%`@�?���������%`@�@ �������w�lAlert���� ���������������@�w�l�%����8���&������������@�(@������w�lRundeck Errors�������������������@����0���������������Sdelete the failed folder����F���4������������@ outputPatho% @ PM_FindFolderw�l CurrentRun�����:���(������������ @PM_RecursiveDelete%@ outputPatho������� ������������ @��%@�������������������@������������������������� ������������Scleanup���$���������������@y@listRef����*���������������@�Y @ RundeckErrors����*���������������@�Y @ RundeckTitlen����(���������������@�Y @ RundeckDesc����(���������������@�Y @ folderNames���������������������������������������������������������������DFCC4D&v�qH�*�������\����"0startup journal ?"�t���b������������ Generic_OpenReopen???#InfoText_ProcessID??x�InfoText Window?x�InfoText_Process???������������DFCC4Dv�,P�2��� ��&\��%\��gSRespond to a paste commandDT���������.������� �������������gS temp codeo �&��������������-@ selection����$�����������0001@@selType�06�&�����������EMak@\@fromClip$��f� ���������������@@pos����>���,����ݢ��� @@startSel$�@endSele�@offsete�� �������������� �(@�J���8��������� �S3check that it's a valid selection & valid clipboard�e�$�������������@ selection~@��:���(����������@@'@ selection���$@�� �� �6���$������������@@w�l4Dim����$@���on�2��� ��������Ƞd@w�l4Dimd�@fromClip$����0���������������@ @OKo�@�?�����������"�����������@���S find image8��<���*������������@pos~@� @ItemPictI�@ selection����0���������������@@pos�~@��������������(�����������>� @ @ selection�� ���������������SQItemName{$pos}:=PM_MakePath (PM_MakePath (DragTransferFilename{1};"Thumbnails";TS$rue);DragTransferFilename{2};False)P�������������Ȝ4 @ItemNameI�@posa~#@DragTransferFilename=�@�@��������a�~�#@DragTransferFilename+�@�?�������awO8=FileFolderKey���B���0������������ @ ItemCaption�@posa~#@DragTransferCaption���T���B��������@���S=ItemPictLabel{$pos}->:=DragTransferCaption `(don't set this)�����������������@������������������@��������������>� @���B���0����������� @ Alert_Alert@�?��������@�@������������������j�����@ s����������������@o�����������������@�N���<������������S6try to impliment a normal text paste for text sections0���D���2������������S,this is harder than it looks to get it right���:���(�����������@@'@ selection���$@������4���"������������@@$@������$@������&���������������Sfind selection���B���0������������@�@ selection��@startSel$�@endSele����d���R������������SMinsert pasted text into selection & the set selection to the end of the paste������������������@ selection�~@� @ selection��@�?��������@startSel$�~`@�?���������~�@ �~�@� @ selection��@endSeli����*���������������@offseti~@�@ ����`���N������������@�@ selection��@startSel$�~�@offsete�@startSel$�~�@offsete�������������������@S����������������@S����������������������DFCC4DQ:�>���,����������"0%remove a link from the list of links "���"�������l%���]elm]]oc��������mː����]�8���&������������] LinksList�]@]�����������]]���(��������������elm] ] LinksList]D�0���������������] LinksList]elm]]��4���"�������������] LinksListType]elm]]�6���$�������������] LinksListField^]elm]] L�4���"������������] LinksListWord]elm]] ]�������������������������������������������������DFCC4D �.�IC�\���J�� �� ���7dBAdd a record to the database for a new image and add a preview and��Z���H������������7dAprewritten description text. Files that are not in jpg format are��\���J������������7dCconverted to jpg format and the original file is deleted!! This is �te�b���P�������������7dHa change in behavior from the old versions, but everything was converted��te�P���>����������7d7to jpg for the web anyway so what's the big difference?�Se�������������� �7d�w��^���L���������t�n�7dDThis version supports multiple files with identical names except forr����`���N����������$�7dFthe endings, eg: moof.tiff, moof.jpg, moof.pdf. 4D 2003.3 fixes the 31�na�R���@���������s�e�7d9character filename bug so files can be 80 characters now.���� ������������(��7d input�) �*�������Ͷ��� �7d short filenamer���(������������t�n�7d long filename�D�$�������������$�7d filetype���2��� ���������s�e�7d ptr to the folder name���0������������(��7d ptr to the file path��er�^���L���������� [%��@�������� ��� ���� shortname��longname$��oldname�����N���<���������d� [%��@�������� ����filetype$�� fileendingf�����J���8����������-[- ��� ���� folderNamePtr�� folderPathPtr���B���0���������t�h[1� DocLocked�� DocVisibleD��move���F���4��������MUTX[3�DocCreationDate��DocModificationDate����F���4����������[2�DocCreationTime��DocModificationTime���B���0��������[� CreationStamp��ModificationStamp���L�F���4��������RRR[%��@��������� imagePath��textPath$�����(��������������[� imageText��D�*�����������[� sourcePicts��ys�l���Z�����������[�state�C0=cancel (can't convert image),1=continue,2=image already in memory�&�����������[ shortnames ����&������������l�d[longname$s ����&������������T�E[filetype$s ����*������������o�c[ folderNamePtrs ����*������������ �[ folderPathPtrs ������������������1� ��,������������E�l�7dget more file info���`���N���������_�P[ imagePaths � PM_MakePath� folderPathPtr�� folderNamePtr�������������������N�[� imagePath�r�`�longname$�� DocLocked�� DocVisibleD��DocCreationDate��DocCreationTime��DocModificationDate��DocModificationTime�����`���N����0��� [ CreationStamps � CM_TimeStamp_�DocCreationDate��DocCreationTime����l���Z����0��t�n[ModificationStamps � CM_TimeStamp_�DocModificationDate��DocModificationTime����������0���$��8���&����0��s�e�7dlook for description text file����`���N����0��(�[textPath$s � PM_MakePath� folderPathPtr�� folderNamePtr������b���P����0���[textPath$s � PM_MakePath�textPath$�� shortname�r�`��.txt������`�@���.����0���[��textPath$�����?���������t �&�������0��1� �7d read the file�R�4���"����0��E�l[fileRefs��textPath$���.�������0��_�P[lens��fileRef�����<���*����0� `[�h�fileRef�� imageText��len�����&�������0����[ �fileRef����������0�[[�B���0����0�[ imageTexts �PM_Name�longname$�����li��������0�[[P��������0�����[��B���0����0�111�7d(convert image to jpg if it's not already��23�2��� ����0�[�filetype$����jpg���$�������0������7d read image���H���6����0�����[� imagePath�r�`�longname$�� sourcePicts��or�X���F����0������7d>if the image loads then compress it, otherwise stop the import ����2��� ����0�����[ �OKs����?������������>���,����0�����[states��@��������uh image loaded@u���$�������0������7d name fixes��, �,�������0�����[oldnames�longname$�\����p����0�����[longname$s�� � shortname���?����������@���������r�`��.jpg�80 char field in database�j���X����0������7dPcheck for duplicate files where moof.jpg, moof.gif, and moof all become moof.jpg���^���L����0������7dDprevously this just overwrote the file, should automatically rename.r����,�������0�����[counts��?��������\�J���8����0�����[�� imagePath�r�`�longname$���$����� o�x���f����0�����[longname$s�� � shortname���?����������@���������r�`�� �count��r�`��.jpg��bl�8���&����0�����[counts�count�r�`��?������������������0�����[[�(�������0������7dwrite & delete����v���d����0�����[� imagePath�r�`�longname$�� sourcePicts���JPEG��4D 2003.3 fixes 31 char limit���2��� ����0�����[ �OKs����?�����������0����������������7dnow the image is a jpeg����d���R������������[� imagePath�r�`�longname$���prvw��have preview open document4���R���@������������[�� imagePath�r�`�oldname�remove the old doc!!!!lm����������������[[�*����������������7dconversion failed��4���"������������[states������������uhbadu�����������������[[����������������[[�4���"������������[states������������uhbadu����������������[[ew���������������H[[��F���4���������[states��?�������uhok, image not loaded�u �������������[[�F������������[1�H���6��������[�state�sP�������������continue if ok`��$������������7d add record��"�$�����������[�D���� ����on�0��������������[�� ��s� folderNamePtr�|�*��������������D[�� ��s�longname$�yF�.������������[�� ��s� CreationStamp����2��� ����������[�� ��s�ModificationStamp�ni�*��������������J[�� ��s� imageText��=�,���������������[�� ��s��������������@���.����������[�� ��s�longname$�r�`� folderNamePtr��$�����������[�5���� ����un���������������D��.�����������ww�7dpreview & description����$������������[�D���� ������0�����������[�� ��s� folderNamePtr�.�*������������P�[�� ��s�longname$��=�*��������������J[�� ��s� imageText��=�@���.�����������J[�� ��s�longname$�r�`� folderNamePtr�.�R���@�����������H[�state����?��������load image if nececessary��H���6��������̻@[� imagePath�r�`�longname$�� sourcePicts��Fi���������������H[[S�h���V���������t[� sourcePicts���� �����@����������@��������$����$��!������$��������������[�5���� ������������������o[[��������������������������������������DFCC4DM �,�:i�h���V�� ]�� ]���8NWARNING, this code is disabled, kbasin copying is not required at the moment! d�������������������[�j���X������������8QThis is special setup code to work around the case where a user wants to collect ����x���f������������8Qocean fluxes on a run after they have already started it. This violates the gener�8al rule u�eP�X���F������������8?that the intput files are not changed after the run is started ���Z���H�����������(% (�@������� ( kBasinPath� ( inputPath ( alternatePath  ���&�����������(1 (allFold  ��P���>���������(� (�@������� (alternate_folders (�����������  rm����������� [�X���F����������8?only check if they're actually interested in collecting fluxes �me�"������������( (����  ge������������� �&�������������8 create path ��e$�H���6��������( kBasinPath� ( PM_FindFolder �� CurrentRun$  ��V���D���������( kBasinPath� ( PM_MakePath ( kBasinPathh  �Ocean (�  t ������������� 1�0��������7����8check for file in run ���h���V���������( ( ( PM_MakePath ( kBasinPathh  �kBasinP (�  � @(�?�������  s�$�������������8 add paths <���@���.���������( inputPath ( PM_FindFolder �� Input  ��2��� ���������( alternatePath ( inputPath(�T���B���������( inputPath ( PM_MakePath ( inputPath  �Default (�  es������������� t �*�������������8copy kbasin file �7�6���$���������( (����� @�� All Folders  ���$������������(allFold (�(Te�B���0���������( ( alternatePath (alternate_folders  ��6���$���������( alternatePath  � All Folders ���������������((�F�$������������(allFold (�(am�X���F���������( alternatePath ( PM_MakePath ( alternatePath (���� (�  nv�������������((�������������([��������������8QIf (Setup_CopyFiles ($inputPath;$kBasinPath;[Model Variables]kBasin Boundary;"kBa�89sin";$alternatePath;$allFold;->alternate_folders)=False) ����D���2��������� ( Alert_Alert (�@�������� (�@�������  �"�������������8End if l���0������������(�Y (alternate_folders  ��������������((ew�������������([�������������((������������������DFCC4DM ��P���>�������86PM_WebLaunch opens a local web page on the Mac or PC. �te�X���F����P�����8>The complexity is that the PC version has to know where IE is ,���.���������������8or nothing launches ��������������������8 �� ����������������8 input ���6���$�������������8 string, path to html file Z����<���*�������������%��@������� ���webPage���6���$�������������%��@��������iePath����$����������������webPage ���Te�����������������[�����������������(�4���"�������������#� PM_Platform�@$������� �������������8Mac �����B���0�������������err�.��webPage������������ �������������������F���� �������������8PC ��$����������������iePathl��il�>���,�������������iePathl � PM_UpOneLevel�iePathn���V���D�������������iePathl � PM_MakePath�iePathe\� Program Files�����Z���H�������������iePathl � PM_MakePath�iePathe\�Internet Explorer��?�R���@�������������iePathl � PM_MakePath�iePathe\�IEXPLORE��� �Z���H�������������err�.��iePathl��@\� ��@�webPage��?��������������������������������������������������������������DFCC4D�Q,[���� ��&\��%\��gSsetup>�8���&��������%r�� @ViewModeV�wO8 1=icon, 2=cold����������������L���:����^����S5wait for Cache Manager to finish scanning image filess��4���"������������@@w�l$CM_ImagesScan�����.�������j�����@C@B�@�@����������������������d@ �����������������b���P�����������SJfigure out how far over the new window can go, guess out width of eJournal���x���f������������@@J#@InfoText_ProcessID~��$@� ���x @J#@InfoText_ProcessID���$@� �����B���0�����������@leftPos~#@ Toolbar_Width��next to toolbar���������������@���F���4�����������S.to the right of the InfoText_ProcessID window���4���"���������@leftPos~@��~`@�@����������B���0�����������@rightPos$~#@ Toolbar_Width�~�@�@����������2��� ��������aaaa@@leftPos�~@rightPos$���<���*������������@leftPos~@rightPos$�~�@�@���������������������0001@02������������EMak@ S�������������΀��&���������������Ssave menu item���*�������������;@�Cw�l Info_iPhoto��F�.��������d @ViewModeV~@�?����������6���$���������@�7@������w�liPhoto��������������@��� @myWind�~@�@leftPos�@�@���������~`@�?���������~`@�?��������$@�"� �w�l Image Browser�w�l Generic_Close� ��������������@����� ���������@F@B� �$��������>� @ @myWind���������������������&������������Sdefault record������ ���������@������"���������������@�@���������:���(���������L@@�S@������� �@�������������"���������������@�D@������.�(���������������@����~w�lDefault���&���������������@����~w�lMoof���*���������������@����~@�@����������&���������������@����~w�lMoof���&������������ @����~w�lMoof���*�����������aaaa@����~@�������������*�����������@����~@������������*������������@� ���~@��������������"������������@�5@���������������������@�������������������$������������S order records���"������������@�/@���������"������������@�/@��� ������2��� �������&@�1@��� ���@�� ����~���"������������@�2@��� ����������������������������������@���"������������@�9@���������L���:���������@@left��@top�@right�@bottom�� @myWind�����$���������������@� @myWind��������������������@���6���$������������@ @ViewModeV�@�?�����������6���$������������@�7@������w�liPhoto���������~������������ @myWind�~@�@leftn�@top��~`@�?���������~`@�?��������$@�"� �w�l Image Browser�w�l Generic_Close����6���$������������@ @ViewModeV�@�@������������0���������������@�7@������w�lColumn������������������� @myWind�~@�@leftn�@top�@leftn�~�@�@��������@��~`@�@��������$@�"� �w�l Image Browser�w�l Generic_Close�������������������@���$�������$�����@ @myWind�������� ����$�����SACCEPT������ ����$�����SOK:=1���0�������$����� @ @OKW�@�����������������������$��������V���D������������S? The close box associated with this window pauses the process. ���Z���H������������SB The window stays ready for use throughout the use of the program.����������������������b���P������������#@InfoPict_ProcessID~~@������������� $ Reset process ID tracking variable.~����������������������*�����������S End of procedure.I��������������������������������������������������DFCC4DU�{�t���b��$}��#}��LQPlay on a scenario actually performs a duplicate, but the name of the run is changed ton���F���4����������.match what the user types in in the dialog box���(�����������^ � FolderTexto����(������������^ � Foldernameo����,��������^1�done(��good(� ��"���������������^�found����������������&&����� ��������setup�*����������� ^ Foldernameo������B���0�������� ^ FolderTexto�Please pick a unique name:D�G� �����������RRR^done(����� ��������������^good(��׭�"�����������^simWind�������������������J���8����b����2do dialog, repeat until valid name or they give up(���������b�^���&�������b�display dialogh��������b�^������@���������P��@�������������@���������P��@�������������@������������@�������������@������������@��������$��'���Name Scenario Copy�y@ Open a modal window��<���*����b���^�(��������PastePICTNewFolder��r��������b�111^���0�������b�^ �OK���?���������*�������b�check for uniquness�D�X���F����b� ^ Foldernameo��  � Foldernameo���?����������@�����������<���*����b�^found������� � Foldernameo��2��� ����b�^�found� ��������������� �����������????^good(��==� �����������)�^done(��������������^U�N���<������������ ^Alert_ParamText � Foldernameo�������������B���0������������ ^ Alert_Alert��?����������@��������������������������^������������������^��� ���������������^done(��������������������^������ ������������ ^^done(������������000100�4���"�����EMakdo the duplicate if requestedke���� ���������^^good(���B���0��������� ^Simulation_Duplicatep��� � Foldernameo�_n�X���F���������^��Setup Simulation, Run ID: D�� � Foldernameo��simWind����������������^������������������������DFCC4DYd�~�H�V���D��'A��&A��gS?Create makeNetCDF.I file to convert the maps into NetCDF formatB�h���V����������SP!!warning this program uses a mach-o (Cocoa) application and Unix line endings!!d�\���J�����������SE!!the NetCDF library works for Classic and Cocoa but not for Carbon!!���\���J�����������SD!!makeNetCDF can create files with names longer than 31 characters!!D�"��������������@diag,�nu�"�����������KK�@@diag2����6���$��������@%@�@��������@ diag_path�;;�6���$������������@%@�@��������@filename$����(������������@2@ docref_full�� ��������������@@pos����"�����������D@@iteme�e�������������d���*���������������Screate the .I file ���>���,��������@���@diage@������@�Z@�@�����������d���R������������SMset the paths which is a little tricky because the existing file can push the���4���"������������Smaximum file length under HFS��d���R��������O� @filename$@������w�l_��@� @�������w�l-��@� @�����L�<���*���������� S%$diag_path:=Run_Path +":diagnostics:"�s�j���X������������@ diag_pathw�l ../../Output/��@������w�l /diagnostics_��@������w�l/�P���>���������� @ diag_path@ diag_path��w�lmaps_��@������w�l/�t�^���L������������@diag�@diag���@ diag_path��@filename$��@�Z@�@����������>���,���������L@@�@filename$��@�@�����������T���B������������@filename$@�@filename$�@�@��������@�@���������������������������@���8���&������������@filename$@filename$��w�l.nc���^���L������������@diagn@diagn��@ diag_path��@filename$��@�Z@�@�����������0���������������Sset intervals to average���� ������������ @@��������.���������������@diag�@diag���w�lt�����������������@���.���������������@diag�@diag���w�lf��������������KK�@++� ��������������@@�������.���������������@diag�@diag���w�lt������������������@���.���������������@diag�@diag���w�lf������������������@��� ���������������@@��������.���������������@diag�@diag���w�lt������������������@���.���������������@diag�@diag���w�lf������������������@��� ���������������@@��������.�����������@diag�@diag���w�lt������������@�.����������� ))@diag�@diag���w�lf �������������6@5�>���,������������@diag�@diag���@�Z@�@������������������������������T���B������������S=set the var, these should match those for the last processing����������������������8���&������������@K@������w�loldAJKselection����8���&������������@@������@�����@��������"���������������@�2@���������@���.������������@@item��@�?��������@�@�����������"���������������S add value ��� ���������������@@��������.���������������@diag�@diag���w�lt������������������@���.���������������@diag�@diag���w�lf��������������9@99�&���������������Sadvance record���"���������������@�3@������������������������@���>���,������������@diag�@diag���@�Z@�@�����������>���,������������@diag�@diag���@�Z@�@�����������0���������������SVaranger.A01 (run number)���4���"������������SVaranger.A01_1901-1910 (src)���&���������������Stest.nc (dest)���&���������������Stttt (seasons)���<���*������������S%ttttttttttttttttttttttttttttttt (var)����������������������0���������������Srestore the old selection���.���������������@Lw�loldAJKselection�����������������������,���������������Swrite out the .I file���H���6������������@ diag_path @ PM_FindFolderw�lDiagnosticsApps����L���:������������@ docref_full@ @ diag_path��w�l makeNetCDF.I����2��� ������������@�g@ docref_full�@diage����(���������������@ @ docref_full����H���6������������@@ diag_path��w�l makeNetCDF.I�w�lR*ch�����������������������D���2������������S,create the .I Diag file and the .I Name file���0���������������Snot currently implimented����������������������*���������������Srun the application���^���L������������@errCode@.�@ diag_path��w�lmakeNetCDFX.app�@����������������������������������DFCC4D �<�T���B��&��%��gS<This code extends a current run to go longer. The run should����R���@�����������S:be stopped already or the results are unpredictable. Trend���.��������������Sruns cannot be extened������������������M�&�����������00011@extendIt$�00�$�����������@1@relockI��$���������������@@myState����2��� ������������@%@�@��������@temp�����$���������������@extendIt$>@���"���������������@relock�>@����������������������� �������������S setup db �"���������������@�@��������(�������������� @Run_Critical_Begin>���0�����������4@)��force immediate write���b���P������������@tempC>#@RunNumberArray>�#@RunNumberArray>)wO8this gets the run's name����H���6��������@���@�@������#@ RunIDArrayR�#@RunNumberArrayz)����&��������������� @Run_Critical_End����������������������$������������� S check trends���8���&������������@@�����x @�����x @�U�������$�������������@extendIt$>@������������������@���8���&������������@@�'����x @�1����x @�C�������$��������������A@extendIt$>@�������������������@���������������������"���������������S extend run8��$��������������@@extendIt$����"���������������S setup alert���2��� ������������ @ NewEndDatee>@�@��������l���Z������������ @Alert_ParamText@�����@� @�@������>�@�?���������w�l�>�w�l�>����R���@���������� @ Alert_Alert@�@��������@�@��������@�?���������a��������������������`���N������������SHchange the date, via simulation process if it exists, otherwise directly���t���b������������@ @OK�@�?����������5 @ NewEndDatee�>@�@������>�@�?�������������0�������������#@ NewEndDateN> @ NewEndDatee�O�>���,������������@myState>@J#@Simulation_ProcessID(����`���N��������99@@myState�wl@�@�����������5@myState�>�>`@�?����������6���$������������#@Simulation_Button>@�@����������2��� ������������@I#@Simulation_ProcessID(���������������@�*����������� )) @Simulation_ExtendRun8�$������������6 @Setup_PauseGCMz(�����������������������������������@������������������@������������������@���H���6������������ @Alert_ParamText@�����w�l�>�w�l�>�w�l�>����B���0������������ @ Alert_Alert@�?��������@�@��������������������������@����������������������4���"������������#@Setup_ProcessID>@�������������������������DFCC4DQ3�T���B����0�����F;Returns the path to the current run, now uses Path Manager  ���������Z^���:���(�����s{ �� PM_FindFolderY�pCurRunP��������DFCC4D�,�`�r���`�� L�� L����8QCreate the trendSetter.I Name file with the names of the tab delinated text files�8. e��N�p���^���������8QThe basic names come from the PPMV58 revisited list (from the famed array in R83)�8 ����8���&������������8and filled out from run info. ���������������� ������:���(�����������(%e(�@�������e( trend_path�ee���(���������������(e( trendNameee���4���"��������4d(e(listRefe(listItem�ee� �������������(e(iee��*�����������JRF1(2e( docref_fullee������������wwe���&�������������8 list loader ��]�<���*��������["(listRefe(ee�PPMV58 Revistedee���0��������������(listItem�e(�?�������(����������������(���2��� ����"������8setup names, six trends �����(�������"�����( trendNameee��ee���>���,����"�����(e(ie(�?�������e(�@�������ee���t���b����"����( trendNamee( trendName�e�@ (GetListItemStr�e(listRefe(listItemte�e�@(�Ze$(��&ee A��������"����( trendNamee( trendName�e�@ (GetListItemStr�e(listRefe(listItemt�e�@(�?�������e�e�@e� for �e�@(�����e�@(�Ze$(��&ee(����t����"�MUTX( trendNamee( trendName�e�@ (GetListItemStr�e(listRefe(listItemt�e�@(�@��������e�e�@(�Ze$(��&ee����t����"�� ��( trendNamee( trendName�e�@ (GetListItemStr�e(listRefe(listItemt�e�@(�@��������e�e�@(�Ze$(��&eeet�@���.����"�5���(listItem�e(listItem��e�@(�@�������(GC��������"�7���((d��������"�����(8�4���"����"�6����8write out the .I Name file ����F���4����"�����( trend_path�e ( PM_FindFoldere�� TrendAppsee�V���D����"�����( docref_fulle( e( trend_pathl�e�@e�trendSetter.I Nameee�@�4���"����"�����(e#( PM_Platform�e@$(��ee߻����p����"�����(�ge( docref_fulle(�e(�e( trendNamee(�Ze$(��&ee(�Ze(�@�������eee��:e��/eee����������"�����((�@���.����"�����(�ge( docref_fulle(e( trendNameeee���������"�����((ew�*�������"�����( e( docref_fullee���R���@����"�����(e( trend_path��e�@e�trendSetter.I Nameee�R*cheee����������"�����e(�"�������"������8cleanup l���&�������"�����(ye(listRefee������������������������������������������������DFCC4D|�,j%�^���L��&��%��gSGchange the end date on a run, this requires the semaphore since the runN�J���8����Z����S3list could try to access the info at the same time.���$���������������1@relockD����������������000100���� ��������EMakSstartze�(��������������� @Run_Critical_Begin>�����������r������ ����r�����Sunlock���(�������r�����@@�@�������Bd�"�������r�����@relocki>@����"�������r�����@�@���������"�������r�����@�@���������"�������r���@�4@����������������r�����@���"�������r�����@relock�>@����������r����@�����������r�>4���"�������r�����S change var8���^���L����r�@���@����>@��������#@ NewEndDateN�@�@��������@�@�����������"�������r�����@�5@������ra���������r����������� ����r��� Srelock��"�������r�����@@relock�����"�������r�����@�@���������"�������r�����@�@���������"�������r�����@�4@����������������r����A@�����������r����������� ����r����Sunlock���&�������r����� @Run_Critical_End�����������r��������,�������r����Supdate end date field���V���D����r����� @Simulation_Date_Convert> @Info_v_EndYeare�>@������������������r��������(�������r�����Supdate toolbar ����.�������r�����@I#@Toolbar_ProcessID������������r�����������������������������������������������������������DFCC4D�t�q�T���B��������W�� InfoText_LinkDialog~�?�������~~�����~~����~~w������������������������DFCC4D��:i�^���L��%5��$5��gSGstart process to start GCM, this gets around the dialog locking problemN�,���������������^#�Setup_ProcessID�������������������M�$��������������S update window��(�������������� ^Safe_SaveSimulation����������������������2��� ��������Sstart process to run model�d���R�����������#^Setup_ProcessID�=�Setup_ExtendGCM�#� StackSize�� Setup_Process�����������������DFCC4D@u)X�N���<��%��$��gS7Create doesn't really create anymore but duplicates the�J���8��������S2first run in the database, this avoids the problem���B���0�����������S*where truly new runs are too hard to setup���T���B����l����S<has to wait for update so the duplicate code is called later������� ���������� S input�e�6���$���������� S (optional) called from button� ���� ����������S output�r���� ��������0001S none04�������������EMaker�4���"��������Sfind the first record by name�(�������������� �Run_Critical_Begin,���P���>������������found,@�#@RunNumberArray,�w�lSample_Control_Run����2��� �����������@@found�,@��������������P���>��������#@RunNumberArrayz�@�����������,w�lSample_Control_Run���.�����������#@RunNumberArrayz,@found�&����������� @Run_Critical_End��������������&�����������Schange records�6���$�������� @Run_Simulationz@�?���������6���$�����������SRunArray_ManageRundeckWindow(1)��������������\���J��������SEhack to change records and then duplicate, used when called from menu���.�����������@@�@��������������6���$��������#@Simulation_Button,@�@�������zz�2��� ������������@I#@Simulation_ProcessID(�������������������@������������������@���&��������������� @Run_Critical_End���B���0������������ @ Alert_Alert@�@���������@�@�����������L���:������������#@Simulation_Button,@������������� block next action������������������@����������DFCC4D7u�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q #@Setup_ProcessID�ns�����DFCC4DIu�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q= w�Setup_StartGCM�#@ StaDF#GRPEb��w)�I]���[��h�2c�L�C����������DFCC4DZ�.�KD�\���J�� �����7dCCreate a ssw stop gcm file if it doesn't already exist to pause the�op� ���������������7dmodel.�le�������������������� �������������7dvar�Z�>���,��������uler[%��@���������output_pathname�����&���������������[2�docref��on��������������$������������7d setup path���L���:��������[output_pathname � PM_FindFolder�� CurrentRun��`��������������2��� ������������7dtest that the run exists���@���.������������[��output_pathname���$��������d���R������������[output_pathname � PM_MakePath�output_pathname��� SSW.STOPGCM�������F���4���������l�o�7d,create the stop ssw file if it doesn't exist��or�@���.���������e�n[��output_pathname��~�$�����@�:���(������������[docref�� �output_pathname�����:���(������������[�output_pathname���R*ch������N���<������������[�g�docref�������no translation necessary���&���������������[ �docref���������������[[d�������������[[���������������������������������������������DFCC4Dzb�,w0�J���8�� �� �� �7d0load all the sundry parts of the infotext window����:���(����P�kZkZ]%��@�������� � thumbFolder����� ��������������]�i��h��������������[�T���B����������7d;explicitly define all the pictures in the compiled database����(��������on:4�7dsection images��t���b�����kZo{] �Pict1� �Pict2� �Pict3� �Pict4� �Pict5� �Pict6� �Pict7� �Pict8� �Pict9�����������kZkZ] �Pict10.� �Pict11.� �Pict12.� �Pict13.� �Pict14.� �Pict15.� �Pict16.� �Pict17.� �Pict18.� �Pict19.��nt�����������] �Pict20.� �Pict21.� �Pict22.� �Pict23.� �Pict24.� �Pict25.� �Pict26.� �Pict27.� �Pict28.� �Pict29.���������������] �Pict30.� �Pict31.� �Pict32.� �Pict33.� �Pict34.� �Pict35.� �Pict36.� �Pict37.� �Pict38.� �Pict39.�������������] �Pict40.� �Pict41.� �Pict42.� �Pict43.� �Pict44.� �Pict45.� �Pict46.� �Pict47.� �Pict48.� �Pict49.��������������] �Pict50.� �Pict51.� �Pict52.� �Pict53.� �Pict54.� �Pict55.� �Pict56.� �Pict57.� �Pict58.� �Pict59.���������������] �Pict60.� �Pict61.� �Pict62.� �Pict63.� �Pict64.� �Pict65.� �Pict66.� �Pict67.� �Pict68.� �Pict69.��������������] �Pict70.� �Pict71.� �Pict72.� �Pict73.� �Pict74.� �Pict75.� �Pict76.� �Pict77.� �Pict78.� �Pict79.�����&����������] �Pict80.�����������kZo{���$��������o{kZ�7d setup paths����D���2�����o{kZ ] thumbFolder. � PM_FindFolder��Images�������������kZkZ�[�*���������7dsetup arrays .��(��������kZkZ] �TextPictT����>���,��������]�i���?����������@������������L���:����������� ]ItemPictI�i..�0��Pict��.��� �i���`�P���>�������� ] ItemPictLabel�i..�0��Title�.��� �i�����������������)))%]]���8���&���������7dsetup list of pointers to text�����>���,������������ ]ItemTextI������������..�� �������>���,������������ ]ItemTextI��?�������..���������>���,������������ ]ItemTextI��@��������..���������>���,����������� ]ItemTextI��@��������..���������>���,�����e ]ItemTextI��@�������..���������>���,�����\ ]ItemTextI��@�������..�� �������>���,�����on:4 ]ItemTextI��@�������..�� �������>���,������� ]ItemTextI��@�������..�� �������>���,�����*} ]ItemTextI��@�������..�� �������>���,��������� ]ItemTextI��@�������..�� �������>���,������� ]ItemTextI��@�������..���������>���,������� ]ItemTextI��@�������..���������>���,������l�t ]ItemTextI��@�������..���������>���,������� ]ItemTextI��@�������..���������>���,������n�i ]ItemTextI��@�������..���������>���,���������l�t ]ItemTextI��@�������..���������>���,������������ ]ItemTextI��@�������..���������>���,���������� ]ItemTextI��@�������..���������>���,��������MUTX ]ItemTextI��@�������..���������>���,���������c�t ]ItemTextI��@�������..���������>���,������������ ]ItemTextI��@�������..���������\���J�������� ]ItemListI������������..������������wset abstract to text�w���������������w�H���6������������7d/load first record to set everything up for real����*�������������� ]InfoText_LoadRecord]he��������j��Z��]7d������������������������������������DFCC4D<�@�H�.������������d�d Caps project method����4���"���������d�d Caps ( String ) -> String\�J���8���������d�d0 Caps ( Any text or string ) -> Capitalized text���&������������d�d ��� ��(������������d�dlen� ���2��� ���������d�dlen�ll�����������J���8���������d�d ��!�?�������"�  ��!�?�������"�2��� ���������d�dlen�ll?��������6���$���������d�dii?�������len�L���:���������d�d ��!i�ii?�������"�i�Z$��*`�6���$���������d�d ��!i"�  ��!i"�������������d�d���������������d�dv�������������d�d���������������d�d��������������������������DFCC4D �N���<��'��&��b$6Allow a user to delete an existing run and start over. ��������������������������������b$var���<���*��������% @�@��������@output_pathname�������������� ADO� �"�����������b$ setup pathP�2��� �������� @output_pathname @Run_PathR ��������������kToo�0�����������b$test that the run exists�D��D���2��������kZo{@ @ @output_pathname��8@������������kZ�H���6������������ @Alert_ParamText @�����w���w���w������B���0��������TAT @ Alert_Alert @�@���������@�@��������ch�0����������� ?? @ @OKM�8@�?��������8 �>���,�������� @PM_RecursiveDelete @output_pathname��L���:��������@output_pathname @ PM_UpOneLevel @output_pathname��L���:��������@errCode@.� @output_pathname�@���������������� �������� @Sim_PlayS������������@���������������@������ �������� @Sim_PlayS������������@�������������� ����DFCC4DF�1�H���6��'A��&A��gS0configure the info text window when it is loaded�DO�2��� �����������@i�@j�@k�@len��M�,��������������@ @LoadedLinksVers��"�����������@ @zzTop�����������������������*��������������� @ Text Counte^@�������.���������������#@EJournal_Countz^@�������|���j��������0001 @Retrieve_Variable_Blob^^@�����^ @ItemVersI�^ @ItemListI�^ @ItemNameI�^ @ ItemCaption�28�������������� @Retrieve_Variable_Blob^^@�����^ @LoadedLinksVers�^ @ LinksList�^ @ LinksListType�^ @LinksListFields�^ @ LinksListWord��m�`���N��������aaaa@ @LoadedLinksVers��� @CurrentLinksVers�wO8mismatched links version^�(��������������� @InfoText_LinkClear^������������������@���:���(��������*d@ @ItemVersI� @CurrentItemVers����$���������������S load labels ��.�����������@��� @InfoText_UpdateFigLabels �$���������������S load images w �<���*������������@@i�@�?��������@�@�����������>���,��������� @ @ItemListI�@i�^@���������������B���0�����������@@j�@�?�������� @ItemListI�@i���L���:��������D@k^@i�^`@�?���������@�@��������^�@j�0��������������� @InfoText_LoadThumb^@k�������������������@�����������������@w ����������������@O�������������� ���*���������������Sshow/hide interface���<���*������������@@i�@�?��������@�@�����������2��� ������������@@i�^#@EJournal_Count^����>���,������������ @InfoText_ShowHide@i�@�@���������������������������@���>���,��������� @InfoText_ShowHide@i�@�?�������������������������@�����������������@���������������������X���F������������S@go to top of form and put cursor at the end of the eJournal name����<���*������������@len^@�@������^�@�?����������2��� ������������@�@�����@len�@len�������������������@���.���������������Sthis is bad, very bad ������������������@�������������������@�������������������@�����������������@#������������������@������������������������������������DFCC4DXy� O�b���P��&j��%j��gSKhandle events for lock button, locks/unlocks record, locks/unlock interfaceum�h���V����.�>��SQincludes special hack for the sample_control_run to prevent it from being changedd���� ���������S input���J���8����O����S2 change_lock (optional default is to change lock)���������������scalli�.�������OJ����1 @��@ changeLockc��.���������������@@�^@���������������&���������������@ changeLockc^ @��H���������������@���&�������RB��� @ changeLockc^@�� �������������b�l@�L��������������� ��,������������b�lSset lock if requested��L���:��������0001@@ changeLockc���+@�m����@�������������16�6���$��������EMak@ @Simulation_UnbreakableLock��r��,���������������SAlert_Alert (1;72;2)^�����������������@���*�����������Rd@�m���^@�?����������&���������������@ changeLockc^@���������������@���@������������������@����������������������H���6��������>� S0update the state of the record (locked/unlocked)���6���$������������@ @Simulation_UnbreakableLock����:���(������������@[��w�lzLockInterface2�@��������������������@���:���(������������@[��w�lzLockInterface2�@��ra�,������������LSrun normal lock check���T���B������������@@�m����^@��������������+@ changeLockc���@������:���(������������@[��w�lzLockInterface�@�����4���"������������@���w�lzLockInterface�������������������@���:���(������������@[��w�lzLockInterface�@����������������� @������������������@����������������������*���������������Sunlock if requested���L���:������������@@ changeLockc���+@�m����wl@�@�������������*���������������@�m���^@�����������������������������@����������������������:���(������������S#change button graphic to match mode���,��������������� @Simulation_MatchStatus^��������������������DFCC4Df2��D�`���N�� b��b���7dGUAM_Encrypt converts a string into an encrypted blob using the built in�Pr�r���`������������7dQset of keys. The intention of this call is to encrypt passwords and other sensiti�7dvet�ro�d���R������������7dKcommands so that reading the database file or sniffing the network will not�es�0����������������7dreveal the information.���������������7d�x���� �����������kZo{�7d input�oc�(�����������kZkZ�7d ptr to string����J���8����������7d1 ptr to blob to use (local blobs are a bad idea)���� ����������������7d output����0�������������7d none (encrypted blob)��� �����������\- ������,���������������\- ����blobPtr����&������������\\�tmpBlob��re�6���$������������\%��@���������passStr�����&������������\passStr ��rd�$���������������\blobPtr �����������������k�2��� �������������7dcopy to blob and encrypt�����j���X��������\���passStr���������������T&make sure there is a string to encrypt��2��� ��������\�passStr��tmpBlob�����:���(��������ccc\�tmpBlob�#�UAM_PrivateKey@��j�h���V��������\.�tmpBlob��blobPtr����������������������������]�tmpBlob����� ���������������7ddebug!!��J���8���������7d1$passStr:=BLOB to text($tmpBlob;Pascal string ;0)�C�6���$��������\v'blank out the password blobv��8���&��������\^�blobPtr�����������������������������\\����������������������������������������������������DFCC4DF��^���L��'��&��b$FHand in the format you want and this converts the wacky model dates to V�V���D�����scalb$>wacky model style year strings, ex 1/1/1901 to JAN1901. Unused����� �����scalb$ Input:D:�8���&������������b$! format, 1 = 3 char month + year�?�$�������H����b$ date, date��� �������~�����b$ Output:��� �����������b$ string������������������������� �������� @���$�����������TAT @ @formatD� ���� �����TAT @3 @��MM�"����������� @3 @datea�p �0�����������TAT @% @�@��������@str�<s�.����������� @% @�@�������� @��� S�$�������l�0001@ @listRef�06�(�����������EMak@ @ listItemRef�4D���������8�aaaa����� ������������b$setup���"��������@formate @��� ���������������@datea @����2��� ��������0001@listRef@ w�Months���������������EMak @�&�����������TAT b$create date str ������������ @06�4���"��������@ @format��8@�?���������N���<�����������@z @listRef�@� @dateR��@ listItemRef�@str��<���*�����������@str@str��@�  @� @dateI����������������@����������������� �����������b$cleanup��$�����������@y @listRef����� �������� @��@strFyFFlistRefDFl��F�����d F��FFstrFTH������������������������DFCC4D-Y�1�"U�X���F������������8?This converts names into types and modifies the incoming names � �Z���H������������8Ato exists without their types. WARNING incoming data is modified �C�T���B�������������8;by this meathod. The way of converting a name to a type is �i�P���>�������������861, last five characters of the name, eg snowball.jpeg � C�N���<��������ff�852, last four characters of the name, eg snowball.jpg ����L���:�������������833, last three characters of the name, eg source.cc �)�F���4�������������8,4, last character of the name, eg rundeck.R \�C�J���8�������������815, internal type of the file (Mac type), eg TEXT ������������������8 ��=�X���F�������������8>WARNING type mapping from Win to Mac is not implimented yet!! ,�de�����������������8 ��;� ����������������8 input ��8���&�������������8 ptr to a list of file names �s �������������������"����������������8 output l�ng�8���&�������������8 ptr to a list of file types ���J���8�������������80 ptr to a list of file names has been changed! �D�d���R�������������- ��� �� �� ��� filenamesPtri� folderPtr� folderPathPtr��H���6����������������@������� � Filetypes������������er�B���0��������������count�i�len�len1t�j��(����������������1� foundType��:���(�������������%��@�������� folderPathfC�8���&�������������%��@��������filename$hi�*���������������� filenamesPtri ������&���������������� folderPtr ����*���������������� folderPathPtr ��� �^���L������������� folderPathf � PM_MakePath� folderPathPtr� folderPtr����������������������4���"�������������8reset the Filetypes array ��>�8���&�������������count�� filenamesPtriou�(�����������������Y � Filetypes�H���6����������������@������� � Filetypes������������ld�B���0�������������� � Filetypes��?��������count�����������������me�2��� �������������8loop over the filenames ��na�8���&��������������i��?��������count���&���������������� foundType���������������������(����������������8get string len ��>���,�������������len��� filenamesPtri�i���2��� ��������������len�@��?����������6���$�������������len1�len�@��@����������4���"��������������len1�@��?����������,����������������len1��?��������ZZ���������������������<���*�������������filename$� filenamesPtri�i��������������������*����������������8check for ending �@�V���D��������������j�len�@��?��������len1��@��?��������8���&��������������filename$!�j"�@\�.���t���b������������ � Filetypes�i�� � filenamesPtri�i�j��@��?���������@�������fo�h���V������������� filenamesPtri�i��� filenamesPtri�i�j��@����������(����������������j���������������&���������������� foundType���Pt������������������ge���������������������8���&�������������8get Mac type if all else fails ����.����������������� foundType�@�����t���b������������ � Filetypes�i� � PM_MakePath� folderPathf� filenamesPtri�i��ؐ������������������ p������������������um�<���*�������������8"what to do with 1 char filenames? ��������������������������������������������������������������"����������������8cleanup l�ab�(��������������� ��� � Filetypes�����������������������DFCC4D)�@yo�(�����'+��&+��gSbreaks a scenarioTX������������������(��������������[@�����@�����H���6����������� @Alert_ParamText@�����w�l�>�w�l�>�w�l�>����Z���H������������@ @ Alert_Alert@�@���������@�@���������@�?�����������������������������(���������������Schange to normal���� ���������������@����>@���� �����������O@����>@�]�6���$���������@�m���>@������������� unlockNG�2��� �������� @Simulation_LockUnlock@��������������������&������������Ssave and notify���*������������ @Simulation_SaveRecord���,������������@I�>`@�?����������:���(��������#@RunListReinitToolbar8>@�?����������.������������@I#@Toolbar_ProcessID������������� @���������������@������DFCC4DP�6��4���"��'+��&+��gSlift characters off the page������������������R���@��������S;This makes a run into a scenario. Actually this marks a run���N���<����6����S6as a master scenario from which scenarios can be made.0�V���D�����������S>Locked runs can be turned into scenarios, and master scenarios�`���N���������� SHbecome locked runs by default. The special lock code came from ExtendRun�`��������������e�l� �$������������� �3@runDate�� �"������������i�t@1@valid���������������000100�J���8��������EMakS3check that the run is not already a master scenarioie� ���������������@@��������H���6��������Td @Alert_ParamText@�����w�l�>�w�l�>�w�l�>����B���0������������ @ Alert_Alert@�?��������@�@����������������������@���@���@���.������������S)validate rundeck before creating scenario���,���������������@ @Rundeck_Validate�O(�������������� ���*��������������Schange to scenario��� ������������@����>@��� ��������d@����>@�}�$������������@����>@����������������������� ���������Slock>���2��� ���������@@�m����>@�?�����������2��� ������L @Simulation_LockUnlock@���������������@���2��� ��������� @Simulation_LockUnlock@�����������������@���������������������� ���������Ssave>���*��������� @Simulation_SaveRecord���������������������� ��������Supdates���,��������������@I�>`@�?�����������:���(�����������#@RunListReinitToolbar8>@�?����������.���������������@I#@Toolbar_ProcessID���������������@������������@����������������������DFCC4D*c�f���T�� �����7dMCreate a public and private key for encrypted communication between databases����:���(�����������[\� BPublicKeyB�� BPrivateKey��������������������:���(���������h[� BPrivateKey�� BPublicKeyB�� l�>���,�����������[�� PublicKey.txt�� BPublicKeyB�����:���(������������[�� PublicKey.txt���R*ch������@���.������������[��PrivateKey.txt �� BPrivateKey��11�<���*������������[��PrivateKey.txt ���R*ch���lu������������������������������������������������������������DFCC4Dx���,�������������"0 PAUSE_PROCESS () ^"`��������Rd@��2"0 "���D���2��������;�P"0* Typically used as a close box procedure. �"0�F���4������������"0,Adds in support for proper record handling. z"������������(ip"�$�����������5 ��� ��  � ��������������D B  je� ���������������? B  ���������(K`���� �,�����������"0 End of procedure.^"��������������������DFCC4D/R�B�b���P��'��&��b$JThis is an alternate way of starting cleanup if it is used as a dialog boxum�b���P��������b$Kinstead of standalone. The dialog box version comes from the Sim Library so���f���T�����scalb$Nit handles multiple runs instead of a single run. This code must resepect the ���B���0����l�scalb$*current selection used by the Sim Library.R������������������b$������� �����������b$ input���� ��������TAT b$ noneMM���� ��������90 b$ output:0���� ������������b$ none���@���.��������TAT � @top�@left��@bottomD�@right�un�������������90 ??� ����������� b$do setupte�.�����������0.01 @ Cleanup_Setup $@�"��.5��������������,�����������RRRb$setup dialog and show���F���4�����������@top @��P@�@���������@�?��������H���6��������@left� @��P@�@���������@�?��������6���$�����������@bottom�@top��@�@�������R�6���$��������@right@leftt��@�@��������d���R��������)� @myWind�@� @leftn�@top�@right�@bottom��$@�"��w�Cleanup����6���$��������@�( @��� ���w� Cleanup List����������������@������������������������� ������������b$cleanupde�(���������������@�Y @ CleanupRuns����"���������������@� @��� ���nd�"���������������@�/ @��� �����run folder exists�X��DFCC4Df_�2�L���:��'��&��b$4Calculate the size of various folders inside the run��P���>��������Sy��b$9The calculation is done by checking the size of the first'�R���@�����������b$;avalible file and assuming that that is the average size of���V���D�����������b$>files in the folder. This estimate should be accurate and much �T���B�����������b$=faster than the finder. The .DS_Store file is eliminated from�:���(������������b$#the list to make things work better��������������TAT b$�IM���� ��������92 b$ input:0�,����������� b$ string, folder path? ���� ��������0.01b$ outputp1�,�����������b$ string, folder size����������������.����������� @���@ FolderSizeF��>���,��������@% @�@�������� @��@ FolderPathF��F���4��������@� @�@��������@FileList$�@��������������,�����������@ @DS_StoreMustDie��&��������������@ FolderPathF @��0�����������@ FolderSizeF@���������������������������@���.�����������@ @ @ FolderPathF��8@���������������"�����������b$ get files J�6���$��������@ @ FolderPathF�@FileList$��,�����������b$delete DS_Store file�J���8��������@DS_StoreMustDie@� @FileList$�w� .DS_Store��<���*��������@ @DS_StoreMustDie�@�������������:���(�����������@� @FileList$�@DS_StoreMustDie��������������@�0�����������b$file size * # of files ��>���,������������@ @ @FileList$��@���������������������������..@�p���^������������@ FolderSizeF@ @ PM_MakePath @ FolderPathF�@FileList$�@�?��������@������H���6������������@ FolderSizeF@ FolderSizeF�@ @FileList$���������������@ ������������@ S��������������%@�&��������������� @��@ FolderSizeF���� ������H���6���������SDFCC4DIi�v@��V���D��'��&��b$?Basic cleanup "for dummies" that uses useful defaults to removeJ�Z���H�����������b$Bfolders that most users will not miss. Only the acc files are kept���T���B�����������b$<by the basic cleanup since thoses are the only files used by����&��������������b$Analyze Output.�����������������b$������� ��������TAT b$ inputMM���� ��������09 b$ none:0���� �������� b$ outputno���� �������� 1:0b$ nonell�,�����������29.8b$setup useful defaults46� ����������������� ��@�rS� ��������������@�� ��@���� ���������������@�� ��@���� ���������������@�� ��@�Te� ���������������@�� ��@� A�@���.������������@�� ��@�  @Years�@ @Years�����,��������������� @Years@ @Years����*���������������@� � ��@�?����������,��������������� @Subject@�?�������g �,��������������� @Keepers@�@����������*���������������@� � ��@�@�����������*���������������@� � ��@�@����������,��������������� @Months�@�@����������"�����������.@�5 @��� ���.��������������������&���������������b$do the cleanup$ar�,��������������� @Cleanup_Deletez ��s_��������������������������n�����@�����������n������*DFl��f�2��N�lose progress bar_�(�������n����@IDFl��o � ��n���������n����@��������n����@��DFl��P*�e����� /can't delete runs without a valid year orDFCC4DI[+��b���P��'��&��b$Jset permissions via dialog, the dialog is the same used for the SimLibraryum��������\�scalb$� n���� �����scalb$ inputD:���� ���������b$ none������ ���������b$ output������ �����scalb$ noneD:�f���T������� List_Permissions< 7@�!����7@�!����7@������ @eList_SortFieldPtr�b����������scaln�EEE @ Alert_Alert@�?��������@�@�������DFl��f~�w��5P�@�B���0����n� @ Alert_Alert@�DFl��V�~PH��= ������K��������n�@��������DFl��>�~PH��t�������������������������������������������DFCC4DP��pp�^���L��E��E���7dEThis returns a string from a list item. You probably want to use this����R���@������������7d9code when you want a string return instead of a procedure���� ���������������7dinput:���$�������������7d list item�ry� ���������������7doutput:���"����������������7d string��("������������������� ���������������[ ����+�(�����������ww[�listItem$���4�*������������[� listItemRef��B�:���(���������[%��@��������� listItemStr�����0�����������[%��@�������� ������������������������� ���������7dsetup����&��������������[listItem$ ���@�������������� ������������7dget it��{�X���F��������[z#� UAM_ListRef��listItem$�� listItemRef�� listItemStr�����(����������� [��� listItemStr�ؠ����������������������DFCC4D>�~PH�V���D��'��&��b$>Make sure that the fluxes used have at least one year selected�J���������b$������� ���������b$ input������ ���������b$ none������ ���������b$ output������ ����Ɯ�����b$ none����������"���������(�������\������ @�8$@������4���"���������@�� ��@�  @End� @End����*������������@ @End��$ @Start��"������������ @Start @End���4���"���������@�� ��@�  @End� @End����������������@����������^�����@�������������������DFCC4D�Uv�R���@��'��&��b$;Check that the start date is ok because fools are so cleverDE�R���@�����b$:If people pick a start date after the end date then fix it4������������� b$��`���� ���������b$ input������ ���������b$ none� ���� ���������b$ outputE���� ����\�����b$ none$��������"��������(�������Ɯ������ @�8$@������8���&���������@�� ��@�  @Start� @Start����*������������@ @Start� @End��"������������ @End @Start���8���&���������@�� ��@�  @Start� @Start����������������@b$���������@b$��@ pathToOpenp^ @ PM_MakePath@ pathToOpenp� @��@�DFl��k6h ���SA$pathToOpen:=go_back_one_level (go_baDFl��Rh ��@�e))+$1���������������L@�������������DFl��ro�;sj���������S:new 4D command to show a folder, DFl��2(� ���ode���2��� ������������@#@ PM_PlatformDFl��� ��S�������������@@ pathToOpenp�����DFl���s=��`��6���$��������� @@ pathToOpenp��DFl��T�s=�������������@������������������������������DFCC4DE��R���@��"R��!R��,�2:delete all the files in a folder, exceptions are supported�DE�<���*������������2%to preserve one month per year, & etc���� ������������2 input���4���"�������������2 folder to delete files from������ ���������e�t�2 keep?�e���� ���������e� �2 output�t�.�����������0001�2 failure if it happens00�������������EMaker�>���,������������^%��@�������� ���� FolderPathF����(������������ � ^1 ����Keep(���F���4�������^���@���������FileList$��������������� �.���������v�e^� FileListLen��i�� �&���������e�t^�FileYear$��e�$��������^�listRef��0��������^%��@����������Mon��0�����������^%��@���������Yr��,�����������^�DS_StoreMustDie��&�����������4th ^� keep_skip��)�&����������� ADO^ FolderPathF ��4D� �������������^Keep( ���m��������������D�S�_�0������������T�R�2month to keep & how often��2��� ���������D�S^listRef���Months��D�D���2���������K�e^Mon �GetListItemStrA�listRef��� � ����C�$�������������^y�listRef��e��������������^"d�2��� ����B����^�� � ������?����������.�������B����^ keep_skip��?�������M_�2��� ����B����^�� � ������@�����������.�������B����^ keep_skip��@��������2��� ����B����^�� � ������@���������nd�.�������B�^ keep_skip��@���������������B�^���������B�^�B���0����B��2*delete files if possible, leave exceptionson�@���.����B�^�� FolderPathF������������������"�������B��2 get files ��6���$����B�^� FolderPathF��FileList$���0�������B��2remove the .DS_Store file�J���8����B�^DS_StoreMustDie���FileList$��� .DS_Store��<���*����B�^�DS_StoreMustDie�!����������������:���(����B����^��FileList$��DS_StoreMustDie�����������B����^���6���$����B����^ FileListLen��FileList$���8���&����B�����2!remove files from the delete list5�<���*����B����^�i���?��������� FileListLen����,�������B�����2figure out the year ���V���D����B�����^Yr�� �FileList$��i���@����������@�����������8���&����B����^���Yr��!�������������5�.�������B����^FileYear$�� �Yr���H���6�������������21remove files from the list from the years to keep���.������������2either through or after�������������^�FileYear$�!��� ���� �� � ������?���������� h�FileYear$�+ $��� ���� �� � ������@������������R���@���������2;It's cheaper to relace the first char with a special marker�V���D���������2>than to delete lots of elements of an array out of order ��.�����������^FileList$��i��*������������^���D���2���������2-remove files for the right month and decade ��>��,��������^�Keep(�� ��b�FileYear$�� keep_skip����������������� �Mon!��?�������"���FileList$��i!��?�������"�� �Mon!��@��������"���FileList$��i!��@��������"�� �Mon!��@��������"���FileList$��i!��@��������"���.�����=�����^FileList$��i��*������������^�I���������^������������^��������������^�����������������$������������2 delete files��<���*��������^�i���?��������� FileListLen��6���$��������^�FileList$��i�h��*�S�V���D��������^� � PM_MakePath� FolderPathF��FileList$��i�����������������^��������������^�����������������^��������DFCC4Dp�M,�6���$��%n��$n��g�7��������Toobar�����H���6�����������S1does this help, makes the whole toolbar read only������ �����������^������"���������������^�/���� ������&�����������^�C�Toolbar�%�2��� ��������</re^#� PM_Platform� $����ke�*�����������striS$windowType:=-1987ag�:���(��������prin^ windowTypew�`$��"��`$��"� pp�b���P�������� <^��� MacOS X 10.3�#�PM_PlatformName��p�������������y@10.3ke�6���$������������^ windowTop�����@�������������������#^�b���P������������^��� MacOS X 10.2�#�PM_PlatformName��p�������������y@10.2)�6���$������������^ windowTop�����@��������&�����������)^Ap 10.4, 10.5??����6���$��������)^ windowTop�����@�������������������)^������������)^������������)^�:���(��������)S"$windowType:=-1987`Plain window �:���(��������_inf^ windowTypew�`$��"��`$��"� pr�.�����������trin^ windowTop��@�������/s������������/rea^ ��������������������&���������������Ssetup run list������ ������������ ^ Run_Init2����������������������2��� ������������Shack window to fix quit bug������������������^��`��@ @��������`��@ @��������`��@ ��������`��@ �������$��"���test�� Generic_Close�����������������������D���2������������S-mac only hack to create an always open window���&��������������� ^ToolbarLogo_Open����������������������$���������������S open toolbar���|���j������������SQOpen window(0;$windowTop;Toolbar_Width-3;Screen height-2;$windowType;"Toolbar";"SGeneric_Close")���&���������������^�C�Toolbar����>���,������������^<�About EdGCM 4D��AboutBox��������~������������^��������������� windowTop�#� Toolbar_Width�`��@������������`��@���������� windowTypew��Toolbar����N���<������������^��EdGCM ��#�VersionOfEdGCMA��� Toolbar�����2��� ������������ ^ ViewerNamei� View Tables���:���(������������#^RunListReinitToolbarL���������������0���������������^�(��������Toolbar���������������������������DFCC4D^�`�T���B���������8:Handle the ocean transports menu, remember that this menu ����b���P�������������8Inow represents folders not files. Need to load srcor value from file now ��������������������8���&���������%x��@�������x� srcorPathxx���:���(�������������%x��@�������x� srcor_valuexx���$���������������x�srcorxx��*����������������2x� docref_fullxx������������������x�����������������������*�����������p�x��x@$���xx�$����������������8 set record �{�>���,�����������������x � otsp_filestx � otsp_filestxx���@���.�����������������x � otsp_folderssx � otsp_filestxx��,��������������������x����������������(����������������8set srcor path �O�d���R������������� srcorPathx �FindOTSpecFolderxx�����xx�����x�x�@\� SRCOR.value\60�*���������������� srcor_valuex\��x\���$����������������8 read file T�ef�@���.�������������x�x� srcorPathx�x@��?�������xx��8���&������������� docref_fullx�x� srcorPathxx���2��� �������������x �OK��x@��?�������xx���L���:��������������hx� docref_fullx� srcor_valuex��Zx$���&xxx�*���������������� x� docref_fullxx���4���"�������������srcorx�� x� srcor_valuexx�4���"�������������x�srcor�x@������������xx�&��������������������x�srcor�O��������������������������������������������������������O�J���8������������ �Alert_ParamTextx�����x\��xx\��xx\��xxx�D���2������������ � Alert_Alertx��?�������x��@�������xxd������������������BT������������������ s�����������������5{��������������������������������������DFCC4D ��"�����'��&��b$ DEPRECIATEDrf�$��������������b$ open controlsEP�(����������� �Run_Critical_Begin���\���J�����scal� #@ControlRunNumberArray�wX$special spot to pass RunNumberArrayve�>���,����V�����#@ControlRunNumberArray#@RunNumberArray���&�������������� @Run_Critical_End<ha�������������M�n���\��������)))% @Generic_OpenReopen 7#@Control_ProcessID�w�Control Window�w�Control_Process���ss���� ���������@ @��ss�&��������DFl��vt�s=��Ԑ��ss�(������������@ @ listItemRefDFl��9x�s=��m�@% @�@�������� @���@�8���&����DFl��c{�s=��mP������@ listItemStr�e ������������DFl��c8�����b$setupe �"�������^�scal@listRef @DFl��5*���30�@listItem$ @�to����������������DFCC4D:�O�C �L���:��������Yd4setup everything for the User Authentication Manager|���\���J��C ���YdEonly one user can log in a time, but you can change users mid session��`���N_��YdI(though you will need to close windows). Some operations can also require33�b���P�����YdJan admin user to enter their password. If the only user in the database is���d���R����������YdLcalled Admin and has no password then run the database in password-less mode@���>���,������ Yd&where all authentications always pass.�o�.������ ���1#@UAM_UsePasswords<�(�&������ �%�U@1#@UAM_Auth��&���������F@1#@ UAM_Admin�i�6���$��������@%@�@�������#@UAM_User�(�����ntrolDae@#@ UAM_ListRef 0�4���"�� ?? S @1#@UAM_privateOneTimeAuth| S�,�������������@\#@UAM_PrivateKeyz���:���(��@#@UAM_Editor_NoPasswordWarning��������&�����Ydsetup databaseD�"�����@�/@������"�����@�2@��������������������&������������A @ KDM_RegisterM��������������������4���"���������Ydcheck for password-less model���:���(����������@@�S@�������X@�@�����������*�������������Ydpassword-less mode�H�>���,���������#@UAM_UsePasswords<|@��� no passwords@���<���*����������#@UAM_Auth|@��� is a user logged in���F���4����������#@UAM_User|w�AdminwXwho is the current user���B���0����������#@ UAM_Admin|@��� are they an administrator����������������@���$�������������Yd password mode���:���(����������#@UAM_UsePasswords<|@��� passwords���<���*����������#@UAM_Auth|@��� is a user logged in���B���0����������#@UAM_User|w��|wXwho is the current user���B���0����������#@ UAM_Admin|@��� are they an administrator����������������@������������������&�������������Ydsetup other var���T���B��#@UAM_privateOneTimeAuth||@��� one time admin authorization����V���D��#@ UAM_ListRef|@w� UAM_Messages|wXlist of UAM messages|���`���N�������%#@UAM_Editor_NoPasswordWarning|@������������� warning about no passwordQR������������������$�������������Yd load rsa keys���B���0����������@ w�PrivateKey.txt#@UAM_PrivateKeyz��������������������"�������������Yd cleanup db����"�������������@�@����������������������S load rsa keys���B���0������������@ w�lPrivateKey.txt�#@UAM_PrivateKeyz����������������"�����������S cleanup db8�"�����������@�@��������������������������������DFCC4DTP�^w� �����$}��#}��L UAM_Loginbp�x���f����������Qplaces up a login window and watches what happens. Unlike all other windows the l ogin window������n�����������Qis program modal and should block all other actions until the user completes it. Once this succedesn���z���h������������QUAM_User is set to the user and UAM_Auth is set to true and UAM_Admin is set t o if the user���P���>���������8is an admin. In password less mode this code is bypassedt��������������� ���� ��������� input����� ��������� none����� ������  output��L���:��������4 none (see the OK field and the <>UAM_Auth variable��������������,�����������^#�UAM_UsePasswords��6���$��������password mode, do login screen�������������^����P��@�����������@������������P��@�����������@���������������@�����������@���������������@�����������@���������$��"���>���,����������^� �UAM_GetListItem��@������������F���4��������#^ UAM_Message �UAM_GetListItem��@����������2��� ��������#^UAM_privateOneTimeAuth����.�����������^�(��������Login����������b����^����������b�^�,�������b�no password, no login�2��� ����b�#^UAM_privateOneTimeAuth�����������b�^������������������DFCC4D,�,�b���P��'��&��`DJCreate makeNetCDFjl.I file to convert slices into NetCDF form for Panoply.um�:���(�����������`D"This code builds on Jean's new PD.������������������`D������� �����������`D#file �.��������������`D#read by: makeNetCDFjl�����������������`D����0���������������`D#Example Order of inputs����D���2������������`D,B8x10_3pdC9 #run ID���T���B������������`D<JAN1902-1904.avgB8x10_3pdC9_LatByP #name of first acc file����H���6�����d`D0/u/cmrun/B8x10_3pdC9/ACC/ #input path����H���6���������`D1/u/cmrun/B8x10_3pdC9/ACC/ #output path���^���L�����@���`DGtftt #monthlies;quarters;seasons;annual���|���j������������`DQtttttttTTttttttttttttttttttttttttttttttttttttttttttttttTTTTTTTTTttttttttttttttttt`DTTTTttttttttttt������������������`D����|���j��������� `DQ.........1.........2.........3.........4.........5.........6.........7.........8.`D........9......��F���4�����������`D/#above is the variables to process from 1 to 96��"�����������D @diag@�e�6���$�����������@% @�@��������@ diag_path�����������������������*��������������`Dcreate the .I fileH���8���&������������@diag_@������@�Z $@��&����p���^����X�4@diag&@diag&��w�JAN��@�  @�������w�-��@�  @�������w�.avg���T���B����X�����@diag�@diag���@������w�_LatByP��@�Z $@��&��B���0����X�@���@ #@ PM_Platform�$@���wX Unix pathsT��x���f����X�����@diag@diag�� @PostProcessing_SubFolderPath w�average�@���X���@�Z $@��&����b���P����X�����@diag&@diag&�� @ PM_FindFolder w�slicesp��X���@�Z $@��&����"�������X�� @�� PC paths���r���`����X�����@diag&@diag&�� @PostProcessing_SubFolderPath w�average�@����@�Z $@��&����\���J����X�����@diag&@diag&�� @ PM_FindFolder w�slicesp���@�Z $@��&�����������X�����@�����������X��������8���&����X����A`D!monthlies;quarters;seasons;annual� �������X�����@ @������ �.�������X�����@diag�@diag���w�t����������X�����@���.�������X�����@diag�@diag���w�f����������X�����@��� �������X�����@ @��������.�������X�����@diag�@diag���w�t����������X�����@���.�������X�����@diag�@diag���w�f����������X�����@��� �������X�@ @������.�������X�@diag�@diag���w�t))��������X�@�.�������X�����@diag�@diag���w�f����������X�����@��� �������X�����@ @��������.�������X�����@diag�@diag���w�t����������X�����@���.�������X�����@diag�@diag���w�f����������X�����@���8���&����X�����@diag�@diag���@�Z $@��&������������X��������T���B����X�����`D=set the var, these should match those for the last processing���8���&����X�����@K @������w�oldAJLselection����8���&����X�����@ @������@�����@��������"�������X�����@�2 @���������,�������X�����@counter@��������������@���.����X�����@ @item��@�?��������@�@�����������"�������X�`D add value � �������X�@ @��������.�������X�@diag�@diag���w�t�:���(����X�@counter@counter��@�?���������������X�! @..�.�������X�@diag�@diag���w�f��������X���E@�&�������X��`Dadvance record�"�������X�T@�3 @��������������X�<@���8���&����X�l@diag�@diag���@�Z $@��&������������X����0�������X�֤`Drestore the old selection�.�������X�h@L w�oldAJLselection����������X�ڌ���,�������X�T`Dno geometry switch!!!�����������X�T���,�������X�<`Dwrite out the .I file���H���6����X�l@ diag_path @ PM_FindFolder w�DiagnosticsApps��N���<����X�OP@ docref_full@  @ diag_path��w�makeNetCDFjl.I����2��� ����X�Od@ #@ PM_Platform�$@���O�|���j����X�OD@�g @ docref_full�@� @� @diage�@�Z $@��&��@�Z @�@����������w�:�w�/�����������������@�:���(������������@�g @ docref_full�@ @diage��������������������@��(���������������@  @ docref_full����J���8�����������@ @ diag_path��w�makeNetCDFjl.I�w�R*ch��������������������.���������������`Dwrite out metadata file���\���J�������� @makeNetCDF_mdiz w�Vertical��w�makeNetCDFjl.I_mdi�@counter�����������������,�����������`Ddelete the stop file�R���@����*�����@ @ @ diag_path��w�makeNetCDFjl.stop��$@������@���.����*����@� @ diag_path��w�makeNetCDFjl.stop����������*����@�����������*�������*�������*�����`Drun the application���D���2����*����� @ PM_Launch @ diag_path��w� makeNetCDFjl������������*��������(�������*�����`Dstart timer here!������������DFCC4D[�7�J�`���N�������������8FAdd records to the database for files that are not already contained. ��L�L���:������������82Remove records in database where there is no file h��P���>����0�����87Each file is checked for type and against the database ��L� �������0������8 input ���*�������0������8 folder number ����0�������0������8 ptr to folder name ���.�������0������8 ptr to file names ����.�������0������8 ptr to folder path ����2��� ����0������ ��� folderNumbero�l���Z����0������- �� �� ��� folderPtr�filesPtr$� folderPathPtr� fileTypesPtri0�F���4����0�������cmCount� fileCount�fPosC�pos���J���8����0���������@�������� cmFilenames������������ a�>���,���������������cmRecordNumbers���������������*���������������� folderNumbero ������&���������������� folderPtr ������&����������������filesPtr$ �����*���������������� folderPathPtr ���B�����������������\�t���b������������� fileTypesPtri �CM_InputScanFilenameToType��filesPtr$� folderPtr� folderPathPtr������������������\�$���������������8 do queries �ef�B���0����������������� ����� ���@� folderNumberoD��@���.�������������U���� ����� ���@� folderPtrop�0����������������cmCount��L���� ����8���&������������� fileCount��filesPtr$������������������\�.����������������8scan for duplicates ����6���$��������������cmCount�@������������ ����������������\�(����������������8build and sort ����R���@���������������� ��� cmFilenames���� ���cmRecordNumbersrm�>���,��������������� cmFilenames�cmRecordNumbers���>���,���������������filesPtr$� fileTypesPtri���,����������������fPos��?���������������������������ct�^���L�������������8Escan both arrays, move the mark down as files are matched to records ����:���(��������������i��?��������cmCount..�T���B�������������pos���filesPtr$� cmFilenames�i�fPoslTT�2��� ��������������pos�@������������..�4���"�������������filesPtr$�pos\�:\ll�6���$�������������fPos�pos��@��?����������2��� ������������� cmFilenames�i\�:\pr�2��� ��������������fPos�@� fileCountrm�6���$�������������i�cmCount��@��?����������������������������������������������������������������P�����������������������������������(�&����������������8 add records �����<���*��������������i��?�������� fileCountg �:���(��������������filesPtr$�i�@\�:��$�����������������D���� �����.������������������ ��� folderNumbero����,������������������ ��� folderPtr���4���"��������������� ���filesPtr$�i�8���&��������������� ��� fileTypesPtri�i_�$�����������������5���� ��������������������������������������������������������2��� �������������8delete unmatched records ����:���(��������������i��?��������cmCount���:���(�������������� cmFilenames�i�@\�:���@���.������������������ ���cmRecordNumbers�i���$�����������������:���� ��wo��������������������������������������v����������������������������������������������DFCC4D�^w�<���*��$}��#}��L$Open list of web pages and view them����4���"����������^%��@���������webPath������������������������� ������������path���@���.��������^webPath � PM_FindFolder� eJournals�����������������������$�������� copy to list�&�����������^�Y � file_list���F���4��������^���@�������� � file_list����������������2��� ��������^�webPath� � file_list������������ ��F���4��������/dialog only shows if there are files to process�>���,��������^� � file_list����������������&�����������display dialogh��4���"��������^height������@��������ss������������^������@���������P��@�������������@���������P�height������@������������@�������������@�����������height�$��"� �� View Output�y@ Open a modal window��8���&����������^�(��������DiagnosticsList��S������������111^���������������� ����������� open file�0�������b����^ �OK���?�����������x���f����b�^�� � file_list� � file_list����@���������y@%check that they picked something real�^���L����b�^webPath � PM_MakePath�webPath� � file_list� � file_list�����P���>����b�^webPath � PM_MakePath�webPath�� index.htm���������������b��0�������b� ^ PM_WebLaunch_�webPath�������������^�(������������^������������^L�B���0�������� ^ Alert_Alert��?����������@��������������������^������������������������������������������������������DFCC4D}�{�@���.��$}��#}��L(Handle the menu in the SaveAs dialog, do�KO�R���@�����������:the new folder dialog if the user picks the last menu itemX���(�����������^ � OldMenuItem������������������������������^���(�����������^��$�������B���0���������*insert divider and "New Folder" menu items���@���.��������^� � ImageFoldersa� �ImageFoldersMenu��6���$��������^len� �ImageFoldersMenu��X���F��������^� �ImageFoldersMenu��len����?����������@����������J���8�������� ^ImageFoldersMenu��len����?��������-�T���B�������� ^ImageFoldersMenu��len����@��������� New Folder��6���$����������� ^ImageFoldersMenu��?��������0����������� ^ OldMenuItem��?����������(�����������^��$�����b���P��������Jif the last item in the menu is picked need to create a new folder instead���,�������b����of selecting the item���L���:����b�^ �ImageFoldersMenu�� �ImageFoldersMenu����������b�^������@���������P��@�������������@���������P��@�������������@������������@�������������@������������@��������$��'��� New Folder��y@ Open a modal window�:���(����b� ^ FolderTexto�Name of new folder:�0�������b� ^ Foldernameo�Untitled����<���*����b�^�(��������PastePICTNewFolder�������������)))%^����@���.��������^ �OK���?��������y@ add to menu�*��������������add new folder item��J���8�����������^� � ImageFoldersa���?����������?����������D���2�������� ^ ImageFoldersa���?������� � Foldernameo���*��������������^� � ImageFoldersa���"����������� reset menu�@���.��������^� � ImageFoldersa� �ImageFoldersMenu��6���$��������^len� �ImageFoldersMenu��X���F�������L^� �ImageFoldersMenu��len����?����������@���������LP�J���8�������� ^ImageFoldersMenu��len����?��������-���T���B��������� ^ImageFoldersMenu��len����@��������� New Folder����$�������� get back item�T���B������� ^ImageFoldersMenu�� �ImageFoldersMenu� � Foldernameo��y�H���6�����^Ap/restore old menu item if new folder is canceled�(�������� ^ Foldernameo��vi�6���$��������� ^ImageFoldersMenu � OldMenuItem����������|��^ N�������������^m�6���$�������� ^ OldMenuItem �ImageFoldersMenu�����������d^S��������DFCC4D0�j�:���(������������"0 open tables for post-processing "������t����ap���i Generic_OpenReopen???#PostProcessing_ProcessID@?x�PostProcessing Window?x�PostProcessing_Process??��������������������������������������������DFCC4DXrM�P���>���������d�d�7convert a 4D longint into a 4 digit integer for fortrance� ������������d�d� inputt�"������������d�d� longint� ������������d�d� output �"������������d�d� stringtyP� ������������d�d �d �$������������d�dyears�0������������d�d%%@������� ����2��� ���������d�d%%@�������str�4���"���������d�d%%@�������temp��"������������d�dyear� � ��������������d�dwr�2��� ���������d�d�convert longint to string�.������������d�dtempn� yearn���f���T���������d�dstr�Z$��*�@���������temp���ttemp��������������d�d � ������������d�dtreturn� � ������������d�d ��str�������������DFCC4Dn�(�b���P��&\��%\��gSKthis code takes in the field to sort and the name of the text to change theum�B���0��������S*sort order and undeline the collumn header������ �����������Sinput*�$�������H�0001S ->[db]field06�.�����������EMakS name of collumn headerta�L���:������������S4 optional (run anyway without requiring form event)-���������������000100�*�����������EMak�- @��@field_p� I�8���&������������@%@�@��������@ fieldName_s����"�����������aaaa@field_p- @���&���������������@ fieldName_s- @��������������������������������D@�B���0����v�dS+order based on what has been clicked on .�J���8����v�����@@�$@����x @�@�@�������������6���$����v�@���@�1@������@field_p���-����:���(����v�����@���w�l FieldLabel@�$@������X���F����v�����@���w�l FieldLabel_�-�@ fieldName_s�$@���-�$@������&�������v�>� Ssave sort info��4���"����v����� @eList_SortNamez-@ fieldName_s��4���"����v����� @eList_SortFieldPtr--@field_pP(��������v�����@��������������DFCC4D2%�>���,��'&��&&��gS&Setup cache manager and update caches, ��\���J��������1��SEshould work concurrently now through semaphores, now the process does��h���V�����������SPnot exit but is paused at the end of each loop so that it can be triggered again_���H���6�����������S1if it is useful for part of the program to do so.���������������������(���������������Ssetup process id����(�������p�0001# CM_ProcessIDMU@B07���������p�EMaker�N���<����p�����S6setup semphores, these are released by the subroutiens0���8���&����p�����S!$set:=Semaphore("$CM_OutputScan")���4���"����p�����@setU@�w�l $CM_InputScan����6���$����p�����@setU@�w�l$CM_ImagesScan������������p����ra���� ����p�����SinitU����� ����p�� @CM_Init�����������p�ͨ4���X���F����p�����S@loop over scans, since this code pauses at the end of every loop�4�H���6����p�@���S1you can reactivate the process to rerun the scans����������p�����@������ ����p�����Sscans�,�������p�� @#@CM_Priv_ScanInput����"�������p����� @ CM_InputScan_����������p�����@���.�������p�����@#@CM_Priv_ScanOutputU����&�������p�����SCM_OutputScan ���.�������p����A#@CM_Priv_ScanOutputUU@�����������p�����@���.�������p����@#@CM_Priv_ScanImagesU����"�������p����� @ CM_ImagesScan����������p�����@�����������p�������&�������p�����Sflush and pause����������p�����@)���*�������p�����@?#@ CM_ProcessIDM����8���&����p����� @@�?��������@�@�������������DFCC4D �+rZ�X���F��'��&��b$AOpen the cleanup window iff you are an admin. Normal users cannotLP�8���&��������^��b$ use cleanup and will be blocked.'���������������b$������� ������������b$ input������ ��������b$ none�M���� ��������TAT b$ outputMM���� ��������09 b$ none:0��������������������4���"����������b$you must be an admin to enter���,�������:�TAT  @UAM_Authenticate<�? ���������:�09 ??�T���B����:� b$<mark all tables as read only, then set one table as readable� ���� ����:� 1:0@� ��ll���������:�������� �������:�����b$do setup���.�������:����� @ Cleanup_Setup $@�"� ������������:��������(�������:�����b$setup the windowz���&�������:�����@�C w�Default����8���&����:�����@�7 @��� ���w�Clean up��������������:����� @myWind�@� #@ Toolbar_Width�@�@���������P@�?���������P@�?��������$@�"� �w�Cleanup�w� Cleanup_Close������������:�������� ����:�����@F @B����$�������:�����@ @myWind�������������:���������������:�����@���"�������:�����@�9 @��� ������0�������:����� @ @OK �8@���������������"�������:�����@�5 @��� ��������������:���������������:�����@�����������:��������6���$����:�����#@Cleanup_ProcessID@�������������eList$��DS_StoreMustDie����������DFCC4DC��R���@��'��&��b$;Show all the eJournals if some have been hidden by a searchDE���������scalb$�dG���� ����Ɯ�cb$ input������ ����"�scalb$ noneD:���� ����\�scalb$ outputD:���� �����scalb$ nonest�"��������������/ @���������2��� ���������@�1 @������@�������d ����^��������������^����������������&����������� ^��� FolderSizeF�����������DFCC4De\�d�,�����"��!��,�7dUAM_PasswordKeydowns���r���`����D�����7dQgeneric code to handle password field you need to set vActualValue to the passwor�7dd and���z���h��������D��7dQvPswd to a string of # equal to the length of the password plus vlastPosition to �7d the length of���"���������������7d the string.�������������������������������]���(������������P�o]���$������D���2������������]� tempStringt� �vPswd� � vActualValuec��*�����������] � vlastPosition���(���������������] tempStringt����!!�\���J�������� ]vPswd����5 The user will only see the content of this variable.�Z���H�������� ] vActualValuec����* The actual text value that user typed in.��2��� ��������ccc ] vlastPosition������������c�(�����������]���$�����&�������:����] tempStringt���B���0��������]��� tempStringt�� � vlastPosition��:���(�������� ] vlastPosition��� tempStringt��"����������� ]vPswd�����>���,��������]�i���?�������� � vlastPosition��^���L�������� ]vPswd �vPswd����+probably want to make a platform check here������������]�:���(��������????] � vlastPosition���?����������l���Z��������)�] tempStringt��� tempStringt���?�������� � vlastPosition�����?��������))������������]U�F���4�������� ] vActualValuec � vActualValuec��� tempStringt��(��������������]wclear on delete2@�"����������� ]vPswd������*����������� ] vActualValuec����Th�2��� �������� ] vlastPosition������������e ������������]v������������111]DFCC4D]�r�B���0��&\��%\��gS*add to or subtract from the list of imagespt���� ������S input���*���������S number of section���8���&������������S! add or subtract (true or false)���:���(����^����� @��@num�@oldCount$�@k����*�����������TAT @1 @��@addsubn� ?���� �����������@num~ @��"�����������0001@addsub�~ @�00�������������EMaker�"������������� @@addsub������� ����������Sadd ��@���.���������� @ @ItemListI�@num�wl@�?���������f�.�������������@oldCount$~@������������ �8���&��������aaaa @ItemListI�@num~@�?�������||����������������@���@���.������������@ @ItemListI�@num�wl@�@�����������6���$������������@oldCount$~ @ItemListI�@num���R���@������������ @ItemListI�@num~ @ItemListI�@num�~�@�?������������������������@���.�������������@oldCount$~@�@�������������������������@�����������������@���"��������������S subtract 8���@���.�����L4@ @ItemListI�@num�~@�?�����������R���@��������� @ItemListI�@num~ @ItemListI�@num�~`@�?������� ���������@���@���������������@�������������������@���.�����>� @InfoText_ShowHide@num�@�?��������������������������>���,���������S'load image another image has been added���L���:���������@@addsub����&@oldCount$�wl@�@������������`���N���������@k~@num�~`@�?���������@�@��������~� @ItemListI�@num���0�����������A @InfoText_LoadThumb~@k����������������@������������������0������������Sreset the figure captions���.����������� @InfoText_UpdateFigLabels������������������������������������DFCC4D�V�.�����&\��%\��gSopen up a progress bar����� ����������S input�{�2��� �����������S message for progress bar������ �����������S output�J���8��������0001S2 progress bar process (use call process to close)00�.�����������EMak<%@�@�������� @��ta���� ������������@ @������"���������������@@proc������������������������*���������������#@ProgressMessage^ @���`���N�����������@procr^@=w�lProgress_Process�#@ StackSize�w�lProgress_Process���� ��������������� @��^@prockpl�������������� ����������������������������������������������������DFCC4D }�b���P��'��&��b$K Typically used as a close box procedure. This code hides the windows ownedum�b���P�����scalb$Kby a process and the pauses the process. It is important to remember that a1�h���V����*��� b$Ppaused process can still hold on to a record in the database and prevent another�g�F���4������� b$.process from modifying or deleting the record.$�l���������scalb$�dG���� ���������b$ inputup�`���N���������b$H optional process to effect, if nothing is passed uses current process������ ����\�����b$ outputnt���� ����"�����b$ noneti�,�������Ɯ����� @��@ processID����������������.������������@ @�8@�?�����������$������������@ processID @����&������������@D @ processID�ta�&��������scal@? @ processID�at���������scal@b$���� �����scal@D @B� d���� ����������@? @B� b��������4����@�������������� �������ra��������������������:���(��������>� DFCC4D8 }�T���B��'��&��b$<Close any window by finding it's process and then closing it�����������*�b$������� �������b$ input�o���� �����scalb$ nonero���� ���������b$ outputss���� ���������b$ none��"�������\������ @wind����(�������"�����@ @ windProcess�����������Ɯ�����@� ������������@windP@��2��� ���������@ @windP�@���������������2��� ���������@ windProcess@ @windP����8���&���������@ @ windProcess�@���������������4���"������� @ Generic_Close @ windProcess��d���������@b$��������^���@b$������������������������������������������������������DFCC4Dn��F���4����Œ����F-Convert an array to a tab delinated text var ��� ���������������F input ��(�������(����F ptr to array ���.�����������F string, array name ���(�����������F array level �"�����������F output l�;� ���������������F text ��.�����������}- �arrayPtr@���>���,�������� $%�@������� � xml_array���.����������� � xml_level���B���0������������ ��texttempxml_name@�I�2��� ������������ilentypeߠ�&�����������|varrayPtr@ ����&�����������v� xml_array ����&������������d xml_level ���������������������(�����������$DOFget array len 0�2��� ��������lenarrayPtr@������������k�(��������������Fget array type ���4���"������������type'arrayPtr@[����������������߀�$���������������F start xml \;�`���N������������text XML_TagBegin� xml_array xml_level��@�Z$��&��@���.������������ xml_level xml_level��@�?��������������������������@���.������������F'convert elements to text based on type �6���$������������i�?�������len�������������������.���������������type:�@$�����0���������������arrayPtr@i��(���������������tempY�pTrueY�������������������(���������������tempY�pFalseY�������������������,���������������xml_name@Y�pboolY���N���<������������type:�@$��� @typep�@$�����<���*������������temp� arrayPtr@iߴ�*���������������xml_name@Y�pintY���.���������������type:�@$�����<���*������������temp� arrayPtr@i[�,���������������xml_name@Y�prealY���N���<������������type:�@$��� @typep�@$�����4���"������������temparrayPtr@iv�.���������������xml_name@Y�pstringPY�������������������<���*������������temp� arrayPtr@i�������������������<����������������texttext��@ XML_TagBegin�xml_name@ xml_level��@templ��@ XML_TagEnd�xml_name@���������������������������������������������� ���������������Freturn ��@���.������������ xml_level xml_level�@�?���������V���D������������texttext��@ XML_TagEnd� xml_array xml_level�"��������������� ��text����DFCC4D_r�, �>���,��'&��&&��gS&code to enable buttons in toolbar, all ��D���2�����(S,work is done here or in procedures from here�������������������T���B���������S<make sure that the toolbar info section is saved and blanked����4���"����ȶ����� Info_iPhoto_UpdateInfoc@�����6���$����\�����Sdo buttons pressed from toolbar���������������@� �F���4����ļ�����@#@InfoPict_Button�@�?��������wO8prevc���@���.��������� @Info_iPhoto_LoadThumb�c`@�?�����������F���4����\�����@#@InfoPict_Button�@�@���������wO8next ���<���*����@����� @Info_iPhoto_LoadThumb@�?�����������F���4����p�����@#@InfoPict_Button�@�@���������wO8first���@���.����`����� @Info_iPhoto_LoadThumb�c`@�@������������F���4������������@#@InfoPict_Button�@�@��������wO8lastc���<���*�������� @Info_iPhoto_LoadThumb@�@������������J���8�����TAT @#@InfoPict_Button�@�@��������wO8 import 6 �&��������TAT @Info_iPhoto_Sync �f���T���� �TAT @#@InfoPict_Button�@�@��������wO8$sort, update internal values as wellcc_�6���$����<�����@�1@��� ���#@ InfoPict_Ptrn�����\���J����J�����@foundc@� @IBC_SortI�#@DragTransferFilename;�@�?��������K�6���$����������Schange menu from external call���2��� ������������@@found�c@������������6��(�������������� @IBC_SortIc@found���������P�����@���@���.������������ @Info_iPhoto_LoadThumb�c`@�@������������F���4������������@#@InfoPict_Button�@�@��������wO8query���V���D������������@@��� ���@�� ���w�l@�c�#@ InfoPict_Ptrn��c�w�l@����2��� ����@�����@�1@��� ���@�� ����c����@���.��������d @Info_iPhoto_LoadThumb�c`@�@���������\O�f���T����(�����@#@InfoPict_Button�@�@��������wO8$view, update internal values as wellcaa�6���$�����������@#@ InfoPict_Ptrn��w�lAll����"������������@�/@��� �����>���,�����������@�1@��� ���@�� ����c�wO8reset??����������"�aaaa@�B���0������������@@��� ���@�� ���#@ InfoPict_Ptrn����>���,���������@�1@��� ���@�� ����c�wO8reset??�����������������@���6���$��������aaaaSchange menu from external call||�D���2������������@foundc@� @IBC_ViewI�#@ InfoPict_Ptrn�����2��� ��������0001@@found�c@������������00�(�����������EMak @IBC_ViewIc@found4D�.�����������TAT @IBC_SortIc@�?������� S������������S @ 0�@���.���������� @Info_iPhoto_LoadThumb�c`@�@���������� �H���6��������d@#@InfoPict_Button�@�@��������wO8delete���(��������������� @Info_iPhoto_Deletec���N���<��������@���@#@InfoPict_Button�@�@��������wO8 import imagec���(��������������� @Info_iPhoto_Importc��N���<������������@#@InfoPict_Button�@�@��������wO8 update menusc���*������������ @Toolbar_IBC_ViewBuild���.��������������� @IBC_SortIc@�?�����������������������@��4���"������������#@InfoPict_Buttonc@���������������������������������������������������DFCC4D%Dmv�2��� �������7dshow the progress window���&���������������[�winRef?��tu��������,�����[� ��������������[��?P��_D����~������������[winRef�?����������Progress��$��'��������@����������?P��@��������������@���������� i�4���"������������[�(���������Progress����&��������������[��winRef?��tu������������������������������������������DFCC4D-�,�e�h�h���V�� L�� L����8OCreate LatByLong.I file and the LatByLong.I Diag file to post process the maps ����b���P������������8IAdded support for stop files so that this script can run with makeNetCDF ��"���������������8 output l���F���4�������������8, boolean ,true if makeNetCDF should be run \���$��������������(e(diag�eeet�$���������������(e(diag2ee��8���&��������8���(%e(�@�������e( diag_pathee���*���������������(2e( docref_fullee��"���������������(e(poseeru�$���������������(e(itemeee;� ������������(1e (��ee t�������������ees�>���,����������8$check that there is something to do e����F���4���������(e(�����e @(�����e @(�����e @(����ee������ ��������� (��e(�(���������������((���� ��������� (��e(�(���D���2��������� ( Alert_Alerte(�@��������e(�@�������ee��������������((�<�������������([�2��� ����������8check for existing files �����v���������( diag_pathe ( PM_FindFoldere�� mapsee�e�@(�����e�@�� _�e�@(� e(����e�e�@�� -�e�@(� e(����ee���:���(���������(e(e( diag_pathe�e@$(��ee�b���P��������� (Alert_ParamTexte (PM_Namee( diag_pathe(�eee��eee��eee��eee[�D���2��������� ( Alert_Alerte(�@��������e(�@�������eeor�2��� ���������(e (OKE�e@(�?�������ee@���� ��������� (��e(�(���������������((p���� ��������� (��e(�(���������������((�������������((c�������������(k���� ���������(e (��ee���,�������������8create the .I file �>,����v���������(diag�e ( PM_FindFoldere�� acce�e�@�� JAN�e�@(� e(����e�e�@�� .acce�e�@(�����e�@(�Ze$(��&ee���J���8���������(diag&e(diag&�e�@( diag_path�e�@(�Ze$(��&eec�l���Z������������(diag&e(diag&�e�@(� e(�����e@(�����e�@(�?�������e�e�@(�Ze$(��&ee���d���R������������(diag&e(diag&�e�@e�Old�e�@(�Ze$(��&e�e�@��n�e�@(�Ze$(��&ee��b���P�������������8HMana2:Pascallion:EdGCM Folder:Output:MAC010aC9:acc:JAN1905.accMAC010aC9 f���j���X�������������8QMana2:Pascallion:EdGCM Folder:Output:MAC010aC9:postprocessed:MAC010aC9_IJ_1905-1 �s����� �������������85 n������� �������������8Old �������� �������������8n d�mR�����������������\�0���������������8write out the .I file ����J���8����ɲ���\( diag_pathe ( PM_FindFoldere�� DiagnosticsAppsee���L���:����ɲ�����( docref_fulle( e( diag_path�e�@e� LatByLong.Iee���4���"����ɲ����(�ge( docref_fulle(diageee�*�������ɲ����( e( docref_fulleed �H���6����ɲ����(e( diag_path�e�@e� LatByLong.Iee�R*cheee��������ɲ�ic��e\�F���4����ɲ�����8-create the .I Diag file and the .I Name file ����4���"����ɲ�����(diag_e(e(�@ @������ee;�4���"����ɲ�����(diag2e(e(�@ B������ee�2��� ����ɲ������8set intervals to average ��"�������ɲ�����(e(����ee��6���$����ɲ�����(diag�!e(�@�������"eee�Te��������ɲ�����((���6���$����ɲ�����(diag�!e(�@�������"eee�Fe��������ɲ�����((@�"���������������(e(����ee��6���$������������(diag�!e(�@�������"eee�Te������������������((���6���$������������(diag�!e(�@�������"eee�Fe����������������((�"���������������(e(����ee ��6���$������������(diag�!e(�@�������"eee�Te��������������((�6���$��������\(diag�!e(�@�������"eee�Fe��������������dGCM((���"��������(e(����ee�;�6���$�����(diag�!e(�@�������"eee�Te�������������((���6���$���������(diag�!e(�@�������"eee�Fe�����������_"$((���2��� �����3���8set variables to average � A�*�����������(pose(�@�������(���$�����������(�2e(�����eey �.�������������8add to .I Diag file e����D���2������V��(e(item�e(�?�������e(�Le(�����eee���"�����������(e(����ee�.������������(diag�!e(pos"eee�Te���������������((�.������������(diag�!e(pos"eee�Fe���������������((es�0��������ste��8add to .I Name file ����\���J�����J�(diag2e(diag2�e�@e�'�e�@(�����e�@e�',�e�@(�Ze$(��&ee�4���"�������E(e(item&�e@(�@�������ee�e�T���B����������8;add internal stuff to file for subsections of namelist �ce�L���:���������(e(�be(item�e(�@�������e�e@(�����������ee���|���j�����7f(diag2e(diag2�e�@(�Ze$(��&e�e�@�� ZNAMP�e�@(� e(item&�e�@(�?�������e�e�@e�= e����������������((M_�:���(��������ic��(diag2e(diag2�e�@e� e������������������((O����������������((BT����������������(\�(����������������8advance record �l�$��������������(�3e(�����eeer�B���0������������8(offset to the next char/line in .I Diag e��4���"�����������(pose(pos�e�@(�@��������(LO�L���:��������(e(�be(item�e(�@�������e�e@(�����������ee`�4���"��������(pose(pos�e�@(�@�������(����������������((�x�L���:������������(e(�be(item�e(�@�������e�e@(�����������ee���4���"������������(pose(pos�e�@(�@��������(������������������((�x����������������((�x����������������((d����������������(���*����������������8end .I Name file � �H���6������������(diag2e(diag2�e�@e� &END�e�@(�Ze$(��&ee��������������_%e-�6���$�������������8write out the .I Diag file Z��R���@������������( docref_fulle( e( diag_path�e�@e�LatByLong.I Diageee���4���"������������(�ge( docref_fulle(diageee+�*���������������( e( docref_fullee���N���<������������(e( diag_path�e�@e�LatByLong.I Diageee�R*cheee������������������e[�4���"��������4����8write out the .I Name file ����R���@������������( docref_fulle( e( diag_path�e�@e�LatByLong.I Nameeee���4���"������������(�ge( docref_fulle(diag2ee���*���������������( e( docref_fulleeys�N���<������������(e( diag_path�e�@e�LatByLong.I Nameeee�R*cheee������������������eu �F���4�������������8,copy over the land file from the run folder \������������������� (PM_CopyFortran�e(�@��������e���ee ( PM_FindFoldere�� CurrentRun8ee(�@�������e( diag_pathe(�@�������e(�ee������������������ (PM_CopyFortran�e(�@��������e���ee ( PM_FindFoldere�� CurrentRun8ee(�@�������e( diag_pathe(�@�������e(�ee����������������e[�8���&�������������8delete stop file if it exists ����R���@������������(e(e( diag_path�e�@e�LatByLong.stope�e@$(��ee���@���.������������(�e( diag_path�e�@e�LatByLong.stopee������������������((����������������(���.���������������8run the application e����^���L�����������(errCodee(.�e( diag_path�e�@e� LatByLong.appe(�����������ee�����������������e(�<���*������������8#wait for the application to finish ����"���������������(done�e(�(li���������������((d�0��������������(Ce(Be(�@�������ee���R���@��������{{(e(e( diag_path�e�@e�LatByLong.stope�e@$(��ee d�0���������������(Ce(Be(�����������ee��@���.������������(�e( diag_path�e�@e�LatByLong.stopee���"�����������ff(done_e(�(st������������(( �.��������������(ee("e�e@e(eee���"���������������(done_e(�( s���� ��������_"$ (��e(�(��������������3��((v�"��������������� (e(done_ee���0���������������(Ce(Be(�����������ee�����������������((c��������������������������������������DFCC4DV�j���������������av�(�������@����)~|�BustedP~~������������������������������������������DFCC4DE��0����� �����7dopen user editor window���l���Z�������� [Generic_OpenReopens}#� UAM_ProcessID��� UAM Window���UAM_Editor_Process(����������������DFCC4D��O�>���,������ Simulation_GroupChangeAllG ClosedGGG��������������G�������������������������?�??DFCC4D''��T���B��'A��&A��gS=launch a viewer application, you provide the application name���.��������������- @��@ prefPathPtr����<���*����r����@%@�@�������� @��@app_name$����6���$�����������@%@�@��������@ diag_path��&�����������0001@ prefPathPtr. @�00�$�����������EMak@app_name$. @�����������������������B���0�����������@@�@ prefPathPtr��.@�@������������B���0������������@,w�l_4D_OPTION_HIDE_CONSOLE�w�lFalse���J���8��������d@errCode.@.�@ prefPathPtr�@�����������������������������@ �F���4��������@���@ diag_path. @ PM_FindFolderw�l Applications.��������������������@��*���������������Srun the application�B���0��������� @,w�l_4D_OPTION_HIDE_CONSOLE�w�lFalse����V���D���������@errCode.@.�@ diag_path�.�@app_name$�@����������������������������@����������������������������������������������DFCC4DQ�1�"U�h���V������������8OThis code checks for invalid records in the CM_File database. A record becomes ��v���d������������8Qinvalid if it is no longer on disk. An invalid record is deleted. Maybe the user �8should ��r���`���������8Qbe warned about long descriptions? If a folder is renamed then all the records wi�8ll ���t���b���������8Qbe considered lost and deleted. This should use query destinations to speed thing�8s up �ic� ������������8 input �ds�@���.������������8& ptr to an array of folders in input ��<�F���4������������8- number to identify folder to check against ��4���"���������- ���imageFoldersPtrPt�.�����������RR� ��� folderNum���,����������� $�imageFoldersPtr ������&���������������� folderNum ���li������������������.�����������www�$���\�All���>���,���������������� ����� ���@� folderNum���$����������� ��$�����:���(��������RR���� ���imageFoldersPtr���0�����������wfN�$���\�Foundr$�>���,��������|v�U���� ����� ���@� folderNum���>���,��������v���z\�All\�Found\�Missing���@���.���������d���\�Missing�@������������os�(�����������������v\�Missing��$�����������$DO��B���� �� ������������������$�������������u\�Aller�&����������������u\�Found��(�����������������u\�Missing���$����������������$��� �������������������������DFCC4D K�Jjy�p���^��'��&��b$QExports a record to XML. Data from BLOBs and subrecords is converted into text thb$atpfn�p���^�����������b$Qcan be read back in later. First a normal export is done to XML. Then the extra db$ata3�t���b�����������b$Qis added into the XML by this code. This code should be run from the simulation pb$rocesse���Z���H������������b$Cright now since it assumes that some arrays loaded from BLOBs exist���r���`��������0001b$QThis version uses a path passed in instead of the normal kind, needed for multi-eb$xport00���� ��������EMakb$ inputr��6���$������������b$ path to location to save file���@���.���������y�T�% @�@�������� @��@ xml_file_path��L�2��� ���������l� @% @�@��������@path���d�&������������o�s@\ @settings$��s�8���&���������� @ @i�@len�@ currentRecord��d�,������������a�t@ @XML�@insertt���$������������a�g@2 @docReft���(������������y�T@ xml_file_path @����������������l� �V�4���"��������111@ currentRecord@� @��������������������������T���B���������� b$=the rundeck must be resaved to see the changes to the rundeck� �"������������a�t@����w����"������������a�g@�5 @��������,������������y�Tb$Safe_SaveSimulation �-��������������l� �V�:���(��������b$#added data from BLOBs and subtables�.�����������)))%@insert�@�Z $@��&�������������@insert�@insert��� @ XML_TagBeginL w�version�@�@�����������#@ XML_Version�� @ XML_TagEndM w�version�@����������������������������@�,�����������b$add User Preferences�z���h��������@insert�@insert��� @ XML_TagBeginL w�User Preferences�@�@�����������@�Z $@��&��N����������������@insert�@insert��� @ XML_TagBeginL w� GroupVers�@�@����������@�  #@CurrentGroupVers(��� @ XML_TagEndM w� GroupVers�@���������������t���b������������@insert�@insert��� @XML_ArrayToText 7 @ Group_State�w� Group_State�@�@�����������x���f������������@insert�@insert��� @XML_ArrayToText 7 @ Group_Visible�w� Group_Visible�@�@�����������d���R������������@insert�@insert��� @ XML_TagEndM w�User Preferences�@�@������������������������������� ���������������b$ add links���n���\������������@insert�@insert��� @ XML_TagBeginL w�Links�@�@�����������@�Z $@��&�������������������@insert�@insert��� @ XML_TagBeginL w� CurLinksVers�@�@����������@�  #@CurrentLinksVers(��� @ XML_TagEndM w� CurLinksVers�@���������������p���^������������@insert�@insert��� @XML_ArrayToText 7 @ LinksList�w� LinksList�@�@�����������x���f������������@insert�@insert��� @XML_ArrayToText 7 @ LinksListType�w� LinksListType�@�@�����������|���j������������@insert�@insert��� @XML_ArrayToText 7 @LinksListFieldt�w�LinksListField�@�@�����������x���f������������@insert�@insert��� @XML_ArrayToText 7 @ LinksListWord�w� LinksListWord�@�@�����������X���F������������@insert�@insert��� @ XML_TagEndM w�Links�@�@�������������������������������$���������������b$ add keywords���Z���H������������b$C$insert:=$insert+XML_TagBegin ("Keywords";3)+Char(Carriage return )���@���.������������b$)ALL SUBRECORDS([Model Variables]Keywords)���B���0������������b$*FIRST SUBRECORD([Model Variables]Keywords)R���P���>������������b$8$len:=Records in subselection([Model Variables]Keywords)���&���������������b$For ($i;1;$len)������n������������b$Q$insert:=$insert+XML_TagBegin ("string";4)+[Model Variables]Keywords'Keyword+XML_b$TagEnd ("string";0)���@���.������������b$)NEXT SUBRECORD([Model Variables]Keywords)��� ���������������b$End for ���B���0������������b$*$insert:=$insert+XML_TagEnd ("Keywords";3)R������������������������� ������������b$finish���R���@������������@insert�@insert��� @�@���������@�Z $@��%������������������������2��� ������������b$get settings file into blob���B���0������������@path% @ PM_FindFolder w� Applications����Z���H������������@pathi @ PM_MakePath @patha�w�XML Export Settings 3.0�@�����0���������������@  @patha�@settings$�����������������������$���������������b$ do the export���8���&������������@ @ xml_file_path�@settings$�����������������������.���������������b$if the record exported���0���������������@ @OKt�8@�?�����������(���������������b$get the XML filez���(���������������@path� @DocumentD���.���������������@docRefn@ @pathe����,���������������@len@ @docRef�����4���"������������@�h @docRef��@XML�@len�����������������������&���������������b$insert new info���:���(������������@pos@� w� </Rundeck>��@XML����<���*������������@XML@� @XML�@insert��@pos�������������������������� ������������b$cleanup���D���2������������@ @docRef��@������������@�?�����������,���������������@�g @docRef��@XML����$���������������@  @docRef�����.���������������@ @pathe�w�R*ch9�������������������@����������������������.���������������b$restore current record���4���"������������@� @������@ currentRecord�����������������������.���������������Srestore current record���4���"������������^��������� currentRecord���������������������������������������������������DFCC4D �s�)�f���T��'A��&A��gSOCreate tab delineated trend files to preview in PlotShop without already havingZ�p���^��������^��SQa run folder to place the files in. This is a special case of the general code siSnce���T���B�����������S<we need to launch PlotShop afterwards. Added support for EVA������� ��������0001S input00�^���L��������EMakSG # of trend to preview, the order is: CO2, CH4, N2O, CFC11, CFC12, S0X���������������������,�������������� @��@trendNum$��2��� �����������@@listRef�@listItem$����8���&���������p�u@%@�@��������@ trend_patht��d�$������������f�o@trendNum$. @��P���������������)����� ���������p�uSpath.��D���2���������f�o@ trend_patht. @ PM_FindFolderw�l TrendApps�������������:���(�����cccS#create files, the pause is includedc�T���B����� @ trendSetter_Iw�l�.�w�l�.�@��@�����.�w�l trends����������������$��������S get filename�:���(�����@listRef.@w�lPPMV58 Revisted��f���T�����@listItem$.@trendNum$�.`@�?���������@�@��������.�@�?��������"��������@#@Use_EVA��x���f�����@ trend_patht. @ PM_MakePath@ trend_patht� @GetListItemStr.@listRef�@listItem$��@���2��� ���������@#@ PM_Platform�$@������B���0��������� @PostProcessing_TypeViewEVA�@ trend_patht����������������@���P���>��������A @PostProcessing_TypeViewEVA�@ trend_patht�.�w�l.xls;�pl�������������@��������������@���2��� ���������@#@ PM_Platform�$@������6���$��������Sopen with Excel on Mac as well���b���P���������@ trend_patht.@ trend_patht�.� @GetListItemStr.@listRef�@listItem$����4���"���������@@ trend_patht�w�lTEXT;����4���"���������@@ trend_patht�w�lXCEL;����H���6���������@errCode.@.�@ trend_patht�@���������������:���(���������@�� !PC names are for excel files .xls���B���0���������@,w�l_4D_OPTION_HIDE_CONSOLE�w�lFalse����x���f���������@errCode.@.�)@ trend_patht�.� @GetListItemStr.@listRef�@listItem$��.�w�l.xls�i�������������@���������������@������������....���� ���������Scleanup���$���������������@y@listRef���������������������������������������������������������������DFCC4DR�,4!�p���^��%��$��gSQPath Manager equivlient of the FindFolder command in Folder.p that gets the path Stotfn�r���`��������SQa folder based on a constant passed in. In this case I use string constants so thSat it���p���^��������KSQis extensible. Also supports auto platform choices where the folders have differeSnt ���h���V����v����SQnames on Mac and PC. Also supports option * parameter to do Unix style paths. Thel�n���\���������SQUnix paths are assumed to come from the postprocessing folders inside ApplicationSs���n���\������������SQso that they all start with ../../ and don't work for folders inside ApplicationsS.���� ���������� S input�t�0������������d�eS string, folder constant�k�B���0��������0001S* * (optional), use Unix path char instead00���� ��������EMakS outputr��H���6������������S0 path to the folder including final \ or : or /����F���4������������%@�@�������� @�� @���@ kFolderConstF����(�����������@ kFolderConstF% @������������������N���<�����������@@�@�?��������wO8use platform specific paths����������������������������������@���h���V��������@@�@���������@�@��������wO8*internal paths used by path manager itself��r���`��������@@ kFolderConstF�w�l _AliasHack��wO81hack to set PC paths right using a special folder�P���>�������� @��% @ PM_MakePath#@PM_EdGCM�w�l Applications$�@�����D���2����� @��% @ PM_MakePath @���w�lAlias PC��@�������������X���F�����@@�@���������@�@���������wO8these are all global pathsd�H���6�����@@ kFolderConstF�w�lEdGCM�wO8 EdGCM folder$JJ�$��������111 @��%#@PM_EdGCM���F���4�����@@ kFolderConstF�w�lData�wO8 Data folder�H���6����� @��% @ PM_MakePath#@PM_EdGCM�w�lData]�@���J���8�����RRR@@ kFolderConstF�w�lOutput�wO8 Output folder��J���8�������� @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@���H���6�����@@ kFolderConstF�w�lInput�wO8 Input folder$�H���6�������� @��% @ PM_MakePath#@PM_EdGCM�w�lInput�@��RR�Z���H�����@@ kFolderConstF�w�lInput Forcings�wO8Input Forcings folder�R���@��������� @��% @ PM_MakePath#@PM_EdGCM�w�lInput Forcings�@����V���D�����@@ kFolderConstF�w�l Input Oceans$�wO8Input Oceans folder�P���>����� @��% @ PM_MakePath#@PM_EdGCM�w�l Input Oceans$�@�� �`���N����� @@ kFolderConstF�w�l Input Special�wO8Input Special Regions folderw �X���F������� @��% @ PM_MakePath#@PM_EdGCM�w�lInput Special Regions�@����h���V�������� @@ kFolderConstF�w�lInput Special Regions�wO8Input Special Regions folderw��X���F�������� @��% @ PM_MakePath#@PM_EdGCM�w�lInput Special Regions�@����J���8�����������@@ kFolderConstF�w�lImages�wO8 Images folderP�J���8���������� @��% @ PM_MakePath#@PM_EdGCM�w�lImages�@��X�V���D������������@@ kFolderConstF�w�l Applications$�wO8Applications folder���P���>������������ @��% @ PM_MakePath#@PM_EdGCM�w�l Applications$�@�����h���V��������@@ kFolderConstF�w�lDiagnosticsApps�wO8"Diagnostics folder in Applications@�P���>��������  @��% @ PM_MakePath#@PM_EdGCM�w�l Applications$�@���2��� ��������@#@ PM_Platform�$@������F���4��������� @��% @ PM_MakePath @���w�l Diagnostics�@��������������@ �H���6�������� @��% @ PM_MakePath @���w�l DiagnosticsPC�@������������������@���X���F������������@@ kFolderConstF�w�lOHTApps�wO8OHT folder in Applications����P���>������������ @��% @ PM_MakePath#@PM_EdGCM�w�l Applications$�@�����2��� ������������@#@ PM_Platform�$@������>���,������������ @��% @ PM_MakePath @���w�lOHT�@��������������������@���@���.������������ @��% @ PM_MakePath @���w�lOHTPC�@��������������������@���Z���H�����������@@ kFolderConstF�w�l TrendApps�wO8OHT folder in Applications�P�P���>����������� @��% @ PM_MakePath#@PM_EdGCM�w�l Applications$�@����2��� �����������@#@ PM_Platform�$@�����@���.������������ @��% @ PM_MakePath @���w�lTrend�@��������������������@���B���0������������ @��% @ PM_MakePath @���w�lTrendPC�@����������������@�n���\��������@@ kFolderConstF�w�lSpecialRegionsApp�wO8&Special Regions folder in Applications��P���>�������� @��% @ PM_MakePath#@PM_EdGCM�w�l Applications$�@���2��� ��������@#@ PM_Platform�$@����J���8�������� @��% @ PM_MakePath @���w�lSpecialRegions�@������������������@���L���:������������ @��% @ PM_MakePath @���w�lSpecialRegionsPC�@��������������������@���P���>������������@@ kFolderConstF�w�l eJournals�wO8eJournals folder$���P���>������������ @��% @ PM_MakePath#@PM_EdGCM�w�l Applications$�@�����D���2������������ @��% @ PM_MakePath @���w�l eJournals�@������������������������l���Z������������@@�?��������@�@���������wO8/these paths are all relative to the current run���^���L������������@@ kFolderConstF�w�l CurrentRun��wO8path to run folder in outputw���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@��������p������������@@ kFolderConstF�w�lCurRun�wO8Dcompadible version of run folder path that doesn't put on the last :$���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����D���2������������@@ kFolderConstF�w�lacc�wO8 acc folderd���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����>���,������������ @��% @ PM_MakePath @���w�lacc�@�����D���2������������@@ kFolderConstF�w�lrsf�wO8 rsf folderd���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����>���,������������ @��% @ PM_MakePath @���w�lrsf�@�����D���2������������@@ kFolderConstF�w�lprt�wO8 prt folderd���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����>���,������������ @��% @ PM_MakePath @���w�lprt�@�����H���6������������@@ kFolderConstF�w�locean�wO8 ocean folder$���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����@���.������������ @��% @ PM_MakePath @���w�locean�@�����T���B������������@@ kFolderConstF�w�l diagnostics�wO8diagnostics folder���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����T���B������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�����b���P������������@@ kFolderConstF�w�lpostprocessing�wO8postprocessing in diag folder���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����T���B������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�����J���8������������ @��% @ PM_MakePath @���w�lpostprocessing�@�����R���@������������@@ kFolderConstF�w�ltables�wO8tables in diag folder���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����T���B������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�����N���<������������ @��% @ PM_MakePath @���w�ltables_�$�@�����@�����P���>������������@@ kFolderConstF�w�lplots�wO8plots in diag folder$���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����T���B������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�����N���<������������ @��% @ PM_MakePath @���w�lplots_�$�@�����@�����N���<������������@@ kFolderConstF�w�lmaps�wO8maps in diag folder���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����T���B������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�����L���:������������ @��% @ PM_MakePath @���w�lmaps_�$�@�����@�����P���>������������@@ kFolderConstF�w�lslices�wO8maps in diag folder���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����T���B������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�����P���>������������ @��% @ PM_MakePath @���w�l vertical_�$�@�����@�����N���<������������@@ kFolderConstF�w�lzones�wO8maps in diag folder���J���8������������ @��% @ PM_MakePath#@PM_EdGCM�w�lOutput�@�����>���,������������ @��% @ PM_MakePath @���@�����@�����T���B������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�����N���<������������ @��% @ PM_MakePath @���w�lzonal_�$�@�����@�����^���L������������@@ kFolderConstF�w�l CurrentVolume�wO8name of the current volume����t���b������������ @��%@� #@PM_EdGCM�@�?��������@�#@ PM_PathChar�#@PM_EdGCM��%`@�?�����������@���.������������@�� 'the fallback is the EdGCM folder itself���$��������������� @��%#@PM_EdGCM������������������@���H���6������������@�� /use Unix paths, not all folders can be accessed�������������������������������������@���X���F������������@@�@���������@�@���������wO8these are all global pathsd���H���6������������@@ kFolderConstF�w�lEdGCM�wO8 EdGCM folder$���(��������������� @��%#@ PM_EdGCM_Unix���J���8������������@@ kFolderConstF�w�lOutput�wO8 Output folder���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������H���6������������@@ kFolderConstF�w�lInput�wO8 Input folder$���R���@������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lInput�@�������Z���H������������@@ kFolderConstF�w�lInput Forcings�wO8Input Forcings folder���\���J������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lInput Forcings�@�������V���D������������@@ kFolderConstF�w�l Input Oceans$�wO8Input Oceans folder���Z���H������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�l Input Oceans$�@�������`���N������������@@ kFolderConstF�w�l Input Special�wO8Input Special Regions folderw���b���P������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lInput Special Regions�@�������J���8������������@@ kFolderConstF�w�lImages�wO8 Images folder���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lImages�@�������~���l������������@@ kFolderConstF�w�l Applications$�wO8:Applications folder, special case closer to current folder��� ��������������� @��%w�l../���t���b������������@@ kFolderConstF�w�lDiagnosticsApps�wO8.Diagnostics folder might be the current folder`��� ��������������� @��%w�l./0���t���b������������@@ kFolderConstF�w�lOHTApps�wO86OHT folder in Applications might be the current folder��� ��������������� @��%w�l./0���P���>������������@@ kFolderConstF�w�l eJournals�wO8eJournals folder$���Z���H������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�l Applications$�@�������J���8������������ @��% @ PM_MakePath @���w�l eJournals�@��������������������������l���Z������������@@�?��������@�@���������wO8/these paths are all relative to the current run���^���L������������@@ kFolderConstF�w�l CurrentRun��wO8path to run folder in outputw���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������D���2������������@@ kFolderConstF�w�lacc�wO8 acc folderd���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������D���2������������ @��% @ PM_MakePath @���w�lacc�@�������D���2������������@@ kFolderConstF�w�lrsf�wO8 rsf folderd���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������D���2������������ @��% @ PM_MakePath @���w�lrsf�@�������D���2������������@@ kFolderConstF�w�lprt�wO8 prt folderd���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������D���2������������ @��% @ PM_MakePath @���w�lprt�@�������H���6������������@@ kFolderConstF�w�locean�wO8 ocean folder$���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������F���4������������ @��% @ PM_MakePath @���w�locean�@�������T���B������������@@ kFolderConstF�w�l diagnostics�wO8diagnostics folder���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������Z���H������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�������Z���H������������@@ kFolderConstF�w�lpostprocessing�wO8tables in diag folder���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������Z���H������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�������P���>������������ @��% @ PM_MakePath @���w�lpostprocessing�@�������R���@������������@@ kFolderConstF�w�ltables�wO8tables in diag folder���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������Z���H������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�������T���B������������ @��% @ PM_MakePath @���w�ltables_�$�@�����@�������P���>������������@@ kFolderConstF�w�lplots�wO8plots in diag folder$���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������Z���H������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�������T���B������������ @��% @ PM_MakePath @���w�lplots_�$�@�����@�������N���<������������@@ kFolderConstF�w�lmaps�wO8maps in diag folder���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������Z���H������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�������R���@������������ @��% @ PM_MakePath @���w�lmaps_�$�@�����@�������P���>������������@@ kFolderConstF�w�lslices�wO8maps in diag folder���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������Z���H������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�������V���D������������ @��% @ PM_MakePath @���w�l vertical_�$�@�����@�������N���<������������@@ kFolderConstF�w�lzones�wO8maps in diag folder���T���B������������ @��% @ PM_MakePath#@ PM_EdGCM_Unix�w�lOutput�@�������D���2������������ @��% @ PM_MakePath @���@�����@�������Z���H������������ @��% @ PM_MakePath @���w�l diagnostics_$�$�@�����@�������T���B������������ @��% @ PM_MakePath @���w�lzonal_�$�@�����@�������B���0������������@�� )fallback is the current working directory��� ��������������� @��%w�l./0������������������@������������������@��DFCC4DF�7�\���J��$}��#}��LDFind the fields who match the search. The find dialog is model after���^���L�����������Gthe Finder find window in Jaguar (10.2). The search is cumulative which���`���N������������Hmeans that if you search again you are only searching the results of the����$�������������� first search.���X���F�����������ANow supports both List View and eList so some pointers are passed���� ������������ input���P���>�����������8 form in use, used for loading the menu and other spots�&����������� table to useh��4���"�������� fields to use as array ptr��2��� ��������^ ��� �FindMasterFormA��0��������������^- ���� FindTablePtri����B���0��������^- ����FindFieldArrayPtr��FieldPtr$��4���"��������^%��@���������findStr����*����������� ^FindMasterFormA ���(�����������^ FindTablePtri ���,�����������111^FindFieldArrayPtr ��rr��������������4���"����b����^�7��������Find(�������������b�^����P��@����������@������������P��@�����������@����������P��?���������P��?���������P$��"���Find.�y@-1045���������b��.�������b�^�(��������Find(���������b�^��0�����������^ �OK���?���������0�����������)))%define the search type �F!�:���(��������^ � FieldToSearch���@��������2����������������^�F���4�����������^ � SearchTypee���?��������y@contains�@���.����������L^findStr�@�� � SearchTexte���@KO�N���<�����������^ � SearchTypee���@���������y@starts with ���6���$������������^findStr � SearchTexte���@���F���4��������^ � SearchTypee���@���������y@ ends with� �6���$��������^findStr�@�� � SearchTexte�@���.���������^ � SearchTypee���@��������y@is���,������������^findStr � SearchTexte���������������^�����������^�J���8�������2search from whole db is disabled by Mark's request(de�6���$�����ALL RECORDS([Model Variables])fo� �������� do search�J���8���������^FieldPtr$�FindFieldArrayPtrj� � FieldToSearch�����������|��^ N�J���8���������^ � FieldToSearch���@��������y@ run numberT���J���8��������^U� FindTablePtrij��FieldPtr$j��findStr���B���0�����d^�1� FindTablePtrij��FieldPtr$j�����D���2��������^ � FieldToSearch���@��������y@date���V���D���������?date searches are different for the search type operators �����������^S�x���f�����^ � SearchTypee���?���������  � SearchTypee���@���������y@contains or is�V���D�����^U� FindTablePtrij��FieldPtr$j���f � SearchTexte��b�N���<����� ^ � SearchTypee���@���������y@starts with ���V���D����� ^U� FindTablePtrij��FieldPtr$j� P��f � SearchTexte�� �F���4����� 4^ � SearchTypee���@���������y@ ends with�V���D����� ^U� FindTablePtrij��FieldPtr$j� ��f � SearchTexte�� ��������� ^ A�B���0����� X^�1� FindTablePtrij��FieldPtr$j�������������� ^���������������^S����������������������DFCC4D'��^���L��'&��&&��gSGIn the case of Output the folders are divided into a series of folders N�\���J�����������SDthat are scanned to match the database and the disk. Each run foldern���d���R������������SLmust be scanned to ensure that changes due to a running run have not changed@���b���P��������SJthe results. A later version will check against the current date to not do�2��� ������������Sextra scans. The steps are:���*���������������S 1, set a semaphore���R���@�����������S: 2, scan folder and determine which files are output files���X���F��������aaaaSA 3, delete records for files in the database that are not on diskvv�V���D������������S> 4, add records for files on disk that are not in the database���.���������������S 5, clear the semaphore�N���<������������K%@�@�������� @outputFolderPath� @ outputPathu����N���<������������@@outputFolderCount�@outputFileCount�@i�@j����J���8������������@�@�@�������� @ outputFolders�@���������������H���6����������@�@�@�������� @ outputFiles�@���������������������������������(�������"�����Sset the semaphore���8���&����"�d@worksn@�w�l$CM_OutputScan�z���������"��������:���(����"�����S"get list of run folders to process���H���6����"����� @outputFolderPathn @ PM_FindFolderw�lOutput����@���.����"�����@ @outputFolderPath� @ outputFolders�� �@���.����"��L@outputFolderCountn@ @ outputFolders����>���,����"�����@@outputFolderCount�n@����������������������"��������:���(����"�����S"remove records for deleted folders���<���*����"�����@@i�@�@��������@�@�����������>���,����"����� @ CM_Invalidate) @ outputFolders�@i�����������"�� @�����������"��������P���>����"����S8process each run folder, need to do acc, rsf, prt, ocean���B���0����"����@@i�@�?��������@outputFolderCount����4���"����"����Sloop over acc,rsf,prt, ocean���<���*��������@@j�@�@��������@�@���������h���V�������� @ outputPathun @ PM_MakePath @outputFolderPath8� @ outputFolders�@iv�@���`���N���������% @ outputPathun @ PM_MakePath @ outputPathu�#@ CM_FoldersC�@jv�@��QR�P���>��������@ @PM_DocumentList) @ outputPathu�) @ outputFiles���p���^��������  @CM_OutputScanFolder@j�) @ outputFolders�@iv�) @ outputFiles�) @ outputPathu�������������������@������������������@������������������@������������������@���R���@������������S:clear the records of folder caches if there are no folders���J���8����X�����@� @ outputFolders�@�?��������@�?�����������V���D����X����� @ outputFolders�@�?�������vnw�lillegal run number @#$%^:\/���<���*����X�����@@i�@�@��������@�@�����������>���,������������ @ CM_Invalidate) @ outputFolders�@i�������������������@������������������@����������������������0���������������Sclear the semaphore & var���.���������������#@CM_Priv_ScanOutputnn@����.���������������@�w�l$CM_OutputScan�����������������������������������������������������������������������������������DFCC4DO }�N���<��'A��&A��gS7convert a 4D real into a Fortran formatted F15.8 number�*�������������Sin a consistent way�i���� �����������S intput������ ������������S real ������ ��������S output�M� ������������0S string������ ��������EMak @��r��"���������������@@float����.���������������@%@�@�������� @������2��� ������������@%@�@��������@temp���0�������l�8d@%@�@��������@str���� �������l�����@float @������������l�@�����.�������l�����Sconvert real to string0���4���"����l�����@tempt@� @�@float����d���R����l�O� @str@�Z$@��*��@�@��������@�@temp������@temp�6L�N���<����l����@temp�@� @�@� @float��@�@ ���������n���\����l�D@str@str��w�l.��w�l0�@�@��������@�@temp������@temp� ���������l���������� ����l�����Sreturn ������ ����l���� @��@str�DFCC4D6�q*;Y�d���R��&m��%m��gSLPick an image to import and then bring up a dialog about the image before it@���p���^�����������SQis really imported into the database. This replaces the old Info_iPhoto_ImportImaSge 3�n���\�����������SQThis also paste through use of an optional parameter. This code sets up the dialoSg���L���:������������S5and leaves the second method to do the actual import.������ ������������S input���J���8���������$�lS3 (optional) means paste instead of import from file����� ���������a�gS output�r� ������������� S <none>N�k�L���:���������(��%@�@��������@path��@name�� @ ImportNamem��_�(������������e� @ @ Foldernameo�� �(��������������@ @ ImportPictm���(�������������3@ @ ImportTextm��)�8���&��������� �@%@�@�������� @ ImportSizem��O�,������������I�m@@len�@resultS��)�:���(������������@� @ ImageFoldersa�@���������������&���������������@1@fromFile$�@��0���������������@1 @IsOriginalFileJpegN����8���&���������L@%@�@�������� @ PathToImage�E�"���������������@@space���������������������&���������������Sfigure out mode���.���������������@@�N@���������������$���������������@fromFile$N@����,������������ Simage from clipboardN���(���������������@  @ ImportPictm����(�������������� @OKpN@�?���������<���*�����������@path�Nw�l!!!wO8deliberate bad path���0��������������@name�Nw�lFrom Clipboard�����������������@���$���������������@fromFile$N@����"���������������S read image8���0���������������@w�l�N� @ ImportPictm����(���������������@pathrN @DocumentD������������������@�����������������������������������������T���B������������@ @OKc�@�?��������wO8if they picked a readable image��������������������� ���������������S file info���$�����������@@fromFile$��6���$��������Sread text file in if it exists))�8���&���������%@nameFN @PM_Name@patha�@��&�f���T������������@endingeN@� @namen�@�@namen��N`@�@���������@�@���������������������������@@ending��w�l.jpg��x @ending��w�ljpeg��x @@pathn��w�lJPEG��wO86if the original file is a jpeg then we'll just copy it���.��������������� @IsOriginalFileJpegNN@����*��������������� @ PathToImageN@pathT������������������@���.��������������� @IsOriginalFileJpegNN@�������������������@���8���&������������@nameiN @PM_Name@namea�@�����8���&������������@pathaN @ PM_UpOneLevel@pathp����T���B������������@pathpN @ PM_MakePath@patha�@namea�N�w�l.txt�@�����4���"������������@@@patha��$@������(���������������Sread in text file���.���������������@docRefeN@@pathe����,�����������.@lenN@@docRef���.�<���*������������@�h@docRef�� @ ImportTextm�@len����$���������������@ @docRefT�������������������@���$���������������S default text���*��������������� @ ImportTextmN@namer������������������@������������������@���8���&������������S no file then use set name & type���.��������������� @IsOriginalFileJpegNN@����*��������������� @ ImportTextmN@namer������������������@���*��������������� @ ImportNamemN@namer����������������������0���������������Sfigure out the image size���X���F������������@spaceN@d @ ImportPictm�� @�@ ��������� pict size in k���2��� ������������@@space�N@�@ �������������������������� @ ImportSizemN@� @�@space� @�@ ����������N�w�l.�N�@� @�@� @space� @�@ ���������@�@����������N�w�l MB������������������@���F���4������������ @ ImportSizemN@� @�@space���N�w�l KB������������������@�����������������������������������������8���&������������S!get the folder list and set it up���4���"������������@S@�� ��� @ ImageFoldersa����r���`������������SQused to check for protected folders, this never seemed to be used and has been reSmoved���*���������������@� @ ImageFoldersa����2��� ������������ @ ImageFoldersaN@�?����������(��������������� @ FoldernameoNw�l�N����������������������"���������������S show dialog���<���*������������@�7@������w�l ImportDialogN���������������������@�@��N`@�@��������� @�@���������@��N`@�@��������� @�@����������N`@�?���������N`@�?��������$@�'��w�l�N����6���$������������@�(@������w�l ImportDialogN�������������������@�������������������������� ������������Scleanup���(���������������@�Y @ ImportPictm����(���������������@�Y @ ImportTextm�������������������@��������������������DFCC4D!�,�\���J��$}��#}��LECollate a list of all the records in the xml file and build the lists���N���<����������7of run ID's. Then show a dialog box the ask what to do.�|���� ����b���� input���0�������b����� xml_ref to the records����&�������b� xml file name%���� ����b���� output��T���B������������< dialog response (0 = replace, 1 = stop, 2 = don't replace)A���R���@��������; xml_duplcate_type (0 = new, 1 = duplicate, 2 = old model)�T���B��������^%��@�������� ����xml_Record_RefA�� xml_Field_Ref��@���.��������^%��@�������� ���� xml_filenamem��&�����������^-�fieldPtr$��"�����������^1�done(��(��������������^� fieldValuef��B���0��������^�import_counterA��duplicate_counter��*�����������^�Y � xml_duplicate��0����������� ,^�Y �xml_duplicate_type.����*�����������^�Y � xml_runnumber���&��������^�Y � xml_label��J���8�����^���@�������� � xml_duplicate���������������@���.�����^� �xml_duplicate_type.���������������J���8�����^���@�������� � xml_runnumber���������������F���4�����^���@�������� � xml_label���������������L���:�����^���@���������model_versionsA���������������(��������????^ � xml_buttonm�<<�*��������)�^xml_Record_RefA ��"�(��������^ xml_filenamem ���4���"��������^import_counterA��������������6���$�����d^duplicate_counter������������r$�>���,��������^ #� ModelNamesRef��model_versionsA�d��������������^�D���2�����-loop over the records looking for run numbers��� ��������^done(��f�L���:�����^ �OK���?�����������done(�����hT�L���:����� 4read the first field, which should be the run number �\���J����� ^ xml_Field_Ref��xml_Record_RefA�� fieldName�� fieldValuef����L���:����� 4^fieldPtr$ � XML_FindFieldj�������� fieldName���.�������� ^ runNumber� fieldValuefF���������� ^�V���D����� X?if the first field is the run number then add to the collection �2��� ����� ^�fieldPtr$j������� ��������������^�&�����������add run numberh@ �J���8���������^import_counterA�import_counterA����?���������>���,�������^� � xml_runnumber��import_counterA��i�>���,����� .^� � xml_duplicate��import_counterA��:���(���������^� � xml_label��import_counterA����D���2���������^� �xml_duplicate_type.��import_counterA����F���4��������� ^ xml_runnumber��import_counterA� runNumber�����������������,���������� check for duplicatesld�:���(�����^found�������� runNumber�, �6���$���������^�found��P��?��������!�H���6����� ^ xml_duplicate��import_counterA� Duplicate�N���<����� ^xml_duplicate_type.��import_counterA��?����������N���<�����ccc^duplicate_counter�duplicate_counter����?�����������������^�@���.����� ^ xml_duplicate��import_counterA� �N���<�����???? ^xml_duplicate_type.��import_counterA������������P�����������^�(����������^�z���h���������Qsearch for the label, don't use full name resolution from XML_FindField since its really slowh���������������^�Z���H���������^ xml_Field_Ref�� xml_Field_Ref�� fieldName�� fieldValuef� o�V���D������� ^� fieldName��Label��  �OK�����������������D���2��������� ^ xml_label��import_counterA� fieldValuef�����������������J���8���������2search for model version if the run is a duplicate(���6���$���������^�found��P��?�����������4���"���������look for model version in xmlti�������������^�Z���H���������^ xml_Field_Ref�� xml_Field_Ref�� fieldName�� fieldValuef�ec�\���J������� ^� fieldName�� Model_Name���  �OK�����������������R���@���������^xml_model_version���model_versionsA�� fieldValuef�����������������^�8���&�������  check model versions in database��u�,������������^���������found����L���:���������^db_model_version���model_versionsA������� ���������������^���� ���������compare���D���2���������^�xml_model_version�.`�db_model_version����H���6��������� ^ xml_duplicate��import_counterA� Old model���N���<��������� ^xml_duplicate_type.��import_counterA��@�����������������������^�����������^f������������ ^�������������^� ������������^done�����������������^ R�@���.���������^xml_Record_RefA��xml_Record_RefA����������������^P��������������^�V���D���������?show the dialog & set the return value, use a bit of alert code���6���$��������� ^ xml_buttonm�duplicate_counter f�X���F���������@Alert_ParamText ($xml_filename;String($duplicate_counter);"";"")� ��4���"������� ^ alertList��Alerts��e�P���>��������� ^XMLText �GetListItemStrA� alertList���@�����������L���:��������� ^XMLText�� �XMLText��^0�� xml_filenamem� ��V���D��������� ^XMLText�� �XMLText��^1��� �import_counterA�����X���F��������� ^XMLText�� �XMLText��^2��� �duplicate_counter����������������^������@���������P��@�������������@���������P��@�������������@������������@�������������@������������@��������$��'���Import: ���� xml_filenamem�y@ Open a modal window���<���*�������^�(��������Import Simulations��r�����������^��p�&���������w�i^y� alertList�_C�&���������� ^�� � xml_buttonm�����������DFCC4DL���r���`��%��$��gSQchanges to the run number should be visiable in the run list after editing is comSpleteam�r���`����^�SQthe changes no longer track character by character changes as this causes problemSs for���r���`����V���SQthe caching algorithm. Blank run numbers are very dangerious to the database and Sthis ���h���V����j�����SQversion will catch them and revert the run number to the original value. Likewise���^���L����$�XSGprevent duplicate run numbers. Sempahore prevents change durring check.�2��� ����R�����<%@�@��������@temp��at�*�������¶���g@1@dup�@short�T#������������g�(����������@@�$@����L�6���$����,�Scheck for duplicate run numberNo�$�������������g@temp~@����n �f���T����l����@ @ Unique_Fieldi�@������@temp��@�@��������wl@�?�������������� ����:�����@dup~@����������������@������ ���������@dup~@�np�������������@���������*���@�$�������H��� S check length P�:���(�����������@@�@������wl@�@���������dG� ��������������@short~@���������� �����@��� ���������������@short~@������������)))%@������������������������lj�L���:��������llS4don't allow blank run numbers, if so revert and warn~l�2��� ���������� @@dup��x @short���i�,�������������(@����~@�#@�������(���������� @Run_Critical_Begin~� �D���2����������(#@RunNumberArrayz�#@RunNumberArrayz~@������f���T���������� @�w�lSetup Simulation, Run ID: 8�~�#@RunNumberArrayz�#@RunNumberArrayz��s�:���(����������(S"this was the old code, seems wrong��P���>�����0001S9 RunNumberArray{$ArrayNum}:=[Model Variables]Run Number17�`���N��������EMakSISET WINDOW TITLE("Setup Simulation, Run ID: "+RunNumberArray{$ArrayNum})���&��������0001 @Run_Critical_End00�H���6��������EMak @Alert_ParamText@�����w�l�~�w�l�~�w�l�~� V� �������^��l��@@short��t�R���@��������ll @ Alert_Alert@�?��������@�@��������@�?�����������������������0��@���R���@��������EMak @ Alert_Alert@�?��������@�@��������@�?������������������B�����@��������������@��������������������N���<������������S7resort the array when you leave, and move the selection���*��������������� @Simulation_SaveRecord���.���������������@I#@Toolbar_ProcessID����������������� @����������������(�����������DFCC4DT\�8yR������'&��&&��gSvar��,���������������1 @Simulation_Newz��.��������������@#@Simulation_Button����"���������������S link fields���H���6������������@�@�@�������� @ SearchListe�@���������������F���4���������� @�@�@�������� @ LinksList�@��������������:���(���������O�R@� @ LinksListType�@�������������b�<���*������������@� @LinksListFieldz�@���������������J���8���������� @�@�@�������� @ LinksListWord�@�������������i�<���*���������O�R @CurrentLinksVersn#@CurrentLinksVers8�l����������������-�"������������n�_S setup other�D�*������������O�N @Simulation_Newzn@��e�,���������������#@Simulation_Savedn@����6���$����������#@Simulation_Buttonn@�����������w�0���������������@�w�lSimulation_OnErr���������������������6���$��������4Supdate the current date fields��B���0������������@#@Simulation_ProcCount(�@���������������6���$��������@���SSimulation_UpdateCurrentDates ������������������@����������������������>���,��������� S&finish initial setup and pause process ���"���������������@�@���������"���������������@�@���������:���(������������#@Simulation_ProcCount8n@�?����������"��������������� @ Generic_Close������������������A���0���������������Sresume process later here���������������������L���:������������S5wait for Cache Manager to finish scanning input files���2��� ������������@@w�l $CM_InputScan�����.��������������@C@B�@�@��������������������������@ �.���������������@C@B�@����������������������������������&���������������Sdo futher setup���:���(������������#@Simulation_ProcCount8n@�@�����������"���������������@�@���������"���������������@�@���������"���������������@�4@���������*���������������@�Cw�l Simulation�����8���&��������aaaa@�7@������w�lModel Interface�||���������������� @myWind�n@�#@ Toolbar_Width�@�@��������@�@��������n�#@ Toolbar_Width�@��n`@�@��������$@�"� �w�lSetup Simulation Loading�w�lSimulation_Close�wO8696������ ��������@F@B��6���$��������Ssetup the window only once now))�$������������@ @myWind�������������������"���������������@�/@�������������������������������������������@���"���������������@�9@���������0��������������� @ @OK�@����������������������������������V���D������������S? The close box associated with this window pauses the process. ���Z���H����������&SB The window stays ready for use throughout the use of the program.���������������������d���R������������#@Simulation_ProcessID8n@������������� $ Reset process ID tracking variable.n����������������������"���������������S End of pr8������������DFCC4D%��H���6��!�� ��,�7d1Run_On_Disk returns if the current run is on diskDO���� ��������+(���7d input0�{�:���(������������7d" run number ptr (ptr to a string)������ �������������7d output���:���(���������7d# boolean, true if the run is found�0���������� ]- ���� runNumberPtru�� ���� ������R�u]1 �����k�(��������] runNumberPtru �������������(�����������]#� Run_UseCacheu����>���,����������7d'cache manager version, currently unused���$���������7d query cm_file�6���$������P�r]$������ RunOnDiskSet����D���2�����]���� ������ �����@����������(l��H���6�����]���� �������� ����� runNumberPtru���$���������7d return value��D���2�����]���� RunOnDiskSet���������������������� ����� ]������������������]������ �������� ]���������������]������ ������7dcleanup�,��������]�u�� RunOnDiskSet���"����������:]$�������������111]���,���������7ddirect access to disk�R���@������� ]path � PM_FindFolder��Output���� runNumberPtru��_�4���"������P�r]��path���$�����D���� ������l�s ]�����s����������T�E]����� �������: ]����� ����������w�"]�����������T�E]�������������:�=������������������������������DFCC4Db��T���B��'��&��`D<save a record to the database with all the appropriate stuff����H���6�����������`D1now uses semaphores to avoid concurrency problems���T���B������������`D=now checks if the record was changed to reduce the # of saves���N���<������������`D6also check that pictures are not too large, warn if so ���B���0�����������`D+marks run sets as dirty do they are updated�&��������������� @ GroupVers����������������������&�������������``Dhack for PC bug�s�2��� ���������-�>@ #@ PM_Platform�$@����l�@���.������������@semj@� w� $SafeSave�@�@�����������������������-�>@����� ����r�����@semj@�����������r���@�����������r��������<���*����r����`D$only save if we can get the semphorej���&�������r�4@ @sem�@������������r�������f���T����r�@���`DNsave if the record has been changed or the twist downs have been clicked, make���.�������r�����`Dsure it is not too big���R���@����r�����@  @: @���������  #@Simulation_TwistDownChanged�����4���"����r�>� @ GroupVersj#@CurrentGroupVers(���l���Z����r����� @Store_Variable_Blob 7@�����7 @ GroupVers�7 @ Group_State�7 @ Group_Visible�����������r��� @Store_Variable_Blob 7@�����7 @CurrentLinksVersl�7 @ LinksList�7 @ LinksListType�7 @LinksListFieldr�7 @ LinksListWord���"�������r���@�5 @�������a�B���0����r�����#@ Run_DirtySetsj@��� mark set as invalid j���,�������r����A@I �jP@�?������������������r�����@�����������r�������*�������r�����`Dmark as saved if so"�,�������r�����#@Simulation_Saved<j@����6���$����r����#@Simulation_TwistDownChangedj@������������r��������(�������r�����@� w� $SafeSave�����������r�����@������n����r�����`DQAlert_Show ("Caution";"Save Error";"The current simulation has not been saved bec`Dause it is busy.")o���N���<����r�����`D6Alert_ParamText ([Model Variables]Run Number;"";"";"") ���(�������r�����`DAlert_Alert (2;2)����������r�����@������������DFCC4Dw}4�>���,�������7d%set the default values for solar flux����`���N������������7dFpass in the year that you want from 1500-1998, later or earlier values� m�,���������������7dare rounded inwards�ܠ�������������� ������������� [3 ����?�&���������[3�refYear��?�$���������������[refYearT ���ve������������������*����������������7dcheck year rangeT�e�>���,��������[���refYear����@ �����������T���B��������� [ Alert_Alert��?����������@����������@������������6���$���������[refYearT��f��1/1/1958��������������������[[���>���,��������[���refYear��TP��@ �����������T���B�������� [ Alert_Alert��?����������@����������@������������6���$��������[refYearT��f��1/1/1958�����������������[[it������������111[�&������������7d get the date����<���*������������[���������������refYear�����&���������������[�T���T��������0���������������[����T���refYear��@����������������������������������������������������DFCC4D&H�D�g�f���T��'��&��`DOLoop over the prt2html program for each file the user wants to convert from prtb�f���T�����������`DOformat to html. prt2html is then run on each file. Also copy the prt and columnD�R���@�����������`D:files and rename them so that other programs can use them.`���6���$�������������� @averages$�@�@�������������� ������������@ @i����@���.���������� @% @�@��������@prtName�@prtBase��t�6���$���������r�a@% @�@��������@ diag_path��:��������������)���,������������Y�P`Dget info from dialog�n�:���(���������r�o@averages$�@�?�������@�����h�:���(����v��� @averages$�@�@��������@�����t�:���(���������r�a@averages$�@�@��������@� �����:���(���������)�@averages$�@�@�������@� �����:���(���������Y�P@averages$�@�@�������@� ����r�:���(���������r�o@averages$�@�@�������@� ����h�:���(��������� @averages$�@�@�������@� ������:���(����������@averages$�@�@�������@�����s�:���(����������@averages$�@�@�������@�����s�:���(���������T�@averages$�@�@�������@�����_�:���(���������"�.@averages$�@�@�������@�����T�:���(���������@averages$�@�@�������@�������:���(���������@averages$�@�@�������@�������:���(������ @averages$�@�@�������@�������:���(��������@averages$�@�@�������@�������:���(��������@averages$�@�@�������@�������:���(���������@averages$�@�@�������@����@�����������������2��� ���������`Dsetup paths and input files���H���6���������@ diag_path @ PM_FindFolder w�DiagnosticsApps����N���<���������@ @ @ diag_path��w� prt2html.stop��$@������<���*���������@� @ diag_path��w� prt2html.stop����������������@�������������������8���&���������`D!run prt2html to create html files��� ������������ @ prt2html_Ir�������������������X���F���������`DAloop over the months and seasons and copy SuSpect and Excel files���<���*���������@ @i�@�?��������@�@�����������,������������@ @averages$�@i��������������8���&�����@prtBase @prt2html_ToPath @i��6���$�����@prtName@prtBase��w�_Prt))�������������>���,���������`D© text files for SuSpect (Mac only)���2��� ���������@ #@ PM_Platform�$@���������|���������@ @PostProcessing_SubFolderPath w�average�@����@prtName� @ PM_FindFolder w�tables@���@prtName����T���B������������@ @ PM_FindFolder w�tables���@prtName�w�SSPP����T���B������������@ @ PM_FindFolder w�tables���@prtName�w�TEXT�����������������������:���(������������@prtName@prtBase��w�_Regions�������|������������@ @PostProcessing_SubFolderPath w�average�@����@prtName� @ PM_FindFolder w�tables@���@prtName����T���B������������@ @ PM_FindFolder w�tables���@prtName�w�SSPP����T���B������������@ @ PM_FindFolder w�tables���@prtName�w�TEXT�������������������@���6���$������������@prtName@prtBase��w�.xls������������������@ @PostProcessing_SubFolderPath w�average�@����@prtBase��w�_Budgets�� @ PM_FindFolder w�tables`���@prtName�������������...�:���(���������@prtName@prtBase��w�_Reg.xls����������������@ @PostProcessing_SubFolderPath w�average�@����@prtBase��w�_Regions�� @ PM_FindFolder w�tables`���@prtName����������������@��������������������������������������������������@������������������@�����������������0�(���������������`Dstart timer here!����������������������������DFCC4D[Q�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](ql_End��������������������n���\�������� @Generic_OpenReopen~#@Control_ProcessID�w�lControl Window�w�lControl_Process��Z��������������������DFCC4D�f �\���J��'A��&A��gSDconvert the current.date file into the current date in the interface���X���F�����������S@The model always writes out the date in US format but the system����X���F������������S@could be doing anything so I have to convert the date carefully!������� �����������S input �:���(�����������S" run number ptr (ptr to a string)����� ���������O�SS output�M���� ����������S date �E�<���*���������O�S%@�@��������@output_pathname��r�2��� ��������@%@�@��������@temp���(�������������@2@ docref_full���0�������������@- @��@ runNumberPtru���*�����������@3 @���@outdate���(��������@ runNumberPtru @������������(��������@#@ Run_UseCacheu��(��������Sno cache version����������@����������@����������????@�>>�"��������)� @������������������@U�(������������Sunchached version���,������������@tempUw�l 00/00/0000����r���`���������@output_pathname @ PM_MakePath @ PM_FindFolderw�lOutput��@ runNumberPtru��@�����d���R�����@output_pathname @ PM_MakePath@output_pathname�w�l CURRENT.DATE�@��11�>���,����� ))@@@output_pathname��$@��� �<���*������6@ docref_full@@output_pathname�.'�0������������@ @OKt�@�?�����������B���0���������@�h@ docref_full�@tempe�@�@�����������(������������@ @ docref_full����������������@���������������@�������������������8���&���������S convert fortran date to run date���:���(���������@@�@tempe��@�@�����������B���0���������S*convert from text in the format mm/dd/yyyy���T���B���������@year�@� @� @temp��@�@��������@�@������������T���B���������@month@� @� @temph�@�?��������@�@�������������R���@���������@day@� @� @temp��@�@��������@�@�������������L���:���������@outdate@��������@yeara�@month�@day������������9@99�,������������Sbad date give default���(������������@outdate����������������������@���"��������7 @��@outdate �������������@������������������������������DFCC4D6��B���0��!6�� 6��,�7d*set the default values of the trend gassespt�B���0�����������7d+currently uses a table for greenhouse gases���@���.����4�����7d(use Simulation_SolarData for solar trend����^���L���������� �7dFpass in the year that you want from 1850-2050, later or earlier values�d�Z���H����n�����7dBare rounded inwards. Fixed code that used to reset the solar valueI���� ��������Z^�7d input0g9�>���,��������0001�7d' pointer to four digit year as integer00�P���>��������EMak�7d9 pointer to variable to set, or all if nothing is passed�s����������������������� ���������� ]- ����t�$������������T�r]-�yearPtr������ ���������d�e]- �����&��������������]-�trendPtr$����� ��������]- ���Ye�$�����������]-�dataPtr��$���������������]3�refYear����$�����������]1�setAll���"�����������]yearPtr ����.�����������]����?���������$�����������]trendPtr$ ���"�����������]dataPtr ���"��������������]setAll��������������������]���"���������������]setAll���������������������]����������������������\���J�������������7dEcosmetic issue with box if you're the observed year box it blanks out���6���$������������]�yearPtr��( ����������������.���������������]yearPtr���@ ������������������������]���H���6������������]refYear��f��1/1/����� �yearPtr�������������������������(����������������7dcheck year range���<���*������������]���refYear����@ @����������R���@������������ ] Alert_Alert��?����������@����������@������������4���"������������]refYear��f��1/1/1958��������������������]���<���*������������]���refYear����@ ����������R���@������������ ] Alert_Alert��?����������@����������@������������4���"������������]refYear��f��1/1/1958��������������������]����������������������$����������������7d get the date����:���(������������]���������������refYear����6���$������������]�setAll�set all fields$���$���������������]������������$���������������]������������$���������������]�&�����������$���������������]�0�����������$���������������]�B�����������.���������������]�j������refYear����&���������������]w set one field���.���������������]trendPtr$��dataPtr����2��� ������������]yearPtr����refYear�������������������]����������������������������������������������������������������DFCC4DX�,�  �`���NR�������IWhen 4D quits the normal On Exit method runs after all the processes have���`���NJloh:User�Iterminated with is bad since EdGCM 4D can have unsaved records in various�h���V�Pprocesses. So Do_Quit saves the Setup Simulations window and the eJournal window6�d���R$0loh:User�Lbefore consenting to quit the program. The only other task is to cleanup the@���N���< ��� �D�6temp files created by Preview for Web in the eJournal. ������ ����p@�W������� , ���z�H� input����� � none����  ���������� output������ ���z�H� none��2��� �����% @�@�������@path�6��������6�R�o�c�*���4�Y�o�saves to do on quit�i�(���$ loh:���� @Safe_SaveSimulation4�&���ِ�����$* @Safe_SaveInfoText�<���*����p@�W@ @B�L#@PostProcessing_ProcessID6��"���,���z�H@�5 @�����6�����g�!��@�������Xn!�����:���($ Z�X�"clear temp files from this session@��>���,$� ��@pathH6 @ PM_FindFolder w� eJournals6K�4���"*o!̕P @PM_RecursiveDelete6 @pathe6�4���"$`g&����@ @ @pathH6��$@��6���,���$ &$v`�PM_MakeFolder ($path)���"������ %��$@ @pathH6��������� ?������@1-��������   ����������� TT STAT@# appPath@�Z$@��)���@path)���w� register.exe���@�Z$@��)����������������@��������������������&�������������ƄALERT($appPath)���D���2����������@+@appPath@input@outputh@error��� �������������@okz @OKz��������������������.�������������ƄALERT("x"+$output+"x")��������������������0�������������@@okz��@�?����������Z���H����������@@� @output@�?�������@�@���������w�INVALID����������������@#����������������@����������������@���P���>����������@�)w�0Registration Error. Please Contact EdGCM Support���l���Z����������@�)w�LThis version of EdGCM is not properly licensed. Please Contact EdGCM Supportw��� �������������ƄQUIT 4D?�������������������@��������������������������������������������@��������������������������������������������@������������������������������������������������������������@�)w�LThis version of EdGCM is not properly licensed. Please Contact EdGCM Supportw��� ���������������YdQUIT 4D?�������������������@����������������������������������������������������[[������DFCC4DT�,�B���0��!�� ��,�7d*create array of journal entries (InfoText)�pt�J���8���������� ]���@��������#� JournalArrayo���������������e�<���*�����������]�#�JournalIDArray@��������������������������������M�B���0���������7d+check user permissions and reduce selectionVA�D���2���������� ]#� UAM_Admin�admin users see all records�a�"�����������EMak]�/�������wi�6���$�������� Cha]wpick only accessiable records���D���2������������]���������!�����#�UAM_User��(l����>���,������������]�������� p���!�������*�������������������]���������������Z^c�R���@���������]�������#�JournalIDArray@�������#� JournalArrayo��>���,��������"\]�#� JournalArrayo�#�JournalIDArray@�������������������������������������DFCC4D{}��zh�2��� ��'A��&A��gSset the window title to be:DT�2��� �����������S<section name>:<run number>���R���@������������S:you input the section number because current form page can���$�����������S be innacurate���(����������� @��@page,���$������������@@listRef����6���$���������@%@�@��������@ runnumber���(������������@ runnumber@�������.���������������@ @��@��������������� ���������������@page� @�����������������@���*���������������@page�@�?�������������������������@��������������������H���6������������@�w�lAnalyze Output, Run ID: ��@ runnumber�����������������������������������������������������������������������������������DFCC4DK~�,�Z���H�� �� ����8AStartup_Check makes sure that all the EdGCM folders are present. ��V���D���������8=Since this code runs before any of the managers/services are �er�X���F����������8?present it has to do some things the hard way. Alert_Init must �_E�R���@����������89be run before Startup_Check because some errors may call � w�*�������J������8Alert_ParamText. �� ��������Path�8 input ��L� �������J�ount�8 none �(�"�����������rPat�8 output l���J���8�������������80 error number to display in an alert (0=noErr) ��8���&��������unt�( (��(error(i(len���&���������������((listRefn �F���4��������(( vlPlatform�(vlSystemr( vlMachine���4���"��������(%(�@�������(path��8���&��������call(1( isInvisble�(isLockedl���8���&��������ndow(3( createdOn( modifiedOn����8���&������������(2( createdAt( modifiedAt���8���&��������(%(�@��������(pathChar���:���(��������odel(%(�@�������( folderName�l������������������� �����������nfoT�8setup ��p�,���������������(error(�����������(����������������((�X���F��������C9:p�8>Gets all the platform information for the basis of the paths ���F���4��������C9ut(m( vlPlatform�(vlSystemr( vlMachine�4���"��������1908(( vlPlatform��@$(��ou�(���������������(pathChar��:��������������01sC((la�(��������������(pathChar��\�����������������((����������������(_�N���<�������������85get the database file and check that it isn't locked ����"��������������(pathC((�~���l�����������((pathC( isInvisble�(isLockedl( createdOn( createdAt( modifiedOn�( modifiedAt����"��������������((isLocked�(if�,��������������(error(�@�������(�����������������((���������������([�0��������r����8check for EdGCM folder ��4���"�����((error�@(������������>���,������8%trim the path (has to be done twice) ����>���,�����ff((j(�?�������(�@�����������>���,���������(len(�(path��@(�@��������(���J���8���������((i(len(�?��������@(�?��������/�L���:��������put:((path�!(i"�@(pathChar�!(�?�������"al�D���2��������.prt(path�(� (path�(�?�������(iou�(�����������bers(i(�����������(ff����������������((rf����������������((����������������((���������������ca([�,����������������8check the folders ^�av�<���*������������(listRef(�Startup_Folders���.���������������(len(|(listRef���6���$����������((i(�?�������(len���J���8��������r���( folderName� (GetListItemStr�(listRef(i0�H���6��������lx��(((pathR��@( folderName��@$(���,���������������(error(�@�������(ex�2��� ��������lx��(i(len��@(�?�������(�P���>������������ (Alert_ParamText( folderNamem������nC����������������(("����������������((���&���������������(y(listRefar����������������((������������������([�"����������������8cleanup l���"��������������� (��(error(�����������DFCC4D1�KBa�n���\��&��%��gSQExport a run or series of runs to an xml file, multiple export is from Sim LibrarSyf�n���\�����M(SQsince it is the only place the allows multiple exports. The code is conditionalizSe�f���T���������SNfor one export versus multiple exports. The last 19 characters in the document���f���T����V�scalSNare the ending of the XML which needs to be removed from the write. Now allows���<���*����X�����S%the path to be specified for the save t�������������S�or���� ����t�S inputt �R���@����������gS; optional pointer (if there is input use that as the path)or���� ��������S output������ ��������S none�T���B����������%@�@��������@ xml_folderx�@xml_path$�@ temp_path����D���2����v�����@2@xml_ref�@ xml_srcRefx�@ xml_sumRefx�:��4���"����T�����@@i�@xml_size$�@pos���� ������������@@xml���H���6��������@�@�@�������� @ Group_Namer�@�������������<���*���������@�@recordsToExport�@���������������>���,�����������@ w�lGroup_Name_List� @ Group_Namer����B���0�����@�@�@��������@files�@��������������F���4������������@�@�@��������@ runnumber�@���������������B���0��������@�@�@��������@label�@�������������������������ӡ�F���4��������IHDRS/setup the sets to remember the existing recordsob�6���$��������Z@�t@������w�l $ListViewSet�7L�2��� ��������O@@B�#@List_ProcessIDz�<�8���&�����Rd@Xw�lUserSet�w�l $oldUserSet����&���������������@�vw�lUserSet���������������@���@�������������������@��:���(������������@@�L@�������@��������������:���(���������� @@�L@�������@�?�����������@���.����z�N4S(single export is the same as the present���L���:������������ @Form_BLOB_Loader�� hack to load info needed for xml����<���*��������@���S%if we are passed the path then use it��.���������������@@�@������������������ ������������@- @����&������������� @xml_path$ @�)��0��������������� @ XML_Export2@xml_path$�������������������@���*��������������� @ XML_Export2w�l�����,���������������@xml_path$ @DOCUMENTD������������������@���p���^���������� SQcleanup name (add .xml to filename or remove from path .xml before creating summaSry)���2��� ��������@#@ PM_Platform�$@����2��� �������� @@xml_path$�w�lR*ch� ������������� ))@�^���L������������@@�w�l.xml� @PM_Name@xml_path$�@����@���������������H���6������������@@xml_path$�@xml_path$��w�l.xml+������&���������������@�@xml_path$�������������������@��������������@P��������������������*���������������Sdocument and paths3���,���������������@xml_ref@ w�l�����0���������������@ @OKl�@�?�����������,���������������@xml_path$ @DocumentD���H���6������������@ xml_folderx @ PM_FindFolderw�l Applications����R���@������������@ xml_folderx @ PM_MakePath@ xml_folderx�w�lXML�@��e���������������0�0���������������@ @OKl�@�?�����������>���,������������S'remove xml files if they're still there���2��� ������������@@ xml_folderx�@files����:���(������������@@@files��@���������������>���,������������@@i�@�?��������@@files�����R���@��������9@� @ PM_MakePath@ xml_folderx�@files�@i�@���9����������������@����������������@������������������@�0���������������Sset the records to export���"���������������@�2@���������b���P������������@@������@recordsToExport�@�����@ runnumber�@�����@label����B���0�����������S*For ($i;1;Size of array($recordsToExport))��N���<������������S6$recordsToExport{$i}:=Record number([Model Variables])0���6���$������������SNEXT RECORD([Model Variables])��� ���������������SEnd for ����������������������F���4������������S.create a series of xml export files to work on������������������@����H���6������������@@i�@�?��������@@recordsToExport�����>���,������������@�@������@recordsToExport�@i����L���:������������ @Form_BLOB_Loader�� hack to load info needed for xml����T���B������������@ temp_path @ PM_MakePath@ xml_folderx�@� @i��@�����0�������P�T9� @ XML_Export2@ temp_path�T���������P�T�@�g��������P�T�@����������P�T�@�(�����������T�Scombine the files$@�X���F������������@ xml_srcRefx@ @ PM_MakePath@ xml_folderx�w�l1�@���_�0�����������oP@ @OKl�@�?���������<���*���������� S$read in the first file minus the end��H���6���������I�D@xml_size$@@ xml_srcRefx��`@�@��������m�6���$����������@@xml_size$�@�@����������>���,���������B�O@�h@ xml_srcRefx�@xml�@xml_size$���(������������I�D@ @ xml_srcRefx�� �.������������_�ISwrite to combined file�i�,�������������"@�g@xml_ref�@xml��b�:���(�����oS"read through the rest of the files�H���6���������@@i�@�@���������@@recordsToExport�����^���L���������@ xml_srcRefx@ @ PM_MakePath@ xml_folderx�@� @i��@������0������������@ @OKl�@�?�����������(������������Sread minus ending .�H���6��������@xml_size$@@ xml_srcRefx��`@�@���������6���$�����@@xml_size$�@�@��������w�>���,��������@�h@ xml_srcRefx�@xml�@xml_size$��(��������@ @ xml_srcRefx����*�����������Sclip off beginninghml�@���.�����@pos@�w�l<Model_Variables>�@xml����B���0�����������@xml@� @xml�@pos��@�@���������@���.��������@pos@�w�l<Model_Variables>�@xml����B���0�����������@xml@� @xml�@pos�`@�@���������ar�,�����������@�g@xml_ref�@xml������������������@x����������������@����������������@x�4���"������������Sclose file in XML and on disk�A�\���J������������@xmlw�l</Model_Variables>��@�@���������@�Z$@��&�����,���������������@�g@xml_ref�@xml�ml�$�����������@ @xml_Ref�nn�2��� ��������@#@ PM_Platform�$@���le�2��� �����������@@xml_path$�w�lR*ch�@���������������@p�p���^�����������SQcleanup name (add .xml to filename or remove from path .xml before creating summaSry)���^���L�����������@@�w�l.xml� @PM_Name@xml_path$�@����@���������������H���6��������@@xml_path$�@xml_path$��w�l.xml+����&�����������@�@xml_path$�������������@�l���Z��������@xml_path$@� @xml_path$�@�?��������@�@xml_path$��`@�@��������������������@x�������������@�*������������Screate summary file��L���:��������@ xml_sumRefx@ @xml_path$��w�l summary.txt����0�����������@ @OKl�@�?��������to� �����������@xmlw�l� @�B���0��������@@i�@�?��������@@ runnumber����t���b���������@xml@xml��@ runnumber�@i��@�Z$@��%���@label�@i��@�Z$@��&���������������@��2��� �����@#@ PM_Platform�$@����0������������@�g@ xml_sumRefx�@xml����������@ x�8���&�����@�g@ xml_sumRefx�@@xml�����������@S�(�����������@ @ xml_sumRefx� x�2��� ��������@#@ PM_Platform�$@������H���6��������@@xml_path$��w�l summary.txt�w�lR*ch+���������������@ ������������@S������������@�g������������@S������������@������������@ x����������������@������������@S�����������������@���� ������������Scleanupiz�,�����������@�vw�l $ListViewSet�ml�,���������������@�uw�l $ListViewSet��2��� ����>�����@�1@������@�������de�2��� ����>���0@@B�#@List_ProcessIDz���*�������>�����@w�l $oldUserSet�����������>�����@��������������������DFCC4D'P�u?�z���h��'&��&&��gSQUAM_Editor_SaveRecord replaces the record for a user account provided that the paS sswords matchfs�v���d�����������SQand that the user has changed the password. There is some complexity because passS words are���~���l������������SQencrypted but not decrypted so I need to check that I'm not putting the default (Scarriage returns)���|���j����������SQinto the saved record. This version requires passwords to be of non-zero length oSr the save will� �R���@�����������S;be rejected. Warning for no password is only given once now������������������S������� ���������� S input�M���� ����������S none����� ���������e�rS output��8���&��������P��S boolean (was the record saved)d�(��������������1 @���@saved��� ��������������@saved2@�me�������������� �t�h�:���(���������d� @@�@������2@�������������n�<���*���������@ @ vActualValuec� @ vActualValue2���,�����������Scheck for a password2���B���0���������@@� @ vActualValuec��2@������������@��h���V������ SPcarriage returns are the default, don't want to overwrite and unchanged passwordpl�N���<���������@ @ vActualValuec!2@�?�������"����@�Z$@��&�����4���"�����dSsave if passwords are changed�4���"���������@����2@� @ vActualValuec���B���0��������� @ UAM_Encrypt� @ vActualValuec��@��������"������������@�5@��������� ������������@saved2@�������������L@���8���&���������S!save if passwords are not changed�"������������@�5@��������� ������������@saved2@����������������@���������������@���(��������� @@�"@saved���R���@���������S:warn user that there is no password, ONCE, but save anyway���J���8��������@#@UAM_Editor_NoPasswordWarning�@���������������H���6�������� @Alert_ParamText@�����w�l�2�w�l�2�w�l�2���R���@�������� @ Alert_Alert@�?��������@�@��������@�@������������B���0���������#@UAM_Editor_NoPasswordWarning2@�?����������������������@���*������������@����2@��������������B���0��������� @ UAM_Encrypt� @ vActualValuec��@��������"������������@�5@��������� ������������@saved2@����������������@���������������@���R���@��������� @ Alert_Alert@�@���������@�@��������@�?�����������������������@�&���������������@��������������@��������������6���$���������%Sreturn if the record was saved')� ��������������� @��2@saved��������������DFCC4DS,�q�P���>��&b��%b��gS8creates the lists of years, with a safty check to ensure7XT�L���:��������5��S5that this code does not run before the form is loaded���L���:�����������S5also checks to try to preserve the start and end year���8���&������������S!try to fix for model current date���B���0������������%@�@��������@ StartYear�@EndYear��P���>�����������@@StartPos$�@EndPoso�@ CurrentDate�@ StartDate����r���`������������@-@ DateRangePtra�@YearsPtr$�@ ProcessedPtrr�@DiskProcessedPtr�@ DiskFolderPtr��������������������(�����������@ @ StartEndReady���&���������������Ssave old dates ���:���(������������@@ @Start��7@������������������������������@��*���������������@ StartYear7w�l1900��(��������������@EndYear7w�l1900������������������@�������������� ���:���(������������S#create new lists of start/end years���B���0�����������@ DateRangePtra7 @PostProcessing_GetYearRange���N���<������������@@ DateRangePtra��@�?�������1�7@���������������v���d��������4@j7@ DateRangePtra��@�@��������1�7`@ DateRangePtra��@�?�������1�7�@�?����������D���2������������@ StartDate7@ DateRangePtra��@�?�������1��������������@���@���&���������������@j7@��������������.���������������@ StartDate7@�������������������������>� @���X���F������������@YearsPtr$7 @PostProcessing_TypeListEmpty� @start_lbs�@�����^���L������������@ ProcessedPtrr7 @PostProcessing_TypeListEmpty� @ start_lbprt�@�����J���8������������@DiskProcessedPtr7 @PostProcessing_GetProcessedYear���D���2������������@ DiskFolderPtr7 @PostProcessing_GetYearFolder���@���.�����������A@�@ DiskFolderPtr��@ ProcessedPtrr�����.���������������@@j�7@���������������8���&�����������@�@YearsPtr$��@�?����������>���,������������@�@YearsPtr$��@�?��������@j����2��� ������������@@i�@�?��������@j����X���F������������@YearsPtr$��@i17@� @ StartDate�7�@i�7`@�?��������������������������@������������������@����������������������&���������������Supdate buttons���2��� ������������ @PostProcessing_EnableButtons������������������@������������������������������������������������������������DFCC4Dg�Bq�\���J��%��$��gSEinitialize all the trend menus, check if this is a "real" init or not������������������M�&��������������Sload each menu���(���������������^�� $�������D���2������������^ �dSim Trend ppm� �CO2_T_TrendType1����D���2������������^ �dSim Trend ppm� �CO2_T_TrendType2����D���2������������^ �dSim Trend ppm� �N2O_T_TrendType1���D���2������������^ �dSim Trend ppm� �N2O_T_TrendType2���D���2������������^ �dSim Trend ppm� �CH4_T_TrendType1���D���2��������^ �dSim Trend ppm� �CH4_T_TrendType2���F���4���������� ^ �dSim Trend ppb� �CFC11_T_TrendType1��n�F���4����������(^ �dSim Trend ppb� �CFC11_T_TrendType2��C�F���4���������r�e^ �dSim Trend ppb� �CFC12_T_TrendType1��y�F���4���������e�1^ �dSim Trend ppb� �CFC12_T_TrendType2�� �F���4����������^ �dSim Trend W/ms^2� �Sol_T_TrendType1��2�F���4��������^ �dSim Trend W/ms^2� �Sol_T_TrendType2��F���4�����������^ �dSim Trend orbit� �Pow_T_TrendType1������������� ^����������������(��2��� ���������r�eSset menu's in each section�1�0������������e�1 ^CO2_T_TrendType1������d�0������������� ^CO2_T_TrendType2�������0�����������c ^N2O_T_TrendType1�������0������������2�_ ^N2O_T_TrendType2������)�0������������� ^CH4_T_TrendType1��(���� �0������������n�d ^CH4_T_TrendType2������_�2��� ���������1� ^CFC11_T_TrendType1��2���� �2��� ���������n�d ^CFC11_T_TrendType2��6�����2��� ��������� ^CFC12_T_TrendType1��D���?�2��� ��������� ^CFC12_T_TrendType2��H������0������������ ^Sol_T_TrendType1��V�����0������������ ^Sol_T_TrendType2��Z�����0������������ ^Pow_T_TrendType1���������������������^�2��� ���������Srange check for every menu��l���Z���������^ �CO2_T_TrendType1�-`��?��������� 0 �CO2_T_TrendType1�`��@�����������6���$��������� ^CO2_T_TrendType1��?���������������������^�l���Z���������^ �CO2_T_TrendType2�,��?��������� 0 �CO2_T_TrendType2�`��@�����������6���$��������� ^CO2_T_TrendType2��?���������������������^�l���Z���������^ �N2O_T_TrendType1�Q��?��������� 0 �N2O_T_TrendType1�`��@�����������6���$��������� ^N2O_T_TrendType1��?���������������������^�l���Z���������^ �N2O_T_TrendType2�+���?��������� 0 �N2O_T_TrendType2�`��@�����������6���$��������� ^N2O_T_TrendType2��?������������������������^�l���Z������������^ �CH4_T_TrendType1�-`��?��������� 0 �CH4_T_TrendType1�`��@�����������6���$������������ ^CH4_T_TrendType1��?�������������������������^�l���Z������������^ �CH4_T_TrendType2�,��?��������� 0 �CH4_T_TrendType2�`��@�����������6���$������������ ^CH4_T_TrendType2��?���������������������0001^02�p���^��������EMak^ �CFC11_T_TrendType1�Q��?��������� 0 �CFC11_T_TrendType1�`��@�����������8���&������������ ^CFC11_T_TrendType1��?���������������������^ �p���^��������^ �CFC11_T_TrendType2�+���?��������� 0 �CFC11_T_TrendType2�`��@���������8���&��������d ^CFC11_T_TrendType2��?�������_T������������///^--�p���^��������^ �CFC12_T_TrendType1�-`��?��������� 0 �CFC12_T_TrendType1�`��@���������8���&��������g ^CFC12_T_TrendType1��?�������������������^C�p���^��������^ �CFC12_T_TrendType2�,��?��������� 0 �CFC12_T_TrendType2�`��@���������8���&��������_inf ^CFC12_T_TrendType2��?�������e.����������������^N�l���Z������������^ �Sol_T_TrendType1�Q��?��������� 0 �Sol_T_TrendType1�`��@�����������6���$������������ ^Sol_T_TrendType1��?�������������������������^C�l���Z������������^ �Sol_T_TrendType2�+���?��������� 0 �Sol_T_TrendType2�`��@�����������6���$������������ ^Sol_T_TrendType2��?���������������������<dat^C�l���Z������������^ �Pow_T_TrendType1�-`��?��������� 0 �Pow_T_TrendType1�`��@������������6���$������������ ^Pow_T_TrendType1��?�������������������������^����������������������������������������������������DFCC4DD�D���2�������7d+set selected record to match selected image�� ��������U�7d input��,��������������9�7d picture button #����,�����������[ ����pictIDk��(�2��� ��������{w[�curPict��curReck���$�������p����[pictID�k ���oc����������������������������[[ g�F���4���������e�v[���$����� ���$�������0������������� [curRec�k������ ������6���$���������e�v�7dsave toolbar info if changed�����6���$���������� [Info_iPhoto_UpdateInfo��������2��� ���������e�v�7dset toolbar to match info�H4�P���>��������[����� ����curReck�k�`�pictIDk�kP��?����������J�&�����������[valuek��� ���es�@���.��������[ foundPreviewok���� ����value��1`�@���.��������[� foundPreviewo�kP�kP��?���������2`�6���$��������)))%[����� ���� foundPreviewo��_T�Z���H��������#[PictInfoToolbark��� ��uh$[CM_Images]Title`[CM_Previews]Textku���������������[[��0�����������#[PictInfoToolbark��� ���C������������[[��<���*��������#[PictInfoToolbarRecIk������ ����Ty�4���"��������#[PictInfoToolbarChanged�k���12�0�����������111[����� ����curReck��C�*�����������[���$��� ���P���>�������������7d6kill all drags over these images, doesn't seem to work��an�,��������������� [��k�kP��?��������������������������[[��������������������������������������DFCC4DN��|-�H���6��'A��&A��gS0This code takes a path and returns the filename,�DO�<���*�����������S$optionally the ending can be removed-������ ������������S input���&�������r����S path (string)���.��������������S keep ending (boolean)��D���2������������S, Long name to file name ( String ) -> String���N���<�����������S7 Long name to file name ( Long file name ) -> file name���4���"���������%@�@�������� @�� @���;;�.���������������@1 @��@ keepEndingk����V���D������������@@viLen�@viPos�@viChard�@ viDirSymbol�@viPeriod$����&��������d@ keepEndingk- @���2��� ���������@ viDirSymbol-#@ PM_PathASCIIM���.��������@���@viPeriod$-@�[w�l.�?�(������������@viLen-@� @����*������������@viPos-@���������������������O� ���6���$���������Somit last char if it's a folder��B���0���������@@�[ @�!;@viLen"���@ viDirSymbol����6���$���������@viLen-@viLen�-`@�?����������������������@�������������L���.������������Strim filename from path���P���>���������@@viChar��@viLen�@�?���������-`@�?�����������D���2���������@@�[ @�!;@viChar�"���@ viDirSymbol����&������������@viPos-@viChar����,������������@viChar�-@����������������������� @���������������@���2��� ��������@@viPos�-@���������������@���.�����KK� @��-@�  @��@viPos�-�@�?���������������������@������ ��������� @��- @����������������@�������������������L���:���������S5trim ending off the name, handles 3 and 4 char ending���.������������@@ keepEndingk�@�����*������������@viPos-@��������������6���$���������@@� @����-@�@�����������\���J���������@@viChar��@viLen�@viLen�-`@�@���������-`@�?�����������B���0���������@@�[ @�!;@viChar�"���@viPeriod$����&������������@viPos-@viChar����,������������@viChar�-@����������������������@��������� @���2��� ����� ))@@viPos�-@������������)�P���>������� @��-@�  @���@�?��������@viPos�-`@�?��������� ����������������@������������������@������������������@���������������������������DFCC4Di�o�4���"������������8 Time stamp Project Method ��B���0������������8( Time stamp { ( date ; Time ) } -> Long ��ca�b���P������������8I Time stamp { ( date ; Time ) } -> Number of seconds since Jan, 1st 1995 ����,�����������EEE�3& ��&�vdDatel&&���,����������������2& ��&�vhTimel&&)`� ����������������& ���&&en�0����������������&��&@������������&&��$����������������vdDatel&��!���$����������������vhTimel&��� �������������������y �$����������������vdDatel& �����$����������������vhTimel& ��� �������������������D�Z���H������������ ���&&&�vdDatel�&@&p��&�&@��@������&�&�@�vhTime��������������������������������������������������������������DFCC4Da�_�T���B������������8;transfers a picture from the drag into a local picture and �im�@���.������������8&the filename for later identification ��4� ����������������8 input ���$����������������8 on drag T���&����������������8 <empty> �� �$�������������8 on drop T���<���*���������8" ptr to global or process PICT ����:���(���������8! ptr to global or process Str ����:���(���������8! ptr to global or process Str ����<���*������8" ptr to global or process Text ���"���������o���8 output l� ��$�������������8 on drag T� ��P���>�����;"�86 if the drag is valid then then ptrs will be valid �v�4���"�����ste�8 $0, sucess or failure �� }�$���������8 on drop T�im�&��������Vg9�8 <empty> ��el����������������D���2���������8*ARRAY STRING(255;DragTransferFilename;2) ���&������������-�srcObjl���2��� ����������srcElml�srcProcha�*�������������� dragFlavord䡱�6���$�����5����8C_PICTURE(DragTransferPict) �fi�6���$����������8C_TEXT(DragTransferCaption) � -�&��������8o����curRecl�� ���������t��� �������������8���[��������������0���������������@��?����������,�������������- ���PictPtr���0��������ic���- ��� FilenamePtr���0�������������- ��� CaptionPtrC���$�������������PictPtr �����(���������������� FilenamePtr ����(���������������� CaptionPtrC ����������������������0�����������������������������;"����*�����������ss���@$��� �>���,������������_�srcObjl�srcElml�srcProc���8���&������������� dragFlavord�'�srcObjlv�T���B������������8;due to a bug pictures come through as undefined, go figure �-[�Z���H������������� dragFlavord�@$��� � @� dragFlavord�@$��� ���6���$����˘�����#�DragTransferPict�srcObjlǀ�R���@����˘�ion:�89to find the current selected record I have to be smarter ����0�������˘������curRecl������ �����<���*����˘������� ��#�PictInfoToolbarRec�H���6����˘����#�DragTransferFilename��?���������� ������H���6����˘�����#�DragTransferFilename��@����������� ������&�������˘�6���value��� ����@���.����˘����� foundPreviewo���� ���value�@���.����˘������ foundPreviewo�@�@��?��������6�6���$����˘���������� ��� foundPreviewo���4���"����˘����#�DragTransferCaption��� �����������������Z^�����4���"��������#�DragTransferCaption��� ������������������������0�������������������� ���curRecl���(�������������� �����������������������������������,��������������� ����@��?���������G������������������UM�*�����������������@$��� ��>���,���������_�srcObjl�srcElml�srcProc���8���&������������� dragFlavord�'�srcObjl���Z���H��������kP�� dragFlavord�@$��� � @� dragFlavord�@$��� �6���$���������PictPtr#�DragTransferPict�������������������� FilenamePtr#�DragTransferFilename��@����������@#�DragTransferFilename��?�������=FileFolderKey ���D���2��������!Y���� CaptionPtrC�@��@���������<���*���������6>� CaptionPtrC#�DragTransferCaption� n�������������������]�������������������������������t����.����������������������������������DFCC4DT#�a�8���&���������d�d[�[�[ @_Mode_Menu����2��� ���������d�dthis opens all the groups�t���b���������d�dCounterC?������� Number_of_Groups`N%this opens all the closed group boxes���D���2���������d�d Group_StateCounter�C ClosedrC�N���<���������d�d Twist_Down_Button Group_Name_Counter����������������d�d���������������d�d������DFCC4D(/�}5�R���@����������":8This code imports a file for the image browser directly �"�>���,�����������%�@�������path�name����(���������1 foundType���*�������?��� ImportPict����$��������(path|�p�|;��������?|��4���"����path ImportPict��*���������path Document@�2��� ������  OK"�@�?�������� �����������":import "��:���(��������name PM_Namepatha����F���4����tex Info_iPhoto_Paste ImportPict�namer�������������"���������������":cleanup "on�*�������@�Y ImportPict�����������@@Vi����������������DFCC4D||�,�6T�N���<�� L�� L����85Create Diagnostics.I file to post process the tables ����V���D������������8<now supports multiple checkboxes which requires running the \��0���������������8program multiple times ����������������$�����������{{(e(diag�ee��8���&������������(%e(�@�������e( diag_pathee���<���*��������ww(%e(�@�������e( prt_file_nameee���*�����������{{(2e( docref_fullee���&�����������lt�(e(listRefee��*������������k�e(e( listItemRefee�8���&�����������(�e(averages�e(�@�������eee�� ��������������(e(ieeoc�$��������������(1e(done�ee;���������������e;�.���������������8get info from dialog ����<���*��������� ��(averages�e(�?�������ee(����(e �<���*��������5���(averages�e(�@��������ee(����(n�<���*������������(averages�e(�@��������ee(� ���( I�<���*������������(averages�e(�@�������ee(� ���( �<���*����r�(averages�e(�@�������ee(� ���(�<���*����r�����(averages�e(�@�������ee(� ���(se�<���*����r��(averages�e(�@�������ee(� ���(�<���*����r�2�Pi(averages�e(�@�������ee(����(�d�<���*����r����(averages�e(�@�������ee(����(�<���*����r����(averages�e(�@�������ee(����(�<���*����r����(averages�e(�@�������ee(����(Pt�<���*����r����(averages�e(�@�������ee(����(���<���*����r�����(averages�e(�@�������ee(����(���<���*����r�(averages�e(�@�������ee(����(�<���*����r�����(averages�e(�@�������ee(����(�<���*����r����(averages�e(�@�������ee(����(5�<���*����r�����(averages�e(�@�������ee(����(����������r�8���(�6���$�������������8setup paths and input files Z�Ր�J���8������������( diag_pathe ( PM_FindFoldere�� DiagnosticsAppsee�����������������e�F���4�������������8,copy over the land file from the run folder \������������������(e (PM_CopyFortran�e(�@��������e���ee ( PM_FindFoldere�� CurrentRunBee(�@�������e( diag_pathe(�@�������e(�e�ep(�����������ee�����������������e��Z���H�������������8@loop over the months and seasons and process each true variable ��Pr�>���,������������(e(ie(�?�������e(�@�������ee���.���������������(e(averages�e(ieee���,����������������8create the .I file ����N���<���������(diagae ( PM_FindFoldere�� acce�e�p(�Ze$(��&ee���t���b���������(diag&e(diag&�e�pe�JAN�e�p(� e(����e�e�pe�.acce�e�p(�����e�p(�Ze$(��&eerc�^���L�����4��(diag&e(diag&�e�p ( PM_FindFoldere�� tablese�e�p(�Ze$(��&ee���4���"��������(listRefe(ee�Monthsee�������������( prt_file_namee(�����e�pe�_�e�p (GetListItemStr�e(listRefe(ie�e�p(� e(����e�e�pe�-�e�p(� e(����eeD�N���<���������(diag�e(diag��e�p( prt_file_name�e�p(�Ze$(��&ee���&������������(ye(listRefee�J���8���������(diagRe(diagR�e�p(� e(ie�e�p(�Ze$(��&ee���N���<�����ste�(diag&e(diag&�e�p(� e(����e�e�p(�Ze$(��&ee���N���<���������(diag&e(diag&�e�p(� e(����e�e�p(�Ze$(��&ee���x���f����������8QMana2:Pascallion:EdGCM Folder:Output:MAC010aC9:acc: ! path to acc�8 folder s��t���b����������8QJAN1905.accMAC010aC9 ! first acc f�8ile 9��r���`�������������8QMana2:Pascallion:EdGCM Folder:Output:MAC010aC9:postprocessed: ! output fold�8er �D����p�������������8QMAC010aC9_JAN1905-1909 ! output file�8 name (print file) �@�x���f�������������8Q1 ! month for a�8 veraging ����j���X�������������8Q1905 ! start year ��h���V�������������8O1909 ! end year ���������������������0���������������8write out the .I file ��N���<�����������( docref_fulle( e( diag_path�e�pe� Diagnostics.Iee���4���"�����������(e#( PM_Platform�ep$(��ee5{�6���$���������8convert line endings for PC Z�\�<���*��������(�ge( docref_fulle(e(diageeee���������������((��4���"��������(�ge( docref_fulle(diageeeQ�����������((��*�����������0( e( docref_fullee��J���8��������(e( diag_path�e�pe� Diagnostics.Iee�R*cheeesn���������ffe��8���&������8delete stop file if it exists ��T���B�����(e(e( diag_path�e�pe�Diagnostics.stopee�ep$(��ee���B���0��������(�e( diag_path�e�pe�Diagnostics.stopeee���������������((y �������������(��.�������������8run the application e����4���"���������(e#( PM_Platform�ep$(��ee�`���N���������(errCodee(.�e( diag_path�e�pe�Diagnostics.appe(�����������ee��������������((`�R���@����������88$errCode:=AP Sublaunch ($diag_path+"Diagnostics.exe";0) �����D���2���������( prt_file_namee(�e�pe�system32\cmd.exeee���r���`�����_%(errCodee(.�)e( prt_file_namee(�����������e( diag_path�e�pe�Diagnostics.exeeeU�������������(( g�������������(��<���*����������8#wait for the application to finish �LI�"������������(tickse((�"������������(donese(�( ��������������((��0��������4���(Ce(Be(�@�������ee���T���B���������(e(e( diag_path�e�pe�Diagnostics.stopee�ep$(��eeBU�0������������(Ce(Be(�@�������eeOC�B���0���������(�e( diag_path�e�pe�Diagnostics.stopeee�"������������(done_e(�(��������������((�4���"���������(e#( PM_Platform�ep$(��ee[�.������������(ee("e�epe(eee���"������������(donee(�( ��(������������(ie(�@�������(en�������������((Ty����������������(( �.���������������(ee(3e�epe(eee���"���������������(done�e(�(��(���������������(ie(�@�������(�����������������((�����������������((�"�������������� (e(done�ee��0��������������(Ce(Be(�����������ee�6����������������eis�6���$����������\ ( prt2html_I�e( prt_file_nameee������������������((�����������������((���������������((���D���2����������� ( Alert_Alerte(�@��������e(�@�������ee��������������ic��((E��������������������������������������DFCC4DMl�,�3�j���X�� ]�� ]���8QThis code uses the default folder and a specified folder to return all files of �80�j���X������������8Pa given type. Thus you get a concatinated list of all the files in both folders l����d���R������������8Kthat are of a given type. Eg if you pass "topo" then you get back all the ����b���P��������H�8Itopography files in Default. This code now uses Cache Manager instead of ����&����������������8 direct types ������������������8 �e �f���T�������������8LSome special code to handle oceans in where a second value is needed in the ��s?�8���&�������������8database to track the folder. ��������������������8 �� ����������������8 input ����J���8�������������81 file type list name, case sensative comparison ��,����������������8 add in default? ^��0����������������8 input ocean folder? ���.����������������8 pointers to folder ����^���L�������������8D ptr array of pointers to an empty popup menus (arrays of strings) H����X���F�������������8? ptr array of pointers to fields which hold the menu settings �ar�"����������������8 output l� ��`���N�������������8G list of files into the pointer, matched to current value if possible �������������������(���� �������������8var �����B���0������������(%H(�@�������H (�H( typeListName�HH���8���&������������(%H(�@�������H(fileType�HHwh�0���������������(1H (�H( useDefault�HH�.���������������(1H (�H(useOcean�HH���,���������������(-H (�H(foldPtrHH)`�@���.������������(-H (�H(filesPtr�H( tempArrayPtr�HH��,���������������(-H (�H(curPtr�HH���>���,������������(H( typeListRefH(lenALH(lenTLHH���*���������������(H( EdGCMFolderHH���*���������������( typeListName�H (�(�(���������������( useDefault�H (�(0)�&���������������(useOcean�H (�(t@�$���������������(foldPtrH (�(ef�&���������������(filesPtr�H (�(��$���������������(curPtr�H (�(ll�4���"������������(lenAtH(H(filesPtr�HHH����������������H��&���������������(H(useOcean�HH�2��� ������������( EdGCMFolderH(�@��������(cn����������������((�2��� ������������( EdGCMFolderH(�?�������(a����������������((� ����������������((�(����������������8get type list �e�@���.�������������8'$typeListRef:=Load list($typeListName) ��<�:���(������������( H( typeListName�H(typeListNHH(�2��� ������������(lenTLH(H(typeList�HH�����������������H(�6���$�������������8fixed queries for all files Z�ve�0���������������(H$(��H��InputHH�>�@���.������������(H(��� ��H(�� ���H@( EdGCMFolderHH10�6���$������������(H$(��H�� FoldersTempHH���V���D������������(H( useDefault�HdR)look in default and the alternate folder d f�D���2������������(H(��� ��H(�� ���H@(foldPtrHH�H@HH �D���2������������(H(��� ��H�H @H(�� ���H@���DefaultHH�8�F���4������������(�yH���InputH��� FoldersTempH���FoldersHH���,���������������(�uH��� FoldersTempHH(�6���$������������(\_tlook in all input folders �\���4���"������������(XH���InputH���FoldersHH�e����������������((Ty����������������((�.����������������8for each input menu H����8���&������������(H(iH(�?�������H(lenT�HHe�.����������������8query cache manager H����4���"������������(H$(��H��Filetype�HHe�F���4������������(H(��� ��H(�� ���H@(typeList�H(iHHHe�H���6������������(�yH���FoldersH���Filetype�H���Avalible�HH���*���������������(�vH���Avalible�HHg �(����������������8setup the menu �lo�<���*������������( tempArrayPtr�H(filesPtryHH(iHH0)�2��� �������������8special case for oceans ��e�&���������������(H(useOcean�HH�T���B������������(H(�� ��H( tempArrayPtr�HH(�� ��H ( otsp_folders�HHna�d���R������������(�H ( otsp_files�H ( otsp_folders�HdT"$tempArrayPtr->, fix for bad sort )d(�p���^������������(�H ( otsp_folders�H(�����������HdT/blank line for no choice to balance otsp_files dia����������������((��8���&������������(H(�� ��H( tempArrayPtr�HHH���.���������������(�H( tempArrayPtr�HHH������������������((��\���J������������(�H( tempArrayPtr�HH(�����������HdU8blank line for no choice dD�@���.������������( tempArrayPtr�HH(�?�������HHH��HHfo�4���"������������(tempPtrH(curPtrrHH(iHH���B���0������������(jH(�H( tempArrayPtr�HH(tempPtrHHHe�0���������������(H(j�H@(�����������HHe�,���������������( tempArrayPtr�HH(j(ZZ����������������(( g�>���,������������(�H( tempArrayPtr�HH(�����������HH���F���4������������( tempArrayPtr�HH(�?�������HH(tempPtrHH���6���$������������( tempArrayPtr�HH(�?�������(e�&���������������(H(useOcean�HHEn�<���*������������(�H ( otsp_folders�H(�����������HHnd�@���.������������ ( otsp_folders�H(�?�������HH(����(es����������������((`����������������((D����������������((y ����������������(��"����������������8cleanup l�BL�$���������������(H$(��HH1�&���������������(�uH���InputHHnd�(���������������(�uH���FoldersHHs �*���������������(�uH���Filetype�HHT��*���������������(�uH���Avalible�HH���������������������������������������DFCC4D;I�OK*�R���@��'&��&&��gS:load the interface, setup a bunch of picture related stuffDE�X���F����������� @PictPtr�@�@��������wO8array of pictures for quick ref���X���F��������@ @TitlePtrT�@�@��������wO8array of titles for quick ref���L���:������������@ @ PictScreeni�wO8which set of 16 picts are we on���8���&������������@%@�@�������� @ thumbFolder������� ��������@@i��M�2��� ��������0001SARRAY STRING(80;FileList;0)00�2��� ��������EMakSC_LONGINT($DS_StoreMustDie)Ma��������������������0��������@�w�lInfo_iPhoto_OnErr���������������4���"��������Sget folder, will need to go!!�B���0�������� @ thumbFolderN @ PM_FindFolderw�lImages�����������kZkZ��$��������S picture setup�0�������� @ PictScreeniN@�?��������<���*�����@@i�@�?��������@�@���������J���8����� @PictPtr�@iN@0w�lPicture�N�@� @i����J���8����� @TitlePtrT�@iN@0w�lTitle�N�@� @i��������������@���"��������@�/@��� ����"��������@�/@��� ����,������������@�1@��� ���@�� ������<���*����� @Info_iPhoto_LoadThumb@������������������������������������������������������������������DFCC4D;�dN�Z���H��!�� ��,�7dCUpdate the current dates based on the folders in the output folder.ME�V���D��������?���7d>This code runs before the first simulation window opens in the ���\���J������������7dEsimulation process (since it needs write access to [model variables].D�^���L������������7dFUpdateCurrentDates scans the folders in Output and tries to match them��� ����������������7dto runs.����������������������������������]���������������H���6������������]���@��������� runFoldersr��������������JJ�<���*��������111]%��@���������output_pathname����� �����������]�i����������������J���8��������]���� $SafeCurrent����@��������������"������������7d get folders�F���4��������]output_pathname. � PM_FindFolder��Output��<���*��������]�output_pathname�� runFoldersr����������������<���*��������????�7d$check folders for current.date files.99�@���.��������)�]�� runFoldersr��.�������������t�2��� ��������]������� runFoldersr���"���������������]�2�������po�0���������������]��$��������Z�������8���&������������]����. � Run_To_DateB���������"���������������]�5����������"���������������]�3�������������������������]������������������]����������������������,���������������]��� $SafeCurrent��������������������]������DFCC4D.��L���:��"��!��,�7d4Load thumbnails from the subfolder inside of images.���B���0������������7d+The thumbnails are used to fill the display�V���D������������7d>The input is used to decide to page to prev or next or current ������ �������������7d input0���`���N������������7dH direction: -1 is back, 0 is current, 1 is next, -2 is first, 2 is last����,�����������EMak] ���� Direction�ns�8���&������������]�i��curRec��recCount$����6���$���������B�R]%��@��������� imagePath��i�$�������������"] Direction ���w����������Z^c�:���(����������7d"move through the current selection�0������������s�t]recCount$��L���� ����C�.������������e�c]curRec������� ������������������]��2��� ���������s�t�7dgo to the first record 0�_�:���(���������e�c]� Direction�����@����������I�"�������������]�2���� ����I�@���.�������������7d(move backwards in the current selection ��:���(��������]� Direction�����?���������:���(�����]curRec��curRec���@��������4���"���������]�curRec�^��?�����������,��������]curRec���?����������������]�.��������]����� ����curRec��6���$������7dmove forwards in the selection��6���$�����]� Direction����?���������H���6��������]�curRec����@���������( �recCount$����:���(�����????]curRec��curRec����@�����������������]�.������������]����� ����curRec����R���@����������7d:go to the last record doesn't really go to the last record��6���$���������]� Direction����@������������,�������������7d$curRec:=$recCount-15���d���R������������]curRec��recCount$���b�recCount$���@������������?����������4���"������������]�curRec����?�����������,���������������]curRec���?�������������������������]���.���������������]����� ����curRec�������������������]���,����������������7dmark correct position���.�����������]curRec������� �����������������D���2���������7d,load pictures, get previews from CM_Previews��<���*�����]�i���?����������@���������4���"������7dsee if the thumbnail exists ���0�����������]��$���� ����~�����$�����������]value��� ���<���*��������] foundImagef���� ����value��<���*��������]� foundImagef����?���������.������������7dget image from preview���2��� ��������]����� ���� foundImagef��0����������� ]PictPtr~�i���� ���\���J�������� ]TitlePtrT~�i���� ��w$[CM_Images]Title`[CM_Previews]Text���������������]���6���$����.��7dblanks for unused pictures ��B���0����.�]5�� White Missing� �PictPtr~�i����2��� ����.� ]TitlePtrT~�i���� ����������.�]�8���&����.��7d TitlePtr{$i}->:=[CM_Images]Title��"�������.�]�3���� �����������.�]�.�������.��7dblank for no record �>���,����.�]5�� White 128� �PictPtr~�i���0�������.� ]TitlePtrT~�i�������������.����]����������.�]���������.������,�������.�l�7drestore record number�.�������.����]����� ����curRec���H���6����.����]�curRec����@���������^�recCount$�����������.����]���Image Browser: Images `���� �curRec�����-���� �curRec����@������������ of ����� �recCount$����� images�����������.����]����������.�[]���Image Browser: Images `���� �curRec�����-���� �recCount$����� of ����� �recCount$����� images�����������.�]����������DFCC4D�,�Pk�J���8�� �� ���7d1Pict2Jpg copies an jpg and creates new thumbnails��T���B����������7d:There is an implied thumbnails folder at the dest location�� +�z���h������������7dQThumbnails are only created if the thumbnail size is other than 128x128 which alr�7d eady exists���� ���������������7d input��&���������������7d source path�H�$������������o�l�7d dest path��(������������s�t�7d filefolderkey�H�8���&��������� ��7d max width/heigh for thumbnail����H���6�������[%��@�������� ��� ����src��dest���F���4���������o�l[%��@�������� �����name��jpgName���2��� ���������s�t[- ���� filefolderkey���^���L��������� �[ ����max��width��heightr��tws��ths��pos��len�����,��������������[�pic��thumb�����$�������������[�scale�����4���"���������o�l[%��@���������value��� ������������s�t[srcs ��� D�"������������ �[dests ���_T�*�����������&\[ filefolderkeys ���g � �������������[maxs ���li�������������o�l�(�*������������s�t�7dget the real info�e�&������������ �[names��� ����������������(�:���(��������111�7d change name to be web compadible�����0�����������[jpgNames��name��se�B���0��������[jpgNames���jpgName���:��������B���0��������RRR[jpgNames���jpgName��� ������� \�B���0�����������[jpgNames���jpgName���@�������Ti�B���0��������[jpgNames���jpgName���&��������������������������F���4���������7d,check that the work hasn't already been done���Z���H��������)�[� � PM_MakePath�dest��jpgName������N$����� l�������������������&����������������7d copy the file�e�r���`������������[ � PM_MakePath�src��name����� � PM_MakePath�dest��jpgName��������������������������6���$�������������7dcreate thumbnail if necessary����\���J������������[�max����@��������$just use the thumbnail in CM_Previewr�0���������������[values� filefolderkeyct�@���.������������[ foundPreviewos���� ����value�����@���.������������[� foundPreviewo�sP�sP��?���������Co�6���$������������[����� ���� foundPreviewo��al�&���������������[thumbs��� ��� ����������������[[d�\���J������������[uh@actually load the file from disk and compress it for a thumbnail�u N�L���:������������[ � PM_MakePath�src��name������pic��ec�2��� ������������[ �OKs����?���������ec�8���&������������[�pic��width��heightr��?�.����������������7dscalling & thumbnail����0���������������[�width�sP�heightr��@�0���������������[scales�width���max�c�"���������������[twxs�max���2��� ������������[thxs�heightr���scale�(����������������[[ �2��� ������������[scales�heightr���max��L�"���������������[thxs�max�(�0���������������[twxs�width���scale������������������[[Ty�V���D������������[�pic��thumb��tws��ths�$������@�������������������������[[����������������[[����������������[(�4���"�������������7dwrite out the web thumbnail���<���*������������[�d�thumb��sP��@����������@����v������������[ � PM_MakePath � PM_MakePath�dest��� Thumbnails������jpgName������thumb���JPEG�����2��� ������������[ �OKs����������������-����������������[�[ ����������������[[y ����������������[[������������������[[am����������������[(�,����������������7dreturn new filename�X�$��������������� [��s�jpgName��������������������������DFCC4Dl �^�0�F���4��������d�d�, RETRIEVE VARIABLES FROM BLOB project method�b���P��������d�d�I RETRIEVE VARIABLES FROM BLOB ( Pointer { ; Pointer ... { ; Pointer } } )�Z���H��� �����d�d�@ RETRIEVE VARIABLES FROM BLOB ( BLOB { ; Var1 ... { ; Var2 } } )��2��� ��������d�d- ?��������4���"��������d�dvlParamvlOffset$�0������s�����d�dvlOffset$v������������:���(���s�����d�dvlParamv@��������in�F���4���t�����d�d � vlParamvlOffset$���������o�����d�d������������������������������������������������DFCC4D,^n�4���"���������d�d"3H Time stamp Project Methodd"�@���.���������d�d"3H' Time stamp { ( date ; Time ) } -> Long"�<�b���P���������d�d"3HH Time stamp { ( date ; Time ) } -> Number of seconds since Jan, 1st 1995""�,������������d�d"3" "�""vdDatee""��,������������d�d"2" "�""vhTimee""�� ������������d�d"" "��""��0������������d�d"""�""����������""��$������������d�d"vdDate�""�!"t �$������������d�d"vhTime�""�"-�������������d�d""���$������������d�d"vdDate�" "�"d[�$������������d�d"vhTime�" "�"K�������������d�d""���Z���H���������d�d "��""""vdDate��"v"v��"�"v"v@������"�"�v"vhTime�"��������������������������������������������������������������DFCC4D9x��J���8��n��n��(�7d0this goes to the following web page for support �P�<���*�������� (WebAndMailLauncher�(�@���������������������������������������������DFCC4D5�R�:�8���&���������d�dTwist_Down_Update(String Group)���Z���H���������d�dAall that this method needs to know is the group which has changed�Z���H���������d�d@then it can go down and set all the groups bellow it accordinglyd�N���<���������d�d4this updates the twist down group box user interface ���^���L���������d�dDNOTE VERY important this method should only run if a twist down box ����X���F���������d�d?that was passed to it has changed state otherwise it will causei@�2��� ���������d�dundesireable preformance"�������������d�d3���� ���������d�dvar��� ������������d�d �or�*������������d�d ArrayIndex�&������������d�dCounter�h���V���������d�dNthese temporary variables hold the cordinates of the contents of the group box\D�d���R���������d�dKthis allows the method to calculate the highet of the contents for resizing3�(������������d�dC_INTEGER($top)H0�,������������d�dC_INTEGER($bottom)��*������������d�dC_INTEGER($left)k���*������������d�dC_INTEGER($right)�&������������d�dheight�3�J���8���������d�d%%@�������temporay_stationary_object"�D���2���������d�d%%@�������temporary_group_name��F���4���������d�d%%@�������temporary_reserved_name���*������������d�d1 Open_Close���������������d�d3���� ���������d�dsetup���(������������d�d ArrayIndex �v�*������������d�dtopt�����������.������������d�dbottom�b�������������,������������d�dleft�l�����������,������������d�drightr�����������.������������d�dheight�h�������������������������d�d������ ���������d�dbegin���2��� ���������d�dshow/hide relevant group"�J���8���������d�d Group_State ArrayIndexe�A Openylu�,������������d�d Open_Close Open_3�������������d�dh�.������������d�d Open_Close Closedl���B���0���������d�d& If ((Group_State{$ArrayIndex}=Open)) t�������������d�d3�X���F���������d�dtemporary_group_name� Group_Nameg ArrayIndexg��A�A@t�������������d�dtemporary_reserved_name�tz��t Group_Namer ArrayIndexr��A�A_�ACthe objects that are not suppose to move have a z in front of them@�������������d�d �`���N���������d�dFthis check detirmines if the method is resizing the group boxes bellowi���D���2���������d�d*the group box that was opened or collapsed,��F���4���������d�d,if it is true then it modifies the group boxon�L���:���������d�d3if it is not true it adjust all the boxes bellow it���������������d�d���`���N���������d�dGget the height of the elements inside the group box for later reference3�\���J���������d�dBGET OBJECT RECT(*;$temporary_group_name;$left;$top;$right;$bottom)r���t���b���������d�dheight� Group_Height ArrayIndexh A-this calculates the height of the object �t�������������d�d���4���"���������d�d Open_Close�O Open_�6���$���������d�dThis part opens a group box 3�<���*���������d�dheight�height��hh@��������p�v���d���������d�d[�[temporary_group_name���0this shows the group that contains the variablesk���|���j���������d�d��temporary_group_name���6this makes it so objects in this area can be accesseedg �4���"���������d�dthis opens the arrow \nd�������������d�dtemporay_stationary_object"temporary_reserved_name��t�t Closed_Arrowr�tPtemporary_stationary_object is set to the name of the variable containing the ar���F���4���������d�d[�[temporay_stationary_object"���b���P���������d�dtemporay_stationary_object"temporary_reserved_name��t�t Open_Arrows���F���4���������d�d[�[temporay_stationary_object"����`���N���������d�dtemporay_stationary_object"temporary_reserved_name��t�t Mode_Menu �F���4���������d�d[�[temporay_stationary_object"�1 �`���N���������d�dtemporay_stationary_object"temporary_reserved_name��t�t Group_Box�8���&���������d�dchanges group box to full sizeD�|���j���������d�d�temporay_stationary_object"t����������t����������t����������height����2��� ���������d�dIf ($Open_Close=Close) tt�R���@���������d�dheight��hh?��������hheight���hh@���������6���$���������d�dthis part closes a group box"��v���d���������d�d[�[temporary_group_name���0this hides the group that contains the variablesk�����n���������d�d��temporary_group_name���:this makes it so objects in this area can not be accesseedH�O�6���$���������d�dthis closes the arrows "�@�������������d�dtemporay_stationary_object"temporary_reserved_name��t�t Closed_Arrowr�tPtemporary_stationary_object is set to the name of the variable containing the ar �F���4���������d�d[�[temporay_stationary_object"�_I�b���P���������d�dtemporay_stationary_object"temporary_reserved_name��t�t Open_Arrowsnd�F���4���������d�d[�[temporay_stationary_object"����`���N���������d�dtemporay_stationary_object"temporary_reserved_name��t�t Mode_Menu�e�F���4���������d�d[�[temporay_stationary_object"� �`���N���������d�dtemporay_stationary_object"temporary_reserved_name��t�t Group_Box��������������d�d�temporay_stationary_object"t����������t����������t����������height�hcollapses the group box���0������������d�dIf ($Open_Close) � �������������d�dh��0������������d�dadjust the array indexPfo�D���2���������d�d ArrayIndex ArrayIndex��AA?�������t�@���.���������d�d ArrayIndex� A Number_of_Groups`�%�������������d�d���8���&���������d�dadjust the rest of the groups  �J���8���������d�dCounter ArrayIndex Number_of_Groups` L�T���B���������d�dtemporary_group_name� Group_NamegCounter��C�C@�8�������������d�dtemporary_reserved_name�tz��t Group_NamerCounter��C�C_@t�CCthe objects that are not suppose to move have a z in fornt of them���j���X���������d�dPthis are of the routine adjusts the group boxes bellow the group box that was co���v���d���������d�d�temporary_group_name�t����������height�h����������h�������������x���f���������d�d�temporary_reserved_namet����������height�h����������h�������������J���8���������d�d/For ($Counter;$Start_GroupBox;Number_of_Groups)���>���,���������d�d"For($ArrayIndex<=Number_of_Groups)���������������������������������������������������������������DFCC4D_��.]�j���X��%5��$5��g processrefp�=�Open_Output_Window�#� StackSize��Simulation_Database�iz��DFCC4Dl�xB�T���B��'��&��`D=Create TimeSeries.I file to post process the aj (time series)���h���V�����������`DPThis version supports the new hierarchical structure in the diagnostics folders.�p���^�����������`DQHowever due to the 31 character filename restruction in 4D, Excel, and Kalediagra`Dphw���t���b������������`DQthe two level folder hierarchy remains. This version now turns everything on and `Dplaceso���r���`��������0`DQthe folder in postprocessing instead of plots and uses the Unix version of TimeSe`Driesf���D���2��������EMak`D,under MacOS X instead of the Carbon version.������������������`D������� ����Ӝ�(`D input��� �������Ӝ�d`D <none>����� ����Ӝ�����`D output���*�������Ӝ�@���`D boolean, successH� �"�������Ӝ������ @diag�ra���� ����Ӝ�����@1 @����6���$����Ӝ�� @% @�@��������@ diag_path����(�������Ӝ��@2 @ docref_full�����p����Ӝ����@% @�@��������@ output_folder�@ output_path�wX2folder and path for I file and finding disk folderT��"�������Ӝ�D@ @itemu�e�6���$����Ӝ�����@� @ modelgrid�@�@����������"�������Ӝ�����@success@�����������Ӝ����ra�&�������Ӝ�����`Dpath to output���2��� ����Ӝ�� @ #@ PM_Platform�$@������R���@����Ӝ�����@ output_folder @ PM_FindFolder w�postprocessing��X����x���f����Ӝ�����@ output_folder@�  @ output_folder�@�?��������@� @ output_folder��P@�?��������������������������@���L���:������������@ output_folder @ PM_FindFolder w�postprocessing�������������������@���f���T��������� @ output_path@������w�_��@�  @�������w�-��@�  @������\���J�����������@ output_folder @ PM_MakePath @ output_folder�@ output_path�@�����r���`�����������@ output_path @ PM_MakePath @ PM_FindFolder w�postprocessing��@ output_path�@������������������������(��������������`Dcheck model/gridz��6���$��������aaaa @GetModelAndGrid � @ modelgrid�||�������������������*�������Ԣ�����`Dcreate the .I fileH���H���6����Ԣ�����@ @ modelgrid�@�@���������@�@������������:���(����Ԣ�����@diag�w�8x10��@�Z $@��&�����������Ԣ�����@���>���,����Ԣ�����@diag&w�7.826x10���@�Z $@��&�����������Ԣ�����@���2��� ����Ԣ�����@ #@ PM_Platform�$@������^���L����Ԣ�����@diag@diag�� @ PM_FindFolder w�acc��X���@�Z $@��&�����������Ԣ�����@���X���F����Ԣ�����@diag&@diag&�� @ PM_FindFolder w�acc���@�Z $@��&�����������Ԣ�@�r���`����Ԣ�@diag&@diag&��w�JAN��@�  @�������w�.acc��@������@�Z $@��&����L���:����Ԣ��@diag&@diag&��@ output_folder��@�Z $@��&��D���2����Ԣ����@diag&@diag&��@������@�Z $@��&����8���&����Ԣ�����@diag&@diag&��@�Z $@��&����L���:����Ԣ�����@diag&@diag&��@�  @�������@�Z $@��&����L���:����Ԣ�����@diag&@diag&��@�  @�������@�Z $@��&����j���X����Ԣ�����@diag&@diag&��@�  @�����P@������@�?����������@�Z $@��&����2��� ����Ԣ�����@ #@ PM_Platform�$@������8���&����Ԣ�����@diag@diag��@�Z $@��&����H���6����Ԣ�����@�� .give PC version a file ending of xls for Excel���F���4����Ԣ���&@diag&@diag&��w�.xls��@�Z $@��&����������Ԣ�����@���P���>����Ԣ�����`D9Mana2:Pascallion:EdGCM Folder:Output:TestVar.A10.pC9:acc:���2��� ����Ԣ�����`DJAN1901.accTestVar.A10.pC9���^���L������������`DGFolder:Output:TestVar.A10.pC9:postprocessed:TestVar.A10.pC9_TimeSeries:���&���������������`DTestVar.A10.pC9������������������`D�ls���� ������������`D1901:=���� ������������`D1901f ����������������`D1f ������������������,���������������`Dwrite out the .I file���H���6�����������@ diag_path @ PM_FindFolder w�DiagnosticsApps����L���:���������@ docref_full@  @ diag_path��w� TimeSeries.I����2��� ���������@ #@ PM_Platform�$@������|���j���������@�g @ docref_full�@� @� @diage�@�Z $@��&��@�Z @�@����������w�:�w�/��������������������@���:���(������������@�g @ docref_full�@ @diage��������������������@���(���������������@  @ docref_full����H���6������������@ @ diag_path��w� TimeSeries.I�w�R*ch�����������������������2��� ������������`Dcreate the .I scaling file���J���8������������`D2need to preserve the old selection before we startN��8���&��������EMak@K @������w�oldAJselection���"�������N�����@diag�w�����.�������N�����`Dpick the right records���"�������N�����@�/ @���������8���&����N�����@ @������@�����@��������"�������N�����@�2 @���������L���:������������`D4copy the info from the record to the .I scaling file���B���0������������@ @item��@�?��������@�L @����������(���������������`DIf ([AJ]Enabled)z���(���������������`D$diag:=$diag+"T"z������ ������������`DElse ���(���������������`D$diag:=$diag+"F"z������ ������������`DEnd if ���.�����������@diag�@diag���w�T�:���(�������� ))`D"scaling factors aren't really used�@���.����.����@diag�@diag���w� 0.00000000E+01 ���h���V����.�����@diag�@diag���@������  @�@��������P@� @�������Xw� ����h���V����.�����@diag�@diag���@������  @�@��������P@� @�������Xw� ����D���2����.�����@diag�@diag���@������@�Z $@��&����"�������.�����@�3 @������������������������@���0���������������`Drestore the old selection���.���������������@L w�oldAJselection������������������0�6���$������������`Dwrite out the .I scalling file���T���B������������@ docref_full@  @ diag_path��w�TimeSeries.I Scaling����2��� ������������@ #@ PM_Platform�$@������d���R������������@�g @ docref_full�@� @diage�@�Z $@��&��@�Z @�@����������������������������@���:���(������������@�g @ docref_full�@ @diage����������������Ld@`D�(���������������@  @ docref_full� �P���>��������@���@ @ diag_path��w�TimeSeries.I Scaling�w�R*ch�/p������������������B���0������������`D+copy over the land file from the run folderap������������� @PM_CopyFortranz @�@���������w��� @ PM_FindFolder w� CurrentRun���@�@��������@ diag_path�@�@��������@����������������������N���<������������`D6create the output folder if it does not already exists nt�:���(������������@ @ @ output_path��$@���ed�(���������������@ @ output_path����������������L@`D������������������L���:������������`D4run the application, return true or false for sucess���D���2������������@pathu @ PM_FindFolder w�DiagnosticsApps����N���<������������@pathi @ PM_MakePath @patha�w� TimeSeriesX�@�����*��������������� @ PM_Launch @patha�*)���� ��������� @��@�LA�H���6������������`D0$0:=PostProcessing_LaunchAndWait ("TimeSeriesX")�����������������������������������������������DFCC4D _j�Z���H���������d�d��Achanges to the date should be immediatly visiable in the run list�(������������d�dArrayNums��������������d�d�������������d�d t�*������������d�d�$���:���(���������d�d!update the list in another window���,������������d�d Simulation_SaveRecord t�0������������d�dI#Toolbar_ProcessID��������������d�d��������������������������DFCC4D:�hP�n���\��%4��$4��gSQcheck that 4D is new enough to use, prevents stupid errors, also now loads versioSnf�(���������������Snumber from file����2��� �����������^%��@���������vers(��������������������(���������������^vers(~��������,�����������0001Smin version is 8.0.2~08������������EMak^�� �vers(!��@�������"��.��@��������� �� �vers(!��@�������"�� ��@������������ �vers(!��@�������"��.��@�������������\���J������������^�)�<EdGCM requires 4th Dimension 2004.2 (8.0.2) or later to run.���������������^#R���������������^����������������,���������������Sload in version file~!!�8���&��������^��version�� $�����2��� ��������^docRef�~��version��@���.��������ccc^�h�docRef~��line(���Z$���&��RR�$�����������^ �docRef~��:���(������������^���line(��~`����������������.���������������#^VersionOfEdGCMA~�line(������������������^���`���N������������^�)�@EdGCM version is unknown, this copy is damaged and will not run.~�������������������^#������������������^������������������^���`���N������������^�)�@EdGCM version is unknown, this copy is damaged and will not run.~�������������������^#������������������^������������DFCC4De��X�>���,��������W�� Info_iPhoto_LoadThumbs�@��������ss������������������������������������������������DFCC4D W#�\���J������������8CThis code loads the string from the Web and Mail list and launches �[�`���N���������8Geither a web browser or an email program. It should be checked if this ��Z���H������������8@works right on Windoz since the mailto functionality came from �����T���B�������������8:InternetConfig and may not be a real part of OPEN WEB URL ��X����������8 ����6���$�����EEE�8The syntax for a weblink is Z����4���"�����uuu�8 http://www.giss.nasa.gov ��4���"����������8The syntax for an email is ��d���R����������8J mailto:someone@Mac.com?subject=My%20Subject&Body=This%20Is%20The%20Text ��������������������8 ���� ����������������8 input ���F���4�������������8- number of the line in Web and Mail to load ����0����������������w ��w� listLineNumww��&����������������w�listRefww���&����������������w�listLenww�2��� ������������%w��@�������w�urlww�(��������������� listLineNumw ���$�����������������0�� ����������������8setup ����:���(�����������D�listRefw�w\� Web and Mailww�2��� ����������listLenw�|w�listRefww������������������w#�&����������������8 get and send ��L���:�������������w� listLineNum�w@w�listLen�w�@��?�������www���L���:�������������urlw �GetListItemStrww�listRefw� listLineNumww���(������������w�urlw�w@wwˀ������������������������������"����������������8cleanup l����&����������������yw�listRefww����������DFCC4Da6�5�B���0��������W�� Info_iPhoto_LoadThumbs�sps�?�������ss������������������������������������������DFCC4D`-������������� � ����������������������DFCC4DJ"�d�(��0���������������"0startup image browser "��v���d���������� Generic_OpenReopen???#InfoPict_ProcessID??x�InfoPict Window?x�Info_iPhoto_Process??������DFCC4Dne�p:�R���@��&\��%\��gS:Deletes a section from the eJournal after warning the user�DE���� ����r��S input���*������������S number of section"�"���������������S text ptr8���.����������� @��@ sectionNums����2��� �����TAT @- @��@sectionTextPtrz� �4���"��������TAT @@i�@iic�@iii�@j� �4���"��������@@tableNum$�@fieldNum$��0������������@-@field1u�@field2u����&������������@@ blankPict��H�&�����������aaaa@ sectionNums~ @��*�������X�����@sectionTextPtrz~ @����������������dj�F���4����h�����S.check that we're not in the middle of a delete���8���&�����������@ @HandlingDeleteSection�@����2��� ���������@@�����~@�?�����������.��������������Swarn user about delete���Z���H��������aaaa@ @ Alert_Alert@�?��������@�@���������@�?����������N���<������������S6for any section except the last move all the others up0���:���(��������@tableNum$~@�@sectionTextPtr~��:���(��������@fieldNum$~@�@sectionTextPtr~��8���&����j�0001@@ sectionNums�wl@�@��������11�<���*��������EMak@@i�@ sectionNums�@�@��������l�N���<��������0001 @ItemListI�@im~ @ItemListI�@i�~�@�?�������m00�<���*��������EMak@@j�@�?��������@�@�����������N���<��������TAT @ii~@i�~`@�?���������@�@��������~�@j? �8���&��������496 @iii~@i�@�@��������~�@j S�@���.������������ @ItemNameI�@iiem~ @ItemNameI�@iiim9�D���2���������� @ ItemCaption�@iiem~ @ ItemCaption�@iiim�m�D���2���������� @ItemPictI�@iiem�~ @ItemPictI�@iiim��P�L���:���������l�d @ ItemPictLabel�@iiem�~ @ ItemPictLabel�@iiim���������������� @��@���.����������@field1c~@�@tableNum$�@fieldNum$��x�R���@���������l�d@field2u~@�@tableNum$�@fieldNum$�~�@�?���������i�,��������������@field1��~@field2���e�>���,�����������@fieldNum$~@fieldNum$�~�@�?�������x����������������@������������������@s%��������������� ��>���,����������S'blank the last section that is now gone�e�6���$���������l�d@5w�l White 128�@ blankPict��l�<���*���������n�g@@i�@�?��������@�@���������T�R���@���������i�n@ii~@�����~`@�?���������@�@��������~�@i�n�0�����������> @ItemNameI�@iiem~w�l�~���2��� ������������ @ ItemCaption�@iiem~w�l�~���8���&������������ @ItemPictI�@iiem�~@ blankPict���6���$������������ @ ItemPictLabel�@iiem�~w�l�~������������������@���@���.������������@field1�~@�@tableNum$�@fieldNum$����&�����������>� @field1u�~w�l�~���������������������,�������������&Supdate figure labels~� �.��������������� @InfoText_UpdateFigLabels����������������������T���B������������S=reduce the number of sections & mark that delete is sucessful���6���$������������@����~@�����~`@�?����������0��������������� @HandlingDeleteSection~@����������������...�(�����������Supdate appearance�L���:��������@5w�leLine2P� @ ItemLinePicte�@ sectionNumsm���8���&��������@@ sectionNums�wl@�@���������6���$������������@@i�@ sectionNums�@������>���,��������111 @InfoText_ShowHide@i�@�?��������������������@������������@���T���B�������� @InfoText_ShowHide@�����~�@�?��������@�@������������8���&��������@S!the popup menu is left inaccurateW�������������n�f@�T��������������@��4���"����������Scan't delete the last section�i�B���0���������l�d @ Alert_Alert@�?��������@�@���������f�L���:���������M� @5w�leLine2P� @ ItemLinePicte�@ sectionNumsm���I�0����������� @HandlingDeleteSection~@�������������@������������@�n���\������������SQmark that we've complete the delete so that the second On Data Change is completeSd���0��������������� @HandlingDeleteSection~@�������������������@������������������������������DFCC4D[�,�d���R��'��&��b$MThis marks all tables in EdGCM as read write and should never be used outside���h���V�����������b$Qof user mode. This code exists for programmer editing of certian tables in EdGCM.�����������������b$�o����� �����������b$ inputp_���� ��������0001b$ none00���� ��������EMakb$ outputr����� ������������b$ none������ ��������TAT �� ��MM������������� 0:�&�����������MUTX]����� ���������"�����������EMak]�5����������"���������������]�3����������(����������� ]��$��������BB������������������������������������������������������DFCC4DV�~PH�(�����'��&��b$FindOTSpecFolderzTX�|���j����^�scalb$QFinds the folder that contains the filename passed in from the list of folders inb$ Input Oceans.e@��Z���H������scalb$BA path to the folder is returned or "" if the file cannot be found��������*�scalb$�hT���� �����scalb$ input u�2��� �����scalb$ ptr to file to search for��6���$�������b$ ptr to folder containing file@���� �����scalb$ outputD:�H���6�������b$1 path to the folder that contains the file or ""y �F���4�����scal- @�� @��@ filenamePtr�@ foldernamePtr�r �.�������Ɯ�c@% @�@�������� @������&�������"�scal@ filenamePtr @�:�(�������\�scal@ foldernamePtr @� a���� �����scal @��w��st�������������^���L�����scalb$Gif the filename and the foldername exists then the file probably exists����������������b$QIf ((Find index key([CM_File]File Name;$filenamePtr->)>-1)&(Find index key([CM_b$'File]Folder Name;$foldernamePtr->)>-1))���4���"��������@ $@���w� OTSpec Set�����F���4����b�����@ @��� ���@�� ���8@ filenamePtr7������H���6�����|@ @��� ������@�� ���8@ foldernamePtr7��B���0��������@ @� w� OTSpec Set���@���������������>���,����\����� @�� @ PM_FindFolder w� Input Oceans����H���6����D����� @�� @ PM_MakePath @���@ foldernamePtr7�@�� o�������������@�/�"��������TAT @ $@���D �*�������~�TAT @�u w� OTSpec Set��k_�������(�u��� OTSpec Set ��������DFCC4D{�O�y�\���J�� �� ����8CPath Manager code to copy fortran units that accounts for platform ����`���N���������8Fand copies for Mac/PC to PC/Mac. A legacy mode enables coping fortran ����b���P�������������8Hfiles from newer runs to older post-processors. There are three naming �(�&���������������8 conventions: ����,���������������8Carbon, FOR026.DAT �H�.����������������8Cocoa/Unix, FORT.26 ����&������������8 PC, fort.26 ��(������������3333�8 �� ����������������8 input ���x���f�������������8Q copy mode: 1=named to fortran, 2=fortran to fortran, 3=fortran to fortran (Mac �8legacy) o�ns�<���*������������8" source name (ignored in mode 2) h����(�����������1����8 source path ����B���0�������������8) source unit number (ignored in mode 1) ��,����������������8 destination path ��4���"�������������8 destination unit number ���2��� �������������8 overwrite destination ���"����������������8 output l�c �B���0��������o�8( error: 0=noerr, -1=no src, -2=no dest ��.�����������3���( (�(copyMode����J���8������������(%(�@������� (�(srcName( srcNamePC2�<���*�����������(%(�@������� (�(srcPathrn�,���������������( (�(srcUnit���>���,�����������(%(�@������� (�(destPath����8���&������������(%(�@�������(destName����.���������������( (�(destUnit����2��� ������������(1 (�( destOverwrite�0���������������(1(isSrc(isDest����(���������������( (��(err�&���������������(copyMode� (�(���$���������������(srcName (�(te�$���������������(srcPath (�(�$���������������(srcUnit (�(p)�&���������������(destPath� (�()k�&���������������(destUnit� (�(��*���������������( destOverwrite (�( m�6���$������������(err(�����������\_tnoerr p\������������������\���,����������������8format input names ��\���J�������������8Cif the source if fortran need to look for two versions of the name ��8���&������������((copyMode��@(�?�������am�6���$�������������8create Mac name, FOR026.DAT Z�ol�(���������������(srcName�for��6���$������������((srcUnit�@(�@��������4���"������������(srcName(srcName��@�0Fi�6���$������������((srcUnit�@(�@�������er�4���"������������(srcName(srcName��@�0�2����������������((����������������((v�N���<������������(srcName(srcName��@(� (srcUnit��@�.dat���(����������������8create PC name �v�B���0������������( srcNamePC�fort.��@(� (srcUnit�����������������((����������������(2�,����������������8format output name ���8���&������������((copyMode��@(�@����������L���:�������������83create legacy Mac name for Carbon apps, FOR026.DAT ���*���������������(destName��for�8���&������������((destUnit��@(�@�������ld�8���&������������(destName�(destName���@�0 o�8���&������������((destUnit��@(�@����������8���&������������(destName�(destName���@�0������������������((in����������������(( �T���B������������(destName�(destName���@(� (destUnit���@�.dat2����������������((�:���(�������������8 create MacOS X name and PC name l����D���2������������(destName��fort.��@(� (destUnit�t�����������������((����������������(��.����������������8check for dest files ����:���(������������(((destPath��@$(��in�$���������������(isDest�(�(����������������(( �$���������������(isDest�(�(ca����������������((����������������(7d�,����������������8check source files �����������������((�w�X���F������������((copyMode��@(�?�������znamed file to fortran file te�\���J������������(( ( PM_MakePath(srcPath(srcName(��@$(��gD�"���������������(isSrc(�(th����������������((�C�"���������������(isSrc(�(t����������������(( �l���Z������������((copyMode��@(�?�������z/fortran to fortran (two possible source names) 2�\���J������������(( ( PM_MakePath(srcPath(srcName(��@$(�����"���������������(isSrc(�(������������������((Ty�^���L������������(( ( PM_MakePath(srcPath( srcNamePC(��@$(�����"���������������(isSrc(�(es����������������((v�"���������������(isSrc(�(rk����������������((v����������������((h����������������((���"���������������(isSrc(�(ld�$���������������(isDest�(�( f����������������((����������������(���0����������������8start the main process �ac�0���������������((isSrc�@(isDest�ti����������������3�$����������������8 copy file <������������������(([�X���F������������((copyMode��@(�?�������znamed file to fortran file su�*���������������(( destOverwrite������r������������( ( PM_MakePath(srcPath(srcName(� ( PM_MakePath(destPatha(destNamea(��@������������������((`�~���l������������( ( PM_MakePath(srcPath(srcName(� ( PM_MakePath(destPatha(destNamea(�������������������((E�l���Z������������((copyMode��@(�?�������z/fortran to fortran (two possible source names) ���\���J������������(( ( PM_MakePath(srcPath(srcName(��@$(��-�*���������������(( destOverwrite������r������������( ( PM_MakePath(srcPath(srcName(� ( PM_MakePath(destPatha(destNamea(��@����������������((1�~���l������������( ( PM_MakePath(srcPath(srcName(� ( PM_MakePath(destPatha(destNamea(�������������������((1����������������((���*���������������(( destOverwrite������t������������( ( PM_MakePath(srcPath( srcNamePC(� ( PM_MakePath(destPatha(destNamea(��@����������������((������n������������( ( PM_MakePath(srcPath( srcNamePC(� ( PM_MakePath(destPatha(destNamea(������������������((d����������������((E����������������((it����������������((ot�*���������������((isSrc�@(����.���������������(err�@(�?�������(������������������(("�.���������������(err�@(�@��������(������������������(((���������������((����������������(��"����������������8cleanup l�pu� ��������������� (��(err(li��������������������������������������DFCC4D9��"�����'&��&&��g��/@������rf�"�������p����@�2@�������@���.��������@@item��@�?��������@�@�����������&�������v�����@����nw�lJeany���"�������� Kd@�5@������up�"������������@�3@������er���������a(@S������������������������������DFCC4Dvxq�,�������������"0Twist_Down_Init() ^"���T���B�����������"0;this method is intended to initialize the Twist_down menus "z�\���J��������l km"0CAll the groupboxes initialiy before this routine is run start open "���Z���H����Y`���"0Abut the arrows next to them are unasigned. This routine assigns "�b���P����Y`����"0Iopen arrows because the form isn't shown yet nothing is initially hidden "���4���"����Y` ~"0Also sets initial heights �"�&�������Y`Qfcounterff���"�������Y`��ftopffnd�&�������Y`��fbottomfff�$�������Y`����fleft\ffe�$�������Y`����frightff��������Y`����f�J���8����Y`����fCounterf�?�������f Number_of_GroupsDff��������Y`���� temporary_reserved_namefx�z�f�@ f Group_Name�ffCounterf�f�@x�_{BDthe objects that are not suppose to move have a z in fornt of them f{ll��������Y`����temporay_stationary_object�f ftemporary_reserved_name�f�@x� Closed_Arrow{{@Qtemporary_stationary_object is set to the name of the variable containing the ar { t�F���4����Y`����[f�f@fftemporay_stationary_object�ff�ff���b���P����Y`����temporay_stationary_object�f ftemporary_reserved_name�f�@x� Open_Arrow=x�F���4����Y`�d�d[f�f@fftemporay_stationary_object�ff�ffro����r����Y`|�f�f@fx�z�f�@ f Group_Name�ffcounterf�f�@x� _Group_BoxHfflefttfftopffrightffbottomfff;�H���6����Y`���� Group_Height�fcounterfffbottomf�f@ftopf��������Y`����������������������������������������������������DFCC4D1�Z$�H���6��!�� ��,�7d0make sure that the istart field matches the menu�DO�@���.��������7d(incoming data is a hack to force updates������� ��������]1 ������.�����������]1�load_from_recordd�����������������,����������]load_from_recordd ���������������]����������� ]��(��������������]���$���� t�6���$����J�����7dconvert menu item to istart �������������� ]��4���"���������� ] �istart����?���������t�*������������ �V]������@���������t�4���"��������0001] �istart����@���������10�*�����������EMak]������@������� I�4���"������������] �istart����@������������*������������� ]������@��������e�4���"��������� �V] �istart����@���������S�8���&��������� ��7d![Model Variables]Initial Start:=1�a�X���F���������� ]Alert_ParamText��uniform conditions�����������������h�R���@���������$�p ] Alert_Alert��?����������@����������@���������� �4���"���������a�r] �istart����@���������}�8���&���������l�i�7d![Model Variables]Initial Start:=2�e�R���@�������� ]Alert_ParamText�� observations������������������R���@��������"FR ] Alert_Alert��?����������@����������@����������������������N�]�H���6��������RR]���$����� p�load_from_recordd��R�(�����������oo]���$������6���$����������] �� dSim IStart� �istart��{�������������o�n]� �������������;�]��2��� ���������l�a]���������?��������%�,������������T�y ]istart���@��������)�2��� ��������MUTX]���������@���������fo�,����������� ]istart���@��������2��� ��������]���������@���������$�,�����������d ]istart���?��������2��� ��������///]���������@���������,����������� ]istart���@��������..�2��� ��������g]���������@���������,����������� ]istart���@��������������������]������������]����������������DFCC4D �d�(D�>���,���������d�d% Process_Name (Longint) : String [30]���F���4���������d�d- Process_Name (Process number) : Process name�������������d�d�����V���D���������d�d= This routine returns a process name from its process number.�������������d�d�0������������d�d � Process_ID��:���(���������d�d%%@������� ProcessName���$������������d�dState�$������������d�dTime�@�������������d�das�(������������d�d Process_ID ��������������d�das�N���<���������d�dP Process_ID ProcessNameStateTimee���������������d�d�(������������d�d �� ProcessNameS�������������d�d�*������������d�d End of routine.!t@����������������������������������������������������������DFCC4Df~~c �d���R�������7dKretrive the special regions files from cache manager and construct the menu���� ���������������7d input��6���$������������7d ptr to special regions menu����L���:�������������7d2 ptr to the special regions field in the database�_r�,������������� �7d filetype to query�P� ������������`�b�7d output�ss� ������������$�f�7d none��@���.���������(�[- ��� ����menuPtr��fieldPtr$���4�>���,�����������[%��@�������� ����filetype$����� �����������[�i���$�����������[menuPtrN ����&�����������[fieldPtr$N ���.!�&�����������[filetype$N �����������������111��8���&���������7ddo the query -> array and sort�����>���,��������[���� ������ �����filetype$�����2��� ��������RRR[��� ����menuPtr���>���,�����������[��menuPtr�fix for bad sort����������������*���������������7dadd in new itemsN�"�V���D��������[��menuPtr��������������blank line for no choiceN�:���(��������)�[menuPtrj��?�������NN�����S�.�����������[iN��menuPtr���������������������i�4���"�������������7dselect the current element0�th�>���,������������[iN���menuPtr��fieldPtr$�����0���������������[�i�NP��������������an�&���������������[menuPtrN�i�H����������������[[�8���&������������[��menuPtr������������������B���0������������[menuPtrj��?�������NN�fieldPtr$Pa�0���������������[menuPtrN��?�������������������������[[������DFCC4DA��b���P��'��&��b$JeList_Find sets up the arrays for the find dialog for the eJournal Libraryum���������scalb$�dG���� �����scalb$ inputD:���� ������scalb$ noneD:���� ����Ɯ�scalb$ outputD:���� ����"��� b$ nonees�����������"�������������b$ setup arrayts�8���&����X����� @ SearchArray�@�@������������>���,��������� @ SearchArray�@�?�������7@�������>���,����H���� @ SearchArray�@�@��������7@�������>���,����~����� @ SearchArray�@�@��������7@���������� �����TAT b$finde�N���<��������� @ List_Find @�@���������7@������7 @ SearchArray�����������@#����DFCC4D��@������&\��%\��g�<�.�����������"���@� @ pTimeSeries����@���.����������� @PostProcessing_SetTable�@������@���(��������������@@� @pMaps����@���.������������ @PostProcessing_SetTable�@������@�����,�����������0001@@� @ pVertical�08�@���.��������EMak @PostProcessing_SetTable�@������@�����*���������������@@� @pZonal�����@���.������������ @PostProcessing_SetTable�@������@�����*��������������@@� @pTables����<���*������������ @PostProcessing_TablesClearFill@��������������������@������������������������������DFCC4D:m�Li�"�����'&��&&��gS run deepocnrf�"�����������-��@diag����D���2��������@%@�@��������@ diag_path�@out_path$����(���������������@2@ docref_full���� ��������������@@pos���"��������������@@iteme�nu��������������� ����� ���������u�nSsetup�e�,������������n�p@ diag_pathc @ InputPath�t�2��� ���������� @#@ PM_Platform�$@�����<���*���������u�n@out_path$cw�l../../Input/Ocean rsf/�(�������������n�p@�t�>���,�����������@out_path$c @ PM_FindFolderw�lInput����T���B���������� @out_path$c @ PM_MakePath@out_path$�w�l Ocean rsf�@���d�������������u�n@�N��������������n�p�u�*���������������Sset deepocn.I filera�@���.������������@diagpc@� @�� ����c�@�Z$@��&����X���F��������� @diag&c@diag&�c�@� @�� ���c`@�� ����c�@�Z$@��&����D���2������������@diag&c@diag&�c�@�� ���c�@�Z$@��&����f���T������������@diag&c@diag&�c�@ diag_path�c�w�locean�c� @PathCharP�c�@�Z$@��&��d���R������������@diag&c@diag&�c�@ diag_path�c�w�lrsf�c� @PathCharP�c�@�Z$@��&�������~������������@diag&c@diag&�c�@out_path$�c�w�lNOV�c�@� @�� ����c�w�l.rsf^�c�@�� ���c�w�l.rsf_�c�@�Z$@��&����^���L���������L@diag&c@diag&�c� @ OutputPathu�c�w�l TAUP.value��c�@�Z$@��&�����������������������&���������������Ssample .I file������ ������������S1936c������������������S24H���&���������������SControl2_02pC9���:���(��������� S"../../Output/Control2_02pC9/ocean/���8���&������������S ../../Output/Control2_02pC9/rsf/���Z���H������������SC../../Input/Ocean rsf/Control2_02pC9/NOV1960.rsfControl2_02pC9.rsf_���D���2������������S,../../Input Oceans/Control2_02pC9/TAUP.value�����������������������������������������8���&������������S write out the .I file and launch���P���>������������ @OHT_SaveAndLaunch@diagS�w�l deepocn.I�w�ldeepocn�����������������������*���������������Supdate input files&���2��� ������������ @ CM_Rescan@��@��@��������������������������������DFCC4D1�Pm�\���J��'��&��`DECreate based on which tab is in front, now uses timers to update the ���T���B����F�PK��`D=list in the interface for the long running extractor programs��������������������.�������������� @� @ pTimeSeries��D���2�����������@ @PostProcessing_Validate @�@�������������*��������������� @PostProcessing_Plots(���0��������������� @PostProcessing_SummaryLists������������������@���(�����������aaaa@ @� @pMaps��D���2������������@ @PostProcessing_Validate @�@�������������$�������������� @makeNetCDFij_Iz���V���D��������D @PostProcessing_TimerCheckSetup @ PM_FindFolder w�maps��8���������������@���,�������ϸ�d@ @� @ pVertical����D���2����ϸ�����@ @PostProcessing_Validate @�@�������������$�������ϸ�@��� @makeNetCDFjl_Iz���X���F����ϸ����� @PostProcessing_TimerCheckSetup @ PM_FindFolder w�slicesP������������ϸ�����@���*�������ϸ�� @ @� @pZonal�����D���2����ϸ�����@ @PostProcessing_Validate @�@�������������*�������ϸ����� @PostProcessing_Zonal(��R���@����ϸ����� @PostProcessing_SummaryLists @ PM_FindFolder w�zones�����������ϸ�����@���*�������ϸ��L@ @� @pTables����D���2����ϸ�����@ @PostProcessing_Validate @�@�������������"�������ϸ����� @ prt2html_loop���X���F����ϸ����� @PostProcessing_TimerCheckSetup @ PM_FindFolder w�tablesP������������ϸ�����@����������ϸ�����@�����������ϸ�� �����������ϸ���������������������������������������DFCC4DhD)E�������������d�d""���*������������d�d"""�"$"��""���6���$���������d�d"����""� " "End" "End"""���,������������d�d"" "End�"E "Start""��$������������d�d "Start" "End"���6���$���������d�d"����""� " "End" "End"""���������������d�d""���������������d�d""���������������d�d"��������������������������������DFCC4D ��zh�<���*��'A��&A��gS$ Process_number (String [30]) : Long���B���0����������S+ Process_number (Process name) : Process ID�����������������S����P���>�����������S9 This routine looks up a process by its name, and returnst�V���D�����������S> it's process ID. This routine also checks the process state,�V���D���������� S> and returns 0 if the process is not running. In other words,�:�R���@���������T�eS: this routine returns a positive ID for a running process,00�P���>���������s�IS9 and a 0 for a process that is aborted or does not exist.�o����������������S����\���J������������SE This routine assumes that process names are unique. If they are notw �R���@��������� S: unique the results are based on the first instance found.����������������S���������������������,�����������d @���@ ProcessID��>���,��������KK�@%@�@�������� @��@ ProcessName����������������������$��������4@@TestIDs�pl�"������������@@Tasks����6���$��������@���@%@�@��������@TestName$����&���������������@@ TestState����&���������������@@TestTime$����������������O� ���&���������������@ ProcessName @�����������������������N���<������������@ ProcessID@�������������  Does not exist by default.���D���2������������@Tasks@O�� How many processes are there? ������������������A���<���*������������@@TestID��@�?��������@Tasks����N���<�����@P@TestID��@TestName$�@ TestState�@TestTime$�����������������T���B�����@@ ProcessName�@TestName$�wO8 We've found the process����������� )��X���F����� ))@@ TestState�h@������������wO8 It's known, but not running. �f���T��������@ ProcessID@������������� 2 Return 0 to show that the process is not running.���������������@���D���2���������@ ProcessID@TestID��� Return the ID ���(������������@�� ($TestState<0)�������������������L���:���������@TestID�@Tasks��@�?���������  Exit the loop.���2��� ���������@�� ($ProcessName=$TestName)�������������������(����������0@�� ($i;1;$Tasks)������������������$������������ @��@ ProcessID�������������������(������������S End of routine.�����DFCC4DL�w�\���J��'��&��b$EConvert a year to a TAU value based on a zero year. This code assumes���V���D��������P��b$?the length of the year is 8760 hours as is standard in the GCM.�����������������b$������� �����������b$ input�:���(�����������b$# longint, year you want to convert��4���"��������0001b$ longint, zero year for run10���� ��������EMakb$ outputr��0���������������b$ longint, date in hours����������������TAT ������������41 b$var �(�����������  @��@year@�2 �(�����������0.01@ @��@zero@�89�&���������������@ @���@tau���� ���������������@year@ @���� ���������������@zero@ @�����������������������4���"������������b$do the magic from date to tau���P���>������������@tau @year@�P@zero@��@�@ �������� 365*24������������������������� ������������b$cleanup������ ������������ @��@tau��@tau������������������DFCC4D'�Q�`���N��'��&��`DHUpdate image based on what is on disk. This version of the code is a lotfn�b���P��������=��`DJmore careful with what is in memory to ensure that things are really reset�����������������`D������� �����������`D input���� �����������`D nonep_���� ���������t�o`D output�h���� ������������`D none���������������000100�*�����������EMak`Dclear current stuff I�"����������������� @��� ������2��� ������������@_ @��� ���@������������������������������@�*���������������`Dstart progress barH�H�T���B�����������@ progressBar @ Progress_Open w�Updating image library...������������*�d @� ���������������`D do update���8���&��������@��� @ CM_Rescan @��@��@���X��������������������@�*���������������`Dupdate this windowH��"������������ @�/ @��� ���oa�,���������������@�1 @��� ���@�� ������<���*������������ @Info_iPhoto_LoadThumb @������������������������������@�(��������������`Dkill progress bar���(���������������@I @ progressBar�����������������������������������������������������������DFCC4DR�I�V���D����������8<Save changed information from toolbar back into the record, \����B���0�������������8)might be tricked by an altered selection �� � ���������������8 input ��*���������������8 blank toolbar? �t@�2��� ��������MUTX�1 ��� blankToolbarl�&�����������������curRecl�*������������ blankToolbarl �������������������6���$���������8save toolbar info if changed ����0���������������curRecl������ ���h���V������������#�PictInfoToolbarChanged�@#�PictInfoToolbarRecl�@���������������<���*��������www������ ��#�PictInfoToolbarRecag�&���������������value��� ����@���.��������� foundPreviewo���� ���value(�@���.�������������� foundPreviewo�@�@��?�������hu�6���$������������������ ��� foundPreviewo C�0������������������ ��#�PictInfoToolbar����$�����������������5���� ��o����������������������0������������������ ��#�PictInfoToolbar��$�����������������5���� ��e��<���*�������������8#check if change record is onscreen �������r�������������#�PictInfoToolbarRec�@�curRecl��@��@��������@#�PictInfoToolbarRecl� @�curRecl@�f���T������������ �TitlePtrT#�PictInfoToolbarRec�@�curRecl��@��?���������� �����������������������������������������v������������������2��� �������������8optionally blank toolbar ����*����������������� blankToolbarl���.���������������#�PictInfoToolbar\��\���>���,������������#�PictInfoToolbarRec�@��?�����������4���"������������#�PictInfoToolbarChanged���������������������v������������������������DFCC4D~��X���F��n��n��(�7d>this goes to the following web page for the eJournal exchange ���<���*����N����� (WebAndMailLauncher�(�@�������������������������������DFCC4D�V5�4���"��n��n��(�7dthis goes to the homepage ���<���*�����H (WebAndMailLauncher�(�@�������������������������������������������������������������������DFCC4DW�~�N���<��'��&��b$7Shows the user the run folder in the Finder, similar to�0��������������:b$the same meathod in Setup���������������b$������� ������������b$ input������ ��������b$ none�M���� ������������b$ output������ ������������b$ none������������������������������������b$var�� ������������Y�e @err����6���$��������@% @�@��������@ runFolder���������������0�����������b$find run folder and open�ld�,�����������@ runFolder @Run_PathR�8���&��������@ @ @ runFolder��8$@����D���2�����������@� ��w� ShowFolder��w� 3;1;?2002;240��,����������� @ FinderToPathn w��������������@�D���2�����������@� ��w� ShowFolder��w� 3;1;?2015;240���������������@JJ�  GetListItemStr"listRefic�������������d�dv�������������d�d A� ������������d�dcleanup��&������������d�dylistRef������������DFCC4D`K�3XO�D���2���s�����d�d<�+ Process_state_name (Longint) : String (30)<;�X���F���H�����d�d<�> Process_state_name (Process state code) : Process state name.p<��������������d�d<��<���>���,��������d�d<%<<%@�������< <��<< StateName<<���.�����������d�d<< <�<< StateCode<<���������������d�d<�&������e�����d�d< StateCode< <�<�������z�����d�d<�4���"��� �����d�d< StateName<<�S Unknown state<������� �����d�d<as������� �����d�d<<���8���&��� �����d�d<<< StateCode�<S<S����������<<Na�0�����������d�d< StateName<<�S Executing<na�������r�����d�d<�8���&���D�����d�d<<< StateCode�<S<S?�������<<on�.������o�����d�d< StateName<<�SDelayed<���������p�����d�d<�8���&���z�����d�d<<< StateCode�<S<S@��������<<by�>���,��� �����d�d< StateName<<�SWaiting for user eventD<���������T�����d�d< �8���&���o�����d�d<<< StateCode�<S<S@��������<<���@���.���c�����d�d< StateName<<�SWaiting for input/output<��������s�����d�d<���8���&���s�����d�d<<< StateCode�<S<S@�������<<w �@���.���u�����d�d< StateName<<�SWaiting for internal flag<���������x�����d�d<���8���&���e�����d�d<<< StateCode�<S<S@�������<<���.������s�����d�d< StateName<<�SPausede<��������������d�d<��8���&���������d�d<<< StateCode�<S<S@�������<<�4�:���(���������d�d< StateName<<�SHidden modal dialog<o �������������d�d<�<���*���������d�d<<< StateCode�<S�<S<S?�������<<re�.������t�����d�d< StateName<<�SAborted<���������������d�d<�<���*���c�����d�d<<< StateCode�<S�<S<S@�������<<���>���,���������d�d< StateName<<�SProcess does not existD<���������������d�d<[�������������d�d<�������������d�d<<S�������������d�d<���&������������d�d <��<< StateName<�������������d�d<�*������������d�d<� End of routine.<���DFCC4D-��\���J��'��&��b$EThis returns a string from a list item. You probably want to use this���^���L����������b$Fcode when you want a string return instead of a procedure. You need to ���@���.����������b$)load the list before you make this call. �����������������b$�o����� �����������b$input:���*���������������b$ longint, list ref���,�����������b$ longint, list item���� ��������b$output:�.�����������b$ string, item in list���� ������������� @�����$��������������@ @listRef������ ������������@ @�����&���������������@ @listItem$����(���������������@ @ listItemRef����.���������������@% @�@�������� @������8���&������������@% @�@��������@ listItemStr�������������������� ��������b$setup���"�����������@listRef @��$�����������@listItem$ @���������������������� ��������b$get it�R���@��������@z @listRef�@listItem$�@ listItemRef�@ listItemStr���������������kZo{����� ��������b$set itJ�&����������� @��@ listItemStr���������DFCC4D0�dN�\���J��%��$��gSEThis loads a run record, not a flux record. This code implicitly uses���^���L����������SGthe current run for the runid. Sempahore blocks changes to the run list���2��� �����������Swhile the record is loaded�����������������S�o����� �����������S inputp_�,�����������S none (current run)~ ���� ��������XS outputc���� ��������S none�$������������ �p@curYear�� �$������������r�r@@i�@j�%�2��� ����������@� @Start�@�?����������0������������� @� @End�@�?���������a�0������������L�E@� @RSF�@�?����������������������� ��$���� ���������e�sSsetup�e�(������������� @Run_Critical_Begin~�a��������������L�E�T�0������������ �Sload record from run list�[�H���6���������e�s@�@������#@ RunIDArrayR�#@RunNumberArrayz��[�$�����������,��@�� ��~@�������*������������� @�� ��~@������������d�*������������L�E@�� ��~@�������������*������������ �@�� ��~@��������������������������e�s�]�"�����������S clear lists�D���2��������@� @Start�@�?��������@ @Start���@���.���������@� @End�@�?��������@ @End�����@���.������������@� @RSF�@�?��������@ @RSF��������������������� @�4���"������������Shandle a run that is present���L���:����������g@#@ RunDateArrayu�#@RunNumberArrayz�~����������.���������������Syear for flux purposes���L���:��������u@curYear~@�#@ RunDateArrayu�#@RunNumberArray~� �X���F��������@@�#@ RunDateArrayu�#@RunNumberArrayz��wl@�@���������:���(�����������@curYear~@curYear�~`@�?���������������������@�����������������@�&��������������@�� ��~@curYear������������������@�(�����������Ssetup date ranges���2��� ��������@@�����~@�������������$�����������@�� ��~@�����.�����������)))%@@curYear�~@�� ������&�����������@�� ��~@curYear�������������@j���������@�����������@�,�����������Srepopulate the lists~���>���,������������@j~@�� ���~`@�� ���~�@�?�������J�8���&��������111@� @Start�@�?��������@j��6���$��������@� @End�@�?��������@j�@�6���$�����������@� @RSF�@�?��������@j���.��������������@@j�~@������������i�2��� �����������@@i�@�?��������@j���N���<�������� @Start�@i~@� @�� ���~�@i�~`@�?����������2��� ����������� @End�@i~ @Start�@i�2��� �������� @RSF�@i~ @Start�@i���������������@�������������@����������������*�����������Sset lists of years<R�*����������� @Start~@�?�������se�(�����������111 @End~@ @End�un�(����������� @RSF~@ @RSF�ra�������������@�.�����������Sset power and amplitude���*�����������@�� ��~@�@��������*�����������@�� ��~@�@�������������������`@$�������������lj���� ��������llScleanup�~�&�����������ln @Run_Critical_Endl������������������������������������������������������������DFCC4D[D�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](qt if not passed): 1=run id, 2=ruDFCC4Du�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q����H���6������������@@tDFCC4D[E�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q_dbr�@ rebuild_liste�wO8RuDFl��?W�� �������������@2@time_me�[@�"�������DFCC4D[F�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q��Sset sort%���.�������<�DFCC4D\�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q#@RunNumberArrayz��%@�����DFCC4D\�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](qEMak@1 @ simWindowOpen� I�"DFCC4D\�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q��� �`D4PAUSE PROCESS(SimulaDFCC4D7s�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](qait�s�\���J����������I@ @PDFCC4D7t�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q������ @Run_Critical_Begin�PDFCC4D[G�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](qy�@�����������wX+this geDF#GRPA��.0�.0+�.0 �.02Y�N�,� +�:�K@� @DF#GRP��}'�M � ��,T�Z� �k �.�7� �;� ��Uy�����������De����P���@���@<�<����l��������DF#GRPQQ��d�)r�i�J�_�E�2�'P model/grid, pathDFCC4D[J�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q #@Setup_ProcessID�? �����DFCC4D\�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q�������s�2��� �����������@IDFCC4D[K�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](qGetRunN; @�@���������7�������������������2��� ��������`Dstart process to run model��d���R��������#@Setup_ProcessID@= w�Setup_StartGCM�#@ StackSize�w� Setup_Process�������������@�� @output_pathname��w� SSW.STOPGCM��@���������DFCC4DP�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q�������������Z���H������������@DFCC4D[H�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](qnot running and shell is not runDF#GRPV��Zs���7d�n�1�+�h�R�TF�/V�A"��7l�Z�'�W�0�x�^M�;� � �Rn�D�h��{}�S,�wg�/X��T���U5���[�A�a�7���}�=f�+�+>�����@ P�"�������>�����@success@�O�*�������DF#GRP��f�� �(�a��=�%�-Y�[�Q�'� K�2�f�i�Ml�f~�V������������@�(���������������`DpropigaDF#GRP*�� ;2Q��x�4�E�/R�f_�A!�Ii�� �7K�\i�W�BC�a@������al�"�����������P@� @������ez�&DF#GRP,��KBL�Kj�WwL+�Ww^�Ww&�Wwu �!�_� ;q� ;QS�PJ�P�eC6i�n:�n9�]$ �y6�yf�S�3�K�6g�V�C.�C�C �.$=�.0�.f�.��^ �^B�^f�^}�^G�^s�^G�^I�^ �^L�^r^�cZc�cZ�cZ%�*c�*�_/�_d�O8�`2�`%�`~#�37�;�o�Sk��%5�I�2F�Z�C�p� �,7�Z�q�� �+����it to openf �\���J������������@ @Process_FindWindowDF#GRP��8�,�Yd��-�F�&H�7Q�YF��||�l�2DF#GRPS ��5*�]�� ��9�V�K��ne�a�z�99�7�A�.7�Mw�;�zb�F�1�C��Jb�kA�&�v�7N�X8�m=�4�y�\�s�A,��Z��77������������"�����DF#GRP8��n�.8�A�0w�I[��C������#@Simulation_ButtDF#GRP��4� ��Y@�s4��Q� ��+��������@IDF#GRP7��F�7�B�c��� ��������@�������������DF#GRPh���J�su�5�yb�E�-p�d�K�o������������DFCC4D7r�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q����������0������� ����@tDFCC4D[L�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q@success@����������DFCC4D<�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](qforce immediate write1 �p���^��DFCC4D[M�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](qck model/grid, patho�J���8����DFCC4D[N�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q����@ @Rundeck_Validate<�DFCC4D[O�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q�*��������������� @ PM_Launch DFCC4D[P�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q@��t_�2��� ������������ @RDFCC4D ��V���D��'��&��b$>Alert_ParamText places strings into the global ParamText array�J�T���B���������b$<so that they can replace the ^0..^3 in the alerts. Note that����V���D�����������b$?the same string can be substituted in multiple locations if you������ �����������b$want.*������������0001b$�03���� ��������EMakb$ inputr��:���(������������b$" string, first replacement string���:���(������������b$# string, second replacement string���:���(��������� �b$" string, third replacement string��:���(��������13.7b$# string, fourth replacement stringld���� ��������TAT b$ outputMM���� �������� b$ nonek_�@���.�������������% @�@�������� @�� @�� @�� @�����<���*������������#@AlertParamTextz�@�?������� @����<���*������������#@AlertParamTextz�@�@�������� @����<���*������������#@AlertParamTextz�@�@�������� @����<���*������������#@AlertParamTextz�@�@������� @���th @output_pathname�@gcmName�@DFCC4D0l��Z���H��'��&��b$CThis is special code to remove the archive status from a record andME�F���4�����������b$.should not be used in release copies of EdGCM.$�����������������b$�o����� �����������b$ inputp_���� ������������b$ none������ ��������0001b$ output00���� ��������EMakb$ noner��*�����������������m���@��������������"�����������13.7@�5 @��������T @�5 @������D ��@ @B�#@Simulation_ProcessID=����"���������������@ @success����2��� ����������� @Simulation_LockUnlock @��������������������@������������������@���(���������������`Din setup processz���"���������������@ @success����6���$������������#@Simulation_Button@�@�������������������������@���2��� ������������@I #@Simulation_ProcessID(����4���"������������#@Setup_ProcessID@�����������������������������@������������������@���������������������Launch @tempa�O���DF#GRPK��w�3�sw�.��O�.:�wC�wF�w'�3n%�3%Y�3-q�3)�3b4������������OP@��������DF#GRP��_r��R�K&�V�6�5�(/�;I�.�Da�e�J�a�`�J"�w� �}���'�Rtical_Begin��(�������DF#GRP��R�@t��1�7�7H��B��.0�k'� ��vV�t)([Model Variables]Status=0))-�2��� ��������`D[MoDF#GRP��N��,�X�k6� T�e�ro��A�q�2(��I9�0)�R�~�/Z�~����T�vt�9x�c{ @������DF#GRPk'��R�3�{�t�R�Q�Pu�/g�/f�Y?�N�g �e�Ht�M �Q����`D0reopen^H^H^H restart setup window if it wasDF#GRP �� �Z�/[��7�� V� X�A� ���%�[�/Y�[�/S�� �[[��������������@���.������������ @RDF#GRPUx��c8�T#�<V�"���J�(�_�/]� _�Gp�;x��U�|�:j�@�.c�'�;�M�;�1��W�&�Xy�ht�)��P�c�B�^�/ �z�3�v�fs�w� �T\�L�b�w�T�7R��<c�_�6�g�[�,�9"�/M�.r�;�U!�|ait DF#GRPF�� V�,�;�C�m�KF�sH� s�l��I�G��d�p�K�s�S�SI�@���������������.���������������DF#GRPvV��3E��]�f2�*�P�:�TP�.�wu�@�e\��DF#GRPT��d�IV�A�IX�d�C��C�A`Dlock runw��DF#GRPU��(�<�F��-�X�+��%�''�O��K~�,^�<b�:� �x`�M�i>� �b������������`DSimulationDF#GRP1��V�*�-$�S �8�Eb��6S�c9�h�5�Ux�. �F�T�QQ�T�sulation_ProcessID)������ ������������`DEDF#GRPt)��n�!�1� K�^�z|�Ia�7�+�r7� �^�QW� �A����������@�#@ RunDateArrayu�#@RunNumberArray%6�DFCC4D7v�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q����@���4���"�����jji#@DFCC4D[I�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](qimer�0������������@time_me%@��%`@time_me�����������@PP�������������� �����Ssetup�&��������FFF @Run_Critical_End����������@����������������������������������DFCC4D�4c�2��� ��$}��#}��Ltry out new runlist windowDT������������������&��������������save menu itemh���&���������������^�C�Default����8���&�����������^�7��������TestList������������������� ^myWind���#� Toolbar_Width����@����������@���������P��?���������P��?��������$��"� �� Control Panel�� Generic_Close�om�0������������� ^ ExtraHeight�������������O���������������2er���� ������������window������ �����������^F�B���$���������������^ �myWind�������������������� ��������records���� �����������^�����"�����������^�/��������������������� �����������contents��,��������������� ^RunSort��?��������.�����������111 ^RunNumberArrayHier/�w�@���.�������� ^Run_UpdateListAj �RunNumberArrayHier/�����������������A�2��� ��������^�(��������TestList������������^���������������DFCC4DC�,Y�b���P��!�� ��,�7dJUpdate a run to match current state of the output folder from any process.�um�h���V����X����7dPIf the simulation process is not running then the run is modified in the current��a�^���L�����������7dGprocess which may mess with the current selection. The book says not to�S�J���8������������7d2create new processes lightly so I'm avoiding this.�����������������7d�z������ �������������7d input0���h���V������������7dP optional pointer r record ID, which will be used instead of the current record����������������EMaker����������������]���������������������*����������� ZH]- ����runPtr.����B���0���������] �CurrentRunRecordNumber���simState$���������������������.���������������]��.���������������,����������������7drecord id was passed���"���������������]runPtr�. �����������������]�0�������������7dset ptr to current record�>���,����������� ]CurrentRunRecordNumber�.�����������:���(��������]runPtr�.� �CurrentRunRecordNumber�������������]��������������p���^������������7dQdo the work locally if I'm the simulation process or there is no simulation proce�7dss �n���\��������111�7dQor the current record is # to the requested record (so that simulation process ha�7ds�$������������7d not loaded it�@���.����Ö���]simState$.�J#�Simulation_ProcessIDe�������v����Ö��e��]�B��#�Simulation_ProcessIDe�� p�simState$��������������� p�simState$�.��@������������:���(����Ö����� ]Safe_CurrentStateUpdate�runPtr.�����������Ö����]on�8���&����Ö�]�runPtr.��Z������������ �:���(����Ö�� ]Safe_CurrentStateUpdate�runPtr.����������Ö��]�4���"����Ö�����7dcall simulation to do update����6���$����Ö�#]Simulation_Button.��@��������2��� ����Ö�]I#�Simulation_ProcessIDa���������Ö����]ce�.�������Ö��b]C�B���@��������O�:���(������������ ]��� $SafeCurrent������� Z�.��������������]C�B�������������� Z������������ ZX]�������������� Z|]��������������� Z ��"����������� Z\]���������������������������������������������������������DFCC4D0z��,�����%��$��gSopen the flux window~�����������^���������V���Svar�_���������j������N���<����$�XS6wait for Cache Manager to finish scanning output files0e �@���.����R�����S(While (Test semaphore("$CM_OutputScan"))���8���&����¶���gS!DELAY PROCESS(Current process;10)sc�"����������gS End while 8 o�������������T���B����,��S<mark all tables as read only, then set one table as readable������� ����������g����e �"�������l����@�@��� ������"�������:��� @�/@��� ���� �:���(���������@@�L@��� ����@���������������"������������@�D@��� ��� @�,������������@�� ��~@�@��� �����"�������*���@�5@��� ��� @��������H��� @�"�����������@�2@��� ������P���>�����������@�@������ @Run_Critical_GetRunN;@�@��������������������� ����M�(��������������Ssetup the window���&���������� @�Cw�lDefault��h�6���$����������[@�7@��� ���w�lOHT fun���� ��������������� @myWind�~@�#@ Toolbar_Width�@�@���������~`@�?���������~`@�?��������$@�"��w�l Ocean Fluxes~�w�l Generic_Close������������������� @���� ������� @F@B�ca�$�������������(@ @myWind����������������lj @������������ll@���(��������0001@�9@��� �����07�0�����������EMak @ @OK �@������������ll���������^�0001 @�4���"��������EMak#@Flux_ProcessIDz~@������������~������������������DFCC4D�rq�V���D���� ��"0<Check that the start date is ok because fools are so clever z"�T���B����������"0;If people pick a start date after the end date then fix it ""��������������v�*��������������rrr�r@$r��rr�:���(��������me_t�� ��rr� r rStartr rStartrrr���,�������.M3r Start�r@ rEndrr���$�����������t th Endr rStartrI�:���(�������������� ��rr� r rStartr rStartrrr��������������?O����������"P�����DFCC4D�,�r���`��'0��&0��gSQopen a full window with the parameters, autodetection of section type is done as Swell am���� ��������S input���(�����������S section number��P���>�����������S8 * optional parameter, means to use this number instead�t�2��� ������������ @��@currentSectionz����*�����������)))%@ @ SectionNumber��,�����������@ @SectionPictText��*�����������0001@currentSectionz^ @�00�������������EMaker�V���D������������@ @ItemListI�@currentSectionzo�@������������wO8text^����������������������� ��������Ssetup�D���2�������� @InfoText_FullLoadSection@currentSectiono��6���$�������� @ SectionNumber^@currentSection^��������������"�����������S show window�2��� ��������@�7@������w�lFullText���n���\�����������@wind�^@@������w�lFullText��$@�'��#@ Toolbar_Width�@�@������������2��� �����������@�(@������w�lFullText���"��������������@�@wind����������������������$�����������S save changes�B���0�������� @InfoText_FullSaveSection @ SectionNumber�� ��������������@�� picture�������������������� ��������Ssetup�.�����������@@�@�?���������p���^��������) @ SectionNumber^@currentSection^�^`@�?���������@�@��������^�@�?�������������������111@���(����������� @ SectionNumber^ @�������������)@�T���B��������) @InfoText_FullPrevNext @ SectionNumber�@��������������������������"��������S show window�2��� �����@�7@������w�lFullPict���n���\�������@wind�^@@������w�lFullPict��$@�'��#@ Toolbar_Width�@�@������������2��� ���������@�(@������w�lFullPict�����"������������@�@wind��������������“�$������������S save changes���H���6�������� @ ItemCaption� @ SectionNumbero^ @SectionPictText�����������������0��������Sreset the figure captions�.��������(, @InfoText_UpdateFigLabels(,���������618@����������������������������������������DFCC4Dq�4���"����U��"0Do update of current date �"� �������U@Vi"0 input "@�8���&����U ~"0 ptr to run number to update @"����������UQ"�,������������d�d-@ �@runPtr@@@�&����������@curRun@@@�(������������1@ wasLocked@@�$������������runPtr@@ @�@ ���������Q@�4���"���������"0set record and table state "�0������������curRun@@@�@@�����@@��*���������x��@�@�����@@@�$��������Ip�@�����@@a�$����������3�@�����@@ �&�������� wasLocked@@�@����������������*������������@:@�����@@@d �$������������8�5@�����@@[��������p������&�������p؁ wasLocked@@�@��������p�d�d�2��� ����p���@�����@runPtr@@@@un��������p���@[�$�����������ckin"0 do update t"Nj�4���"����;GP���� Simulation_UpdateCurrentDate� s��������;GP�d�d a�4���"����;GP�d�d"0restore record and table �"D�&�������;GP��m@ wasLocked@@rs�$�������;GP����@�����@@K�$�����������_typ�@�����@@ ��������ݐ�d�d �0����������������@�����@curRun@@@th����������������DFCC4D4 �\���J���������d�d"0CChoose an application for use, places the path into the ptr passed " � �������0����"0 input "��,������������d�d"0 ptr to a string ^"�"����������"0 output "st�B���0����������"0) path to the app is placed into the ptr "�(��������������2 vhDocRef@t �,��������������- �pathPtrP�$���������������pathPtr �e)�����������������2��� ����������"0get path to app and save "�F���4���� ����� vhDocRef@x��x�APPL$���d���R����$5p���� OK"�@�?��������@� Document@�@�@���������.���������������pathPtr Document@���$���������������5�����g ��������)P��������������������������������������������������������DFCC4DzN^�=�:���(�� �� �� �7d!decriment the section and load it����<���*�����������] � SectionNumber�.�����������������D���2����������� ]InfoText_FullSaveSection� � SectionNumber���@���.��������o I.]w%go back until a text section is foundw"�H���6������������ ] SectionNumber. � SectionNumber�����?�����������L���:��������p ] �ItemListI � SectionNumber.����������������he�D���2��������� ]InfoText_FullLoadSection� � SectionNumber��um�������������]]ut������������������������������������������������������DFCC4D_�=�*�������������"0open preferences "�h���V����������� Generic_OpenReopen???#Pref_ProcessIDK?x� Pref Window?x� Pref_ProcessK??������������������������DFCC4D3��2��� ��$��#��Lopen the preferences windowDT�������������w�����4���"��������you must be an admin to enter���,�������2����^ �UAM_Authenticate��T���B����z�<mark all tables as read only, then set one table as readableA���� �����^����"�����������^���������"�����������0001^�/�������00�:���(��������EMak^��L����������������������"���������������^�D����������"�����������^�5�������������������^�"�����������^�2��������������������ӡ�(���������������setup the window��&�����������^�C�Default��4���"��������^�7��������Prefs��������������� ^myWind���#� Toolbar_Width���@��������#� Toolbar_Width����@����������@�����������@��������$��"��� Preferences�� Generic_Close����� ��������r^F�B��$���������������^ �myWind��������������������������������������^���(�������������� ^�9������������0����������� ^ �OK������������������������������6���$��������#^Cleanup_ProcessID������������\m���������^��������������������������������������������������������������DFCC4D�X���F����������"0>Use semphores to do a safe save of the current journal record "���V���D������������"0=from any process. Remember to, "Always practice safe save.", "Ru�B���0�����������Q"0)modeled on code from Safe_SaveSimulation "��������cuP���"�T���B������������"0;first the easy case if I'm in the InfoText process already " S�8���&�������� ��YB�Y@#InfoText_ProcessIDYYY���<���*������������ InfoText_SaveRecordY�����������YY���������������������@���.������������"0'try to safely save in the other record "�6�~���l������������YY#InfoText_ProcessIDY�Y@Y�����������Y�Y@YYJY#YInfoText_ProcessIDYY�Y@Y�@�������YYY���6���$������������#InfoText_ButtonYY�@�������Y�2��� ������������IY#InfoText_ProcessIDYYY"���������������r@�0���������������CYBY�@�������YYe��@���.������������ YYx�$SafeSaveInfoTextY�Y@�YY�0���������������CYBY�����������YY����������c\Yj����������c\@Vin���������������������������������DFCC4D,�,B�X���F��'A��&A��gS@Use semphores to do a safe save of the current simulation record�LP�R���@����,�(S;from any process. Remember to, "Always practice safe save."���������������������H���6��������S0first the easy case if I'm the simulation thread����X���F��������TAT #Simulation_ProcessID87 @Process_Number7w�lSimulation Window�0:�8���&��������@@B�#@Simulation_ProcessID=��*��������������� @Simulation_SaveRecord���������������000100�f���T��������EMakSNthe hard case is if I'm not the current thread, check if there is a simulation f����������������@������n������������@#@Simulation_ProcessID(�7@��������������@J#@Simulation_ProcessID(����@�@����������f���T��������dSOtell Simulation_Process to save the record and wait until the save is completed �,��������������#@Simulation_Saved7@����2��� �����������@I#@Simulation_ProcessID(����4���"�����dShack for pc, this is unsafe!!���2��� ���������@#@ PM_Platform�$@��������������@���@���.���������������@C@B�@�@�����������V���D������������ @@w�l $SafeSave��@����#@Simulation_Saved �����.������������ @C@B�@�����������������������������@������������������@��b���P������������SJdon't need to save because there is no simulation or process is paused ������������������@���������������L@������������������DFCC4D8 }�(�����&\��%\��gSClose any window�TX������������ ��S������ �����������S input������ ������������S none���"��������������@windP����(��������������@@ windProcess���������������������� ���������������@windP^@��2��� �����������@@windP�^@���������������2��� ������������@ windProcess^@@windP����8���&������������@@ windProcess�^@���������������4���"������������ @ Generic_Close@ windProcess�������������������@���������������L@������������������������������������DFCC4D ';�������������d�d"" �*������������d�d"""�"$"��""���D���2���������d�d""""#" JournalArrayD"�"J"J����������""`�<���*���������d�d""#" JournalArrayD�"J"J����������""���4���"���������d�d#" JournalArrayD""J?�������"�������������d�d""���\���J���������d�d#" JournalArrayD""J����������""#" JournalArrayD"#" JournalArrayD""ow�2��� ���������d�d"I"#"InfoText_ProcessID�""�������������d�d""���������������d�d""am����������������������DFCC4DL�f �X���F��'��&��b$Areset the current date for all records, this is special code thatLP�D���2����������b$-should not be used in release copies of EdGCM�����������������b$������� �����������b$ input ���� �����������b$ none p_���� ��������TAT b$ outputMM���� �������� b$ none k_�"����������������/ @���������"������������@�2 @��������������������TAT @ �&����������� @�����������23�"����������� @�5 @������d �"�����������H2M1@�3 @��������(����������� @ @�$ @���������#@VersionOfEdGCM�e��������������������������������DFCC4D9��r���`��'��&��b$QProgramer hack to fix the database fields in the AIJ table, and should never be cb$alledam�(�������������Ob$from normal code. @������������b$������� ������������b$ input ������ �����������b$ none ���� �����������b$ outputp_���� ��������TAT b$ none MM�"�����������:04.�/ @������22�"���������������@�2 @���������@���.��������TAT @ @item��@�?��������@�@��������un�&�����������:04.@����w�Jean �"�����������@�5 @�������"�����������@�3 @���������������������@����������&����������� @��@�?�����������������������@���&����������� @��@�����������������������@������������������DFCC4D/ �,�3�x���f�� �� ���8Qset the ocean transport menu to match in the otspec files in the folders in Input�8s Ocean o��z���h���������8Qthis is more complex than the original behavior and causes some additional comple�8 xity for r����H���6���������8.simulation_ocntransmenu and setup_setupfolder ���� �������.�����8 input ����`���N���� �����8G ptr to var for otsp name (unused, uses otsp_files variable directly) �IC��������� ��[�$�������� ��8 local var <����,�������D� �(- (�(otspPtr�r�B���0�������� �(%(�@�������(path� (otspPath����6���$�����������((i(j(len(max���*�������D����(1( useDefault����$�����������(otspPtr (�()�(�����������lt�( useDefault�(�(���������������k�e([�"�����������MUTX�8 menu var ����*���������������(�Y ( otsp_files�B�H���6�����������(�(�@�������( otsp_fold(��������������J���8�����������(�(�@�������( otsp_maybe�(�����������C���������������"�"������������8 file var �ST�8���&������������( (menuPtrA�(�?����������6���$��������vH( (curPtrA(�?����������D���2����������� (menuPtrA�(�?������� ( otsp_files�(RO�<���*��������{{ (curPtrA(�?�������(����(��������������{{("�x���f��������{{�8Qif the ocean mode is qflux or deep ocean then do the otspec menu, otherwise don't�8 bother c�AR�Z���H��������{{((�����p(������������p(�����p(�@��������%�$�����������{{�8 clear menu �UM�*�����������ww(�Y ( otsp_files�(�,��������enWi(�Y ( otsp_folders����J���8������(�(�@������� ( otsp_files�(��������������L���:�����έ(�(�@������� ( otsp_folders�(�����������ǰ����t���������� (FileListByType���Input Types OTSpec(( useDefaultT(� (otspPathl (menuPtrAl (curPtrA������������������((��������������������������������������������������������DFCC4D�VlV�4���"�� L�� L����8Alright, a recusive name, ���D���2������������8+This creates the html files for each image �� ���������������8 input ����H���6��������� ���8. number of images so far, including this one ���8���&�������������8 place in array of this image ����*����������������8 path to image e����T���B������������(e (�e (�e (�e( imageCount�e(pictNume(listRefee]�^���L������������(%e(�@�������e (�e (�e( imagePathe(htmlpathhe(docPathee���&���������������(2e(docref�ee���(�����������( imageCount�e (�(T�$�����������"(pictNume (�(��$�����������(listRefe (�(��&������������( imagePathe (�((�&������������(htmlpath�e (�(����������BB(�N���<������ (htmlpe (GetListItemStr�e(listRefe(�@��������ee���P���>�������� (html�e (html��e�@���Figure �e�@(� e( imageCount�ee���Z���H��������� (htmlee (htmle�e�@ (GetListItemStr�e(listRefe(�@��������ee���B���0����������8)html:=html+"Figure "+String($imageCount) ��Z���H�������� (html�e (html��e�@ (GetListItemStr�e(listRefe(�@�������ee��*������������8image & caption e��������������� (html�e (html��e�@���<center>��e�@���Figure �e�@(� e( imageCount�e�e�@e�: �e�@ ( ItemCaptione(pictNume�e�@e� </center>e���Z���H��������� (htmlNe (htmlN�e�@ (GetListItemStr�e(listRefe(�@�������ee���6���$�������� (html�e (html��e�@( imagePath(���Z���H����� (htmlee (htmle�e�@ (GetListItemStr�e(listRefe(�@�������ee o�"��������7����8 end page ��Z���H��������� (html�e (html��e�@ (GetListItemStr�e(listRefe(�@�������ee���������������e(�8���&����������8covert text to web compadible ����.������������ (html�e(e (html�ee���������������e���$�������������8 write file �m�z���h������������(docPathe ( PM_MakePathe(htmlpathaee�imageno�e�@(� e( imageCounthe�e�@e�.htmee(�ee���2��� ������������(docref�e( e(docPathee���6���$������������(e(docref��e@(�?�������eeup�2��� ������������(docref�e(e(docPathee������������������((���8���&������������(e(docPathe ( HTML_Browser�eeC�0��������������0(�ge(docref�e (htmleee���&���������������( e(docref�ee������������ffe[������������������������������������������������DFCC4DZs�X�(�����&b��%b��gSdo the averaging�TX���� ����������S input�{� �����������S <none>7������ ������������S output���B���0��������S+ true is validate succeeds otherwise false������ �������������1 @������<���*������������@-@ ProcessedPtrr�@ DiskFolderPtr����������������������D���2������������@ @PostProcessing_Validate@�?������������"���������������S do average8���&�����������d @��7 @ SumAndPd2.I��0���������������Supdate lists and buttons����^���L��������@���@ ProcessedPtrr7 @PostProcessing_TypeListEmpty� @ start_lbprt�@�����D���2������������@ DiskFolderPtr7 @PostProcessing_GetYearFolder���@���.������������@�@ DiskFolderPtr��@ ProcessedPtrr�����2��� ��������>� @PostProcessing_EnableButtons�����������������@������ ��������D @��7@�����������������@L ��DFCC4Dx���p���^��'��&��`DQCopy files from the time series folder in postprocessing into a new folder in plo`Dtspfn�F���4������������% @�@��������@ foldernamef�@filename$����6���$������������@% @�@��������@destpath$����4���"����x����@% @�@��������@srcpath�� ��������������@ @len�me�8���&������������@� @ aj_enableda�@���������������N���<���������� @� @�@��������@aj_fileextension<�@�������������e��������������t�p�a��������������$�f�i�.������������� `Dcreate the folder name� �f���T���������t�p@ foldernamef@������w�_��@�  @�������w�-��@�  @������)��������������$�f�i�B���0������������`D+create paths and create folder if necessary���F���4������������@srcpath @ PM_FindFolder w�postprocessing����P���>��������d@srcpath @ PM_MakePath @srcpath�@ foldernamef�@�� �>���,������������@destpath$ @ PM_FindFolder w�plots���T���B������������@destpath$ @ PM_MakePath @destpath$�@ foldernamef�@��PI�8���&������������@ @ @destpath$��$@������&���������������@ @destpath$����������������L@�����������~��������"�������~�����`D copy files���R���@����~�����@ @�����@ aj_enableda�@�����@aj_fileextension<����0�������~�����@len@ @ aj_enableda����4���"����~�����@ @i�@�?��������@len����*�������~�� @@ aj_enableda�@i������t�����������@filename$@������w�_��@� @aj_fileextension(�@i�w� �w���wXremove trailing spaces���J���8�����������@ #@ PM_Platform�$@���wXpc files end in xls���:���(�����������@filename$@filename$��w�.xls��������������..@..�L���:������������`D4don't overwrite files, but copy if not already there���^���L��������@ @ @ PM_MakePath @destpath$�@filename$�@����$@����~���l��������@ @ PM_MakePath @srcpath�@filename$�@��� @ PM_MakePath @destpath$�@filename$�@�����2��� ��������@ #@ PM_Platform�$@���))�,������������%`Dretype files for eva�X���F���������@ @ PM_MakePath @destpath$�@filename$�@���w�TEXT����X���F���������@ @ PM_MakePath @destpath$�@filename$�@���w�EVA_����������������@���������������@���������������@���������������@��������������������������������������������������DFCC4D@�d�,�����"��!��,�7dUAM_PasswordKeydowns���P���>������������7d9A copy of the usual code to allow for a password validate�r���`������������7dQgeneric code to handle password field you need to set vActualValue to the passwor�7dd and���z���h�������������7dQvPswd to a string of # equal to the length of the password plus vlastPosition to �7d the length of���"����������������7d the string.���������������000100������������EMak] S�(���������������]���$�������F���4��������� �]� tempStringt� �vPswd2� � vActualValue2�� �,��������������] �vlastPosition2@����(�����������] tempStringt�����^���L�������� ]vPswd2�����5 The user will only see the content of this variable.�Z���H�������� ] vActualValue2����* The actual text value that user typed in.���4���"�������� ]vlastPosition2@�������������(�����������111]���$�����&�����������] tempStringt��D���2�����������]��� tempStringt�� �vlastPosition2@����<���*�������� ]vlastPosition2@��� tempStringt����$����������� ]vPswd2������@���.��������]�i���?�������� �vlastPosition2@��b���P�������� ]vPswd2� �vPswd2����+probably want to make a platform check here������������]�<���*��������] �vlastPosition2@���?���������n���\�����������] tempStringt��� tempStringt���?�������� �vlastPosition2@�����?���������������������sss]�F���4�������� ] vActualValue2 � vActualValue2��� tempStringt�(���������������]wclear on delete���$��������������� ]vPswd2��������*��������������� ] vActualValue2�������4���"������������ ]vlastPosition2@������������������������������]������������������]��������������������DFCC4Dn�*������������d�d PAUSE_PROCESS ()���������������d�d�����B���0���������d�d) Typically used as a close box procedure.�D���2���������d�d+Adds in support for proper record handling.�������������d�d�$������������d�d�5�����5� ������������d�dDB� ������������d�d?B��������������d�d�,������������d�d End of procedure.�?������������������������DFCC4D>&�,�:���(��^�� ^����8 Twist_Down_Update(String Group) l����\���J���������8Ball that this method needs to know is the group which has changed (��Z���H������������8Athen it can go down and set all the groups bellow it accordingly ��N���<���������85this updates the twist down group box user interface ����^���L�������������8ENOTE VERY important this method should only run if a twist down box ����Z���H�������������8@that was passed to it has changed state otherwise it will cause ��ge�2��� �������������8undesireable preformance �������������������"���� �������������8var ����� ���������������(" (�""�*���������������("( ArrayIndex�""�&���������������("(Counter""h�h���V�������������8Othese temporary variables hold the cordinates of the contents of the group box �h�f���T�������������8Lthis allows the method to calculate the highet of the contents for resizing ����*����������������8C_INTEGER($top) "����,����������������8C_INTEGER($bottom) ����*����������������8C_INTEGER($left) ����,����������������8C_INTEGER($right) ^���&���������������("(height�""���J���8������������(%"(�@�������"(temporay_stationary_objectt""�R���@������������(%"(�@�������"(temporary_group_name"( backgroup""h�T���B������������(%"(�@�������"(temporary_reserved_name"(backnamey""���*���������������(1"( Open_Close�""������������������"� ����������������8setup ����(���������������( ArrayIndex�" (�(h�*���������������(top"(�����������(h�.���������������(bottom�"(�����������(���,���������������(left�"(�����������(�r�,���������������(right"(�����������(�.���������������(height�"(�����������(������������������(� ����������������8begin ��GR�2��� �������������8show/hide relevant group �ti�J���8������������("" ( Group_State"( ArrayIndexe"�"@ (Openy"""�,���������������( Open_Close�" (Open_(�����������������((v�.���������������( Open_Close�" (Closedl(���B���0������������(\_t' If ((Group_State{$ArrayIndex}=Open)) \����������������\���X���F������������(temporary_group_name" ( Group_Nameg"( ArrayIndexg"�"�@"�@" ����������������(temporary_reserved_name""�z�"�@ ( Group_Namer"( ArrayIndexr"�"�@"�_Dthe objects that are not suppose to move have a z in front of them "������������������[�`���N�������������8Gthis check detirmines if the method is resizing the group boxes bellow �R�D���2�������������8+the group box that was opened or collapsed ��F���4�������������8-if it is true then it modifies the group box ����N���<�������������84if it is not true it adjust all the boxes bellow it "�����������������������b���P�������������8Hget the height of the elements inside the group box for later reference �o_�\���J�������������8CGET OBJECT RECT(*;$temporary_group_name;$left;$top;$right;$bottom) ����v���d������������(height�" ( Group_Height�"( ArrayIndexh"̔.this calculates the height of the object ������������������[�4���"������������("( Open_Close��"@ (Open_""���8���&�������������8This part opens a group box ����<���*������������(height�"(height��"@(�@�������(Da�:���(������������( backgroup"(temporary_group_name(um�<���*������������(backname�"(temporary_reserved_name(th����������������([�0����������������8adjust the array index �T�D���2������������( ArrayIndex�"( ArrayIndex��"�@(�?�������(���@���.������������("( ArrayIndex��" @ (Number_of_Groupsr""?����������������"���:���(�������������8 adjust the rest of the groups l��J���8������������("(Counter"( ArrayIndex�" (Number_of_Groups""�T���B������������(temporary_group_name" ( Group_Nameg"(Counter"�"�@"�@"�4����������������(temporary_reserved_name""�z�"�@ ( Group_Namer"(Counter"�"�@"�_@Dthe objects that are not suppose to move have a z in fornt of them "���j���X�������������8Qthis are of the routine adjusts the group boxes bellow the group box that was co �d�v���d������������("�"@"(temporary_group_name"(�����������"(height�"(�����������"(�����������""�x���f������������("�"@"(temporary_reserved_name"(�����������"(height�"(�����������"(�����������""nf�L���:������������(\_t0For ($Counter;$Start_GroupBox;Number_of_Groups) "\���>���,������������(\_t#For($ArrayIndex<=Number_of_Groups) \������������������\7d����������������\(�:���(������������(temporary_group_name"( backgroup(���<���*������������(temporary_reserved_name"(backnamey(fo����������������((�4���"�������������8this opens the arrow �������������������(temporay_stationary_objectt"(temporary_reserved_name�"�@"� Closed_ArrowˬQtemporary_stationary_object is set to the name of the variable containing the ar ���F���4������������(["�"@"(temporay_stationary_objectt"(�""T�b���P������������(temporay_stationary_objectt"(temporary_reserved_name�"�@"� Open_Arrow>"��F���4������������(["�"@"(temporay_stationary_objectt"(�""he�`���N������������(temporay_stationary_objectt"(temporary_reserved_name�"�@"� Mode_Menu"���F���4������������(["�"@"(temporay_stationary_objectt"(�""���`���N������������(temporay_stationary_objectt"(temporary_reserved_name�"�@"� Group_Box"T�8���&�������������8changes group box to full size �_E�|���j������������("�"@"(temporay_stationary_objectt"(�����������"(�����������"(�����������"(height�""�v���d������������(["�"@"(temporary_group_name"(�"|1this shows the group that contains the variables at�|���j������������(�"�"@"(temporary_group_name"(�"|7this makes it so objects in this area can be accesseed ���4���"������������(\_tIf ($Open_Close=Close) \����������������\��6���$�������������8this part closes a group box ����R���@������������(height�"�"@(�?��������"@(height��"�@(�@�������(���v���d������������(["�"@"(temporary_group_name"(�"|1this hides the group that contains the variables ������n������������(�"�"@"(temporary_group_name"(�"|;this makes it so objects in this area can not be accesseed ������������������(�6���$�������������8this closes the arrows �������������������(temporay_stationary_objectt"(temporary_reserved_name�"�@"� Closed_ArrowˬQtemporary_stationary_object is set to the name of the variable containing the ar .�F���4������������(["�"@"(temporay_stationary_objectt"(�""�b���P������������(temporay_stationary_objectt"(temporary_reserved_name�"�@"� Open_Arrow>"�L�F���4������������(["�"@"(temporay_stationary_objectt"(�""���`���N������������(temporay_stationary_objectt"(temporary_reserved_name�"�@"� Mode_Menu"�J�F���4������������(["�"@"(temporay_stationary_objectt"(�""ld�`���N������������(temporay_stationary_objectt"(temporary_reserved_name�"�@"� Group_Box"������������������("�"@"(temporay_stationary_objectt"(�����������"(�����������"(�����������"(height�"`collapses the group box g� ����������������(�0����������������8adjust the array index ��6�D���2������������( ArrayIndex�"( ArrayIndex��"�@(�?�������(�@���.������������("( ArrayIndex��" @ (Number_of_Groups""����������������"(�:���(�������������8 adjust the rest of the groups l����J���8������������("(Counter"( ArrayIndex�" (Number_of_Groups)""x�T���B������������(temporary_group_name" ( Group_Nameg"(Counter"�"�@"�@"����������������(temporary_reserved_name""�z�"�@ ( Group_Namer"(Counter"�"�@"�_@Dthe objects that are not suppose to move have a z in fornt of them "���j���X�������������8Qthis are of the routine adjusts the group boxes bellow the group box that was co �sh�v���d������������("�"@"(temporary_group_name"(�����������"(height�"(�����������"(�����������""�x���f������������("�"@"(temporary_reserved_name"(�����������"(height�"(�����������"(�����������""n@�L���:������������(\_t0For ($Counter;$Start_GroupBox;Number_of_Groups) "\���>���,������������(\_t#For($ArrayIndex<=Number_of_Groups) \������������������\(�0���������������(\_tIf ($Open_Close) \�����������������\2����������������\(��������������������������������������������������������DFCC4DR�x�H���6��^�� ^����8/handle the external buttons set in the toolbar ����8���&������������8or elsewhere in the interface ����&��������������((listRefEF�������������d�d(������������(( �(������������8create new set �(�Z���H�����������(#(PostProcessing_Button�@(�@�������=pcreate a new set lo�0��������������� (PostProcessing_SetCreateP(��4���"�������������8extra space for new pages ���V���D������������(#(PostProcessing_Button�@(�@�������=p Set the set \fo�.��������������� (PostProcessing_SetsSet�(���h���V������������(#(PostProcessing_Button�@(�@�������=psave the postprocessing record h�$���������������(�5(�����er�0���������������((��� $PostSavera����������������((in�l���Z������������(#(PostProcessing_Button�@(�@�������=p#end save the postprocessing record R�*���������������(���� $PostSave������������������(( �D���2������������(#(PostProcessing_Button�@(�@�������T�<���*������������#(PostProcessing_Button(�����������(������������������((�>���,������������#(PostProcessing_Button(�(�����������������������((������������������������������DFCC4Dq��JV�<���*�����v WebAndMailLauncherww�@�������ww��������������������������������������������������DFCC4DTFQH ������&\��%\��g�<�.���������������@� @ pTimeSeries����@���.����������� @PostProcessing_SetTable�@������@���(�����������0001@@� @pMaps�07�@���.��������EMak @PostProcessing_SetTable�@������@���u�,���������������@@� @ pVertical����@���.����͸�0001 @PostProcessing_SetTable�@������@��13�*�������͸�EMak@@� @pZonal�� I�@���.����͸����� @PostProcessing_SetTable�@������@�����*�������͸����@@� @pTables����<���*����͸����� @PostProcessing_TablesClearFill>@������������͸�ϰd@������������������������������DFCC4D��|-�f���T��'A��&A��gSOGetYearRange determines the maximum number of complete years worth of acc filesZ�p���^����$����SQfor the current run based on the current contents of the acc folder (not the cachSe).���`���N������������SHThis code detects any gaps in acc files that in old versions (2.0 & 2.1)���h���V�����������SPmight cause a year range to fail. Records are ordered by month/year (see Finder)�Z���H�����������SCand then checked over to see the range for each month. The name is:�*�������2�0001SDEC1901.accControl00�d���R����2�EMakSLmonth (3 char), year (3 char), .acc (4 char), run number (20 char) = 30 char@4D�f���T����2�����SOAn array is used to cache the values from the db, this takes as much as 400K if���h���V����2����SPthere are 1000 years of acc files. The acc names are assumed to fit into 31 char�o�&�������2��c�hSto save memory.�h���������2��t�h����� ���������s�tS output��R���@���������=�S: ptr to array[1..2] of longint (first year and last year)�s�:���(����������{�� @ FirstAndLastr�@�@�����������0������������w�h@%@�@���������@mon�� �4���"���������1�)@%@�@��������@accname��e�B���0���������r�s@@yeara�@curmone�@len�@i�@j�� �4���"���������� @�@firstse�@�@����������2��� ��������� �@�@lasts�@�@����������$�������������@1@missing������ ���������n�@- @����<�D���2������������@�@�@���������@months��@���������������F���4��������O� @�@�@��������@accNames$�@���������������4���"������������@%@�@��������@accPath�������������������������� ������������Ssetup���B���0������������@@curmonh�@�?��������@�@�����������:���(�����������A@firsts��@curmon�-@������������8���&������������@lasts�@curmon�-@���������������������������@���2��� ������������@ w�lMonths�@months�����:���(������������@accPath- @ PM_FindFolderw�lacc����������������������6���$������������Sloop over records in acc folder�J���8������������@ @PM_DocumentList@accPath�@accNames$�����&���������������@�@accNames$�����������������������.���������������@len-@@accNames$����,���������������@curmone-@�������������� ���������������@mon-w�l�-���&���������������@i-@�?�����������������������������&�����������SFor ($i;1;$len)�&���������������@@i� �@len����2��� ��������@accname-@accNames$�@i�R���@�������� @accstart$-@� @accname�@�?��������@�@���������)��,����������� ))Sis the month the same �.��������������@@accstart$�@mon��V���D������������@yeart-@� @� @accname�@�@��������@�@������������D���2������������S,only incriment the year if it is consecutive���P���>������������@@year��@lasts�@curmon��-�@�?������������R���@������������@lasts�@curmon�-@lasts�@curmon��-�@�?�������������������������@���4���"������������@�� check if it's a legit month���L���:������������@mon-@� @accname�@�?��������@�@������������6���$����������0@year�-@�@months��@mon���|���j������������@@yearh�-@��������������_@year��wl@�@��������wO8#if it's a new month setup the month���V���D������������@year�-@� @� @accname�@�@��������@�@������������:���(������������@curmon�-@curmon��-�@�?����������^���L������������@@curmon��wl@�@��������wO8$ensure that there are only 12 months-���4���"������������@firsts��@curmon�-@yearo���2��� ������������@lasts�@curmon�-@yearo���J���8������������@�� 0bogus files also ensure that years aren't listed-���0���������������@i-@len�-�@�?����������>���,������������@firsts��@�?�������-@�����������������������������@���$���������������@�� bogus file ��� ���������������@mon-w�l�-������������������@������������������@������ ������������SEnd for���.���������������@i-@i�-�@�?�������������������������@������������������@����������������������f���T������������SOcalc first and last year by looping over years, fails if any months are missing���R���@������������ @ FirstAndLastr�@�?�������-@firsts��@�?����������P���>������������ @ FirstAndLastr�@�@��������-@lasts�@�?����������B���0������������@@curmon��@�?��������@�@�����������j���X������������@@firsts��@curmon��-@������������wO8"update first and last if necessary@���V���D������������@@firsts��@curmon��- @ FirstAndLastr�@�?�����������N���<������������ @ FirstAndLastr�@�?�������-@firsts��@curmon�������������������@���T���B������������@@lasts�@curmon��wl @ FirstAndLastr�@�@������������L���:������������ @ FirstAndLastr�@�@��������-@lasts�@curmon�������������������@���>���,������������@�� %leave if there are any missing months���D���2������������ @ FirstAndLastr�@�?�������-@��������������D���2������������ @ FirstAndLastr�@�@��������-@��������������,���������������@curmon�-@�@�������������������������@������������������@������������������������� ������������Scleanup���*��������������� @��- @ FirstAndLastr����������������������������������������������������������������DFCC4DI9��2��� ����������� � FinderToPathn \�Input  ��������������� (������������������������������������DFCC4D0)��4���"����������� � FinderToPathn \�Output  ��������������� (����������������������������������DFCC4DR�, �.�������������� � FinderToPathn \�  ����������������� (����������������������������������������DFCC4DD�M'a>�B���0��%k��$k��gS+restores the settings in the postprocessorspt�L���:�����������S5pass in three pointers to arrays to settings, get outr��<���*�����������S%correctly set postprocessing settings��<���*����J����^- ��� ��� ��� ��� ��� ������r���`����J�����^-� tablesPtr�� timeSeriesPtr�� mapsMonthsPtr��mapsPtr�� slicesPtr��zonesPtr$����$�������J�����^ tablesPtr �����(�������J�����^ timeSeriesPtr �����(�������J��Q�u^ mapsMonthsPtr ���=�"�������J��c�e^mapsPtr ���A�$�������J��l�e^ slicesPtr ����$�������J�����^zonesPtr$ �������������J���;��&�������J��t�eSrestore tables� �<���*����J��i�m^����� tablesPtr���������������l�<���*����J��P�t^����� tablesPtr����?���������<���*����J���^� ���� tablesPtr����@����������<���*����J��U�S^� ���� tablesPtr����@����������<���*����J�� �t^� ���� tablesPtr����@��������i�<���*����J���:^� ���� tablesPtr����@���������<���*����J��a�r^� ���� tablesPtr����@���������<���*���������d�^����� tablesPtr����@��������R�<���*����������^����� tablesPtr����@��������T�<���*����������^����� tablesPtr����@���������<���*���������� ^����� tablesPtr����@��������i�<���*���������[�P^����� tablesPtr����@��������=�<���*����������^����� tablesPtr����@���������<���*���������Q�u^����� tablesPtr����@��������o�<���*���������c�e^����� tablesPtr����@��������A�<���*���������l�e^����� tablesPtr����@��������(�<���*�����^����� tablesPtr����@��������������������^�N���<�����S7restore time series, make sure to unmark unseen records�H���6�����^�������� timeSeriesPtr��� time series��2��� ���������^���������AJ Clear����H���6�����^�z�All AJ �� time series��AJ Clear���(������������^�v�AJ Clear��th�0������������^��"��$����������� ������������^��������"������������^�5��������"�����������^�3�������jk�������������^�v�(������������^�u�AJ Clear�����*������������^�v� time series����2��� ���������^�1��������������`����*���������������^�u� time series��������������������^�0���������������Srestore mon/quar/seas/ann���@���.������������^����� mapsMonthsPtr�����������������@���.������������^����� mapsMonthsPtr����?����������@���.������������^����� mapsMonthsPtr����@�����������@���.�����������^����� mapsMonthsPtr����@������������������������������$���������������S restore maps���<���*�����������^��������mapsPtr���maps!����2��� ��������^��������� AIJ Clear����B���0���������^�z�All AIJ��maps!�� AIJ Clear����(��������kb^�v� AIJ Clear�b�0��������������^��"��$������������ ��������������^���������"��������������^�5���������"��������������^�3�����������������������^���(�����������^�u� AIJ Clear��$�����������^�v�maps!��2��� ��������^�1��������������`���$�����������^�u�maps!�������������������&�������*�Srestore slices��@���.����*�^�������� slicesPtr���slices`��2��� ����*� ,U^��������� ajk Clear���D���2����*�>^�z�All ajk��slices`�� ajk Clear����(�������*�^�v� ajk Clear���0�������*����^��"��$���������� �������*����^���������"�������*����^�5���������"�������*�^�3����������������*����^���(�����������^�u� ajk Clear��&�����������kZ^�v�slices��2��� ��������j^�1��������������`�k�&�����������kP^�u�slices�k�������������kS���$�����������kTpS restore zones�>���,��������kY^��������zonesPtr$���zones�k�4���"��������k\^��������� alat Clear��[�F���4��������k]^�z�All alat���zones�� alat Clear���*�����������kXl^�v� alat Clear����0������������^��"��$����������� ��������????^������==�"��������������^�5���������"��������������^�3�����������������������^���*��������������^�u� alat Clear����$��������������^�v�zones����2��� ��������^�1��������������`��$�����������^�u�zones�����������������������������������DFCC4DBC�2�h���V��'��&��b$Qcalculate the amount of space avalible, converts from bytes as a real to MB or GBfs�$�����������h$��b$ as an integer�����������������b$������� ����n����b$ input�.��������������b$ space in bytes (real)����� ������������b$ output���4���"������������b$ string of space as MB or GB���������������g{�����(�����������  @��@space�2 �.�����������00.0@% @�@�������� @���1.� �����������29.9@space @�? ��������������������6���$������������@space@space�@�@����������2��� ������������@ @space�@�@ �������������������������� @��@�  @� @space�@�@ �����������w�.��@�  @� @�  @space�@�@ ���������@�@�����������w� GB������������������@���<���*������������ @��@�  @� @space����w� MB������������������@��DFCC4DP*�e�"�����'��&��b$ DEPRECIATEDrf�D���2��������scalb$-Show or hide the bottom of the contols window���^���L��������b$GHas groups so that things are hidden or shown on all tabs. Unused since���8���&���������b$!the control window is never show.�����������scalb$�od���� �����������b$ input th���� ��������b$ none ���� ����h�TAT b$ outputMM���� ��������TAT b$ none MM�B���0��������| @WLeft� @WRightD� @WToph� @WBoth���������������|����������|@��(�����������|@ @�8$@����B���0��������TAT @ @WLeft� @WTopt� @WRight�� @WBoth�ch�F���4�������� ?? @ @ zDisclosure�8@�?��������wXshow allps�T���B��������TAT @ @WLeft� @WTopt� @WRight�� @WBoth�� @ ExtraHeight� �0����������� ?? @[ ��w�Tab_@�@��2 �2��� ������������@[ ��w�List_@p�@�����2��� �����������@[ ��w�Info_@p�@����2��� ��������x@[ ��w�Size_@p�@����2��� ��������@[ ��w�Disk_@p�@���"��������������@�� hide all��H���6�������� @ ExtraHeight @WBota� @WTopa�@�@��������T���B��������@ @WLeft� @WTopt� @WRight�� @WBoth� @ ExtraHeight��0�����������@[ ��w�Tab_@�@���2��� ������������@[ ��w�List_@p�@���2��� ��������111@[ ��w�Info_@p�@���2��� ��������@[ ��w�Size_@p�@���2��� �����������@[ ��w�Disk_@p�@��������������������@��������������@��^�"����������� reset month��:���(�����^ � CleanupStarte�*��������������2��� ��������^�� � ���*�������������$�&�������������� ^Months�*�� � �������������������^������������������^������������������������������������������������������DFCC4DT���P���>��n��n��(�7d7this goes to the following web page for science forums ��<���*������������ (WebAndMailLauncher�(�@���������������������������������������DFCC4Dvt��Z���H��n��n��(�7d@this goes to the following web page for the simulation exchange ���<���*��������2 (WebAndMailLauncher�(�@�����������������������������DFCC4DG��Zb�d���R��%��$��gSMload the stuff to keep track of which parts of the toolbar are open or closed���@���.�����������S(this code now uses semaphores to be safe���������������S������� ������������S input������ ��������0001S none00���� ��������EMakS outputr����� ������������S none���H���6���������� �@�@�������� @ ToolbarName�@�������������t�:���(���������e�c@� @ ToolbarHeight�@�@���������e�<���*���������i�t@� @ToolbarVisiblez�@�@���������"�:���(����������T@� @ ToolbarStateo�@�@����������(�������������@ @ ToolbarLeno��N�"������������ �@@itemb��;�"������������e�m@@leftb��� ������������;�@@top�� �"��������@@right��$��������������@@bottomr����"��������������@@left2���"��������������@@top22���$�����������ls@@right2r����$�����������@@bottom2��6���$��������@%@�@��������@ item_name��2��� �����������@1 @ToolbarResetSelection�����������������,�����������Simage browser search~11�6���$��������@%@�@�������� @ IBC_Query��������������ls�*�����������111Shack for selectionmb�0����������� @ToolbarResetSelection~@������������������@�*���������������Ssetup and get lists T�@���.������������@@itemb�@�?��������@�@�����������6���$������������ @ToolbarVisiblez�@itemb~@�er�4���"������������ @ ToolbarStateo�@itemb~@�������������������@R�6���$������������@ w�lToolbar� @ ToolbarName����8���&������������ @ ToolbarLeno~@ @ ToolbarName����(������������ @Run_Critical_Begin~me�D���2������������@ w�l dTool runlist�#@RunNumberArraySort~���J���8������������#@RunNumberArraySort~~@�?��������� need to reset��<���*������������#@Run_Run_Recheck~@��� need to reset@�&��������������� @Run_Critical_End����������������������.���������������Shide the closed arrowsar�@���.������������@@itemC�@�?�������� @ ToolbarLeno����T���B������������@ item_name~w�lz�~� @ ToolbarName�@itemb�~�w�l_Closedr��2��� ��������lj@[��@ item_name�@��t_������������ll@�������������ln@�X���F��������lqSAget the heights, in this case bottom of divider to top of dividerq�R���@��������ls@@item_�@�?�������� @ ToolbarLeno�~`@�?���������V���D��������lv@ item_name~w�lz�~� @ ToolbarName�@itemb�~�w�l_Divider�l�T���B��������lw@��@ item_name�@left_�@top�@right�@bottoma�id�h���V������������@ item_name~w�lz�~� @ ToolbarName�@itemb�~�@�?��������~�w�l_Divider����X���F������������@��@ item_name�@left2�@top22�@right2a�@bottom2�n�X���F������������ @ ToolbarHeight�@itemb~@top2b�~`@bottom��~`@�@�������������������������@T������������� @�F���4��������wS/hide the sections that are dependent on windowsw�F���4��������6 @Toolbar_Disclosure~w�lESim�@�@���������7�J���8����������� @Toolbar_Disclosure~w�lEJournal��@�@�����������D���2������������ @Toolbar_Disclosure~w�lIBC�@�@������������F���4������������ @Toolbar_Disclosure~w�lIBPI�@�@��������� ��F���4����������� @Toolbar_Disclosure~w�lSets�@�@�����������F���4�������� @Toolbar_Disclosure~w�lJList�@�@������������������������������������������������DFCC4Dc{��N���<��n��n��(�7d4this goes to the following web page for the updates ����<���*�����40 (WebAndMailLauncher�(�@�����������������������������������������DFCC4D;h��r���`��'��&��b$QSetup lists to support grid, lists are used so that strings are consistant everywb$herepam�h���V�����scalb$PThis code supports Grid Mananager so that you can get abstract information about���2��� ���������� b$the model for a given run.�t������������b$������� ���������b$ input������ ���������b$ noneab���� �����������b$ output w���� ����d����b$ none�b���P����n�TAT  #@ ModelNamesRef�#@ ModelGridsRef�#@ ModelAppsRefo�#@ModelAppsBinRef�na�<���*�����TAT #@ ModelNamesRef@ w� Model Names�9 �<���*����h�TAT #@ ModelGridsRef@ w� Model Grids�8 �<���*����b�TAT #@ ModelAppsRefo@ w� Model Apps��8 �B���0�����������#@ModelAppsBinRef@ w�Model Apps Bin��] �OK����?��������!!�2��� ���������]#� PM_Platform��$������2��� ��������]�g� docref_full��text��E������������ccc]cc�:���(��������]�g� docref_full���text�����������������]���(�����������] � docref_full��8���&��������]�specialRegionsI���R*ch��������������]������������]�������������111��n���\��������]specialRegionsPaths � PM_MakePath�specialRegionsPaths���Special Regions�����8���&�������� ] PM_Launch�specialRegionsPaths�������������������������������DFCC4D5�&������� ����8 delete a set �eg�&�����������((oldPos�eg�&��������������((oldRec�je����������������(�<���*��������==�8"check that the selection is valid h�������������������(#(SetArray��@(������������@#(SetArray�#(SetArray��@#(PostDefaultSet��@#(SetArrayu#(SetArrayu�@� All Variables�����������YY(�*��������R�8goto record ��D���2��������(�(�����#( SetNumArray#(SetArrayrw{�0�����������(oldRec�(�(���������������(�.�������������8delete from database ����$������������(�:(������$������������(�/(�����(�������������\�,�������������8delete from array ^���R���@���������(oldPos�(�#( SetNumArray(oldRecA(�?���������D���2���������(�#(SetArray�(oldPosa(�?������� �F���4���������(�#( SetNumArray(oldPosA(�?��������^�������������\�<���*����������8#delete from post processing window ����2��� �������� (setName#(PostDefaultSet�(st�������������((�@���.����������8'go to all (first element in set array) �S�0��������ww#(SetArray�(�?�������(ef�D���2������(�(�����#( SetNumArray#(SetArrayr��&��������� (SetArray_Manage(���������������((��������������������������������������DFCC4Dyb�,�$�����^�� ^����8 open sets <�(�h���V�������� (Generic_OpenReopen�""#(Sets_ProcessIDo""� Sets Window""� Sets_Process""��������������������������������DFCC4D�O�T���B����_]~ InfoText_LinkDialogG�@��������GG�����GG����GG�L���:����_k���#Simulation_TwistDownChangedGG�~Xmark as changed~ld���������������DFCC4DZ�|~�`���N��&m��%m��gSHget the list of years currently selected, this is different from the oldfn�P���>�����������S9code since 4D 2004 allows multiple selections in the list���>���,�����������S&only sequential selections are allowed ���� ��������0001S input00�2��� ��������EMakS optional (use all years)Ma���� ������������S output���D���2���������� S, none (Start Year and End Year are changed)� �8���&�����������@selectionCountz�@maxYear��t�&������������$�s@-@yearsPtr$��u�2��� ����������@�@years�@�������������$�����������������*���������������@����7@�������������*������������r�s@����7@������������o�X���F���������o�f@yearsPtr$7 @PostProcessing_TypeListEmpty @start_lbs�@����L���:���������� @SelectedElementsInListBox @start_lbs�@years���<���*��������d@selectionCountz7@@yearsPtr$���������������������2��� ������������Scheck if a valid selection��<���*������������@@selectionCountz�7@���������������f���T������������@@yearsPtr$�@�?�������K���w�l<NA>�wO8check against special case����.������������L@@�7@���������������$���������������S get all years� �D���2������������@����7@� @yearsPtr$�@�?�������K����L���:������������@����7@� @yearsPtr$�@@yearsPtr$�K�������������������@���:���(������������@@@years��7@���������������h���V��������� SPset the start of the selection if it does not excede the length of the new arrayipl�L���:������������@@years�@�?�������K� �@@yearsPtr$�����P���>�����������@����7@� @yearsPtr$�@years�@�?�������KK������������������@���������������������4���"�����������Sset the end of the selection������������������@@selectionCountz�7@�?����������/@�����7@�������������wO85more than one year selected and there is a start year���f���T������������SNset the end of the selection if it does not excede the length of the new array���J���8������������@@selectionCountz� @years�@@years�K����R���@������������@����7@� @yearsPtr$�@years�@@years�KK����:���(������������@�� otherwise just use the last year����H���6������������@����7@� @yearsPtr$�@selectionCount7K�������������������@���0���������������@�� only one year selected���$���������������@����7@����������������������@������������������@��������������@������������@�������������%@#�����������������������������������������������������������DFCC4Dc8��~���l��'��&��b$QThis is very old code written by Matthew Shopsin that is used as part of the dynab$mic interface for�*�������b��� b$Setup Simulations. �i��������l��� b$��`���� ����h���b$ input �i���� ������������b$ none ������ ��������b$ output������ �����b$ none �H���6����Z���� @Counter�@�?�������� @Number_of_Groups<�������������������@temporary_reserved_namew�z�� @ Group_Namer�@Counter��w�_wXCthe objects that are not suppose to move have a z in fornt of them@������������@temporay_stationary_object�@temporary_reserved_name��w� Closed_ArrowwXPtemporary_stationary_object is set to the name of the variable containing the ar]���D���2��������TAT @[ ��@temporay_stationary_object��@��d ��������V�TAT @ n characters for last ":""ro�6���$���������d�dii?�������len���P���>���������d�dpath�!len�li��ii?�������"�i�i:���`���N���������d�dpath�� path�p?�������len�li��ii?��������d�(������������d�dii��ilenx9�������������d�d��������������d�d���������������d�dg�������������d�d� ������������d�dcleanup t�"������������d�d ��path� (��������DFCC4D-p���^���L���� ����8Echanges to the set name should be immediatly visible in the set list �������������������������������(#(SetArray��@(������������@#(SetArray�#(SetArray��@#(PostDefaultSet��@#(SetArrayu#(SetArrayu�@� All Variables�i�0���������������(RecNum�(�(�������D���2��������(ArrayNum�(�#( SetNumArray(RecNumA+�N���<��������99�85I only handle keystrokes when the set already exists ����,����������������8 If ($ArrayNum>0) ����X���F�������������8> SetArray{$ArrayNum}:=SetArray{$ArrayNum}+Get edited text ����<���*���������pu�8" If (Form event=On Data Change ) h����@���.��������<�8'check that the name is not a duplicate ��8�R���@�����YY(ArrayNum�(�#(SetArray� (setName(�?����������b���P�����R(ArrayNum�(�#(SetArray� (setName(ArrayNum���@(�?�������et�,������������8duplicate ^����8���&��������((ArrayNum��@(��������������:���(�����#(SetArray�(ArrayNum�(����(���(������������ (setName(����(io�L���:��������� (Alert_ParamText (setName���������3p�D���2��������� ( Alert_Alert(�?�������(�@�������l�������������((�^�4���"����������8do save and update array ��h��P���>���������87change item, resort array, save record, reselect item �ad�D���2��������(ArrayNum�(�#( SetNumArray(RecNumA�<���*���������#(SetArray�(ArrayNum� (setName(��(�������� (SetArray_AllOnTop(���D���2�����{s(ArrayNum�(�#( SetNumArray(RecNumA���P���>��������N#(SetArray�(�����������#(SetArray�(ArrayNum�Fi�.������������#(SetArray�(ArrayNum�(���(������������(���� (setName(id�$������������(�5(������,�������������8 REDRAW(SetArray) ���������������((�(��������g9kZ�8 End if ��"���������8End if l�p���������((g����������DFCC4DcI�@qc�0����� �� ���7dhandle images for html���� ���������������7d input���8���&������������7d ptr to the path to the image�����:���(���������k�e�7d path to images folder for html�����"�����������ww�7d listref�f �.������������� �7d number of the image����2��� ���������a�m�7d place of image in array��&������������ �a�7d # of images�(���������������(�.������������� [- ���� imageName�����>���,���������r�[%��@�������� ���� imagePath�����h���V���������� [ ��� ��� ��� ����listRef�� imageCounti��pictNum�� pictCount��[P�*������������a�m[ �����temp��ns�(������������ �a[�i��max��) �4���"����������[�leftPos��rightPos$��et�|���j���������s�t[%��@��������� folderNamef��fileName$��saveFolderName@�� saveFileNamea��saveTemp$����$�����������111[2�vRef��rr�"���������������[�pic��yN�4���"��������[%��@���������value��du�&�����������[ imageNames ���>0�L���:����V����[ imagePaths � PM_MakePath �����Images�����3p�$�������V�[listRefs ���at�(�������V�[ imageCountis ���ts�$�������V�[pictNums ��� s�&�������V�[ pictCounts ������ �������V� [��s��������������V����V���D����V����8�7d=the imageName consists of filefolderkey which is in CM_Images���,�������V�����[values� imageName���@���.����V����[ foundPreviewos���� ����value���@���.����V�����[� foundPreviewo�sP�sP��?������������6���$����V�����[����� ���� foundPreviewo�����,�������V�����[ folderNamefs��� ������*�������V����[fileName$s��� ���t��N���<����V����[saveFolderName@s��� folderNamef��� ���_�����J���8����V�����[ saveFileNameas���fileName$��� ���_���Z��������V����[[ ��������V����[et�:���(����V�MUTX�7d!test that folders and files exist�@����~����V����[� � PM_MakePath � PM_MakePath � thumbFolder�� folderNamef������fileName$���������?������������6���$����V�����7dcreate folder if necessary �����l���Z�����������[� � PM_MakePath� imagePath��saveFolderName@������ �����������������T���B�����������[ � PM_MakePath� imagePath��saveFolderName@������rr�~���l��������̻@[ � PM_MakePath � PM_MakePath� imagePath��saveFolderName@������� Thumbnails��������������������MUTX[[���b���P�������������7dIcopy file if necessary (may have already been copied for a previous image�dy�������������p[[��8���&���������|[� pictCount����?����������0���������������[ pictCounts��@���������N�8���&��������Z^[� pictCount����@������������0������������[ pictCounts��@�������������������[[�0���������o�l[ pictCounts��@��������us����������s�t[[���������� �[ saveFileNameas �InfoText_HTMLPict2Jpg � PM_MakePath � thumbFolder�� folderNamef����� � PM_MakePath� imagePath��saveFolderName@������ imageName�� pictCount�����>���,���������7d%add the path to the image to the html����T���B�����MUTX[temps �GetListItemStr@�listRef���@��������7���^���L���������[temps�temp�r�`��imageno�r�`�� � imageCounti��r�`��.htm�����b���P���������[temps�temp�r�` �GetListItemStr@�listRef���@��������10`p�������������[temps�temp�r�`��Images/�r�`���saveFolderName@�#� PM_PathChar�������r�`�� /Thumbnails/��r�`� saveFileNamea�������p���������[tempFs�temp�r�` �GetListItemStr@�listRef���@���������r�`��Z$���&��r�`��Z$���&���"������������ [��s�temp�ts�2��� ����������7dcreate new html for image���������������� [InfoText_HTMLPictHTML� imageCounti��pictNum��listRef���Images/�r�`���saveFolderName@�#� PM_PathChar�������r�`��/�r�`� saveFileNamea� �������������������[[����������������������������������������������������������DFCC4Dc�<B�b���P��'+��&+��gSKThis code matches the scenario backgroud and the lock button to the currentum�Z���H��������SCstate of the record. The lock can be locked or unlocked, the button���0�������؊����Shas the following states:���,�������<��� S unlocked (unlocked)>� �&�����������TAT S locked (lock) �&�������Ҕ����S scenario (pkg)���&�������պ�����S archive (tape)���4���"�������������%@�@��������@iconRef����������������000100�&�����������EMakSset background� � ���������������@@��������B���0���������@[��w�lzScenarioBackground�@��������@���.���������@[��w�lzScenario2Background>�@�����������������@���B���0���������@[��w�lzScenarioBackground�@��������D���2���������@[��w�lzScenario2Background>�@��������������������@�����������������"������������S set button8 ������������@���@���.�����4@@�m����@�@���������wO8archived>���(������������@iconRef>w�l10050���.��������@���@@�����wO8scenario> �(������������@iconRef>w�l10052��>���,���������@@�m����@�?��������wO8locked���(��������� @iconRef>w�l10051 �J���8���������@@�m����@������������wO8no status, unlocked���(������������@iconRef>w�l10053���(������������@�� generic locked���(������������@iconRef>w�l10051��������������A@���`���N���������@���w�lzInfo_StatusLock�w�l1;3;?�>�@iconRef�>�w�l;240;0��Q�����������������������������������������������������������������DFCC4D'�:]6�X���F��%f��$f��gSARun the postprocessing app and wait for it to quit before leavingLP���� �����������S input�0��������������S string, name of the app������ ������������S output���8���&������������S! boolean, did the process succed���:���(�����������^%��@�������� ����appName���2��� �����������^%��@���������path(���@���.��������^�mouseXE��mouseYE�� mouseButton��*������������� ^1 �����sucessE��p�"������������n�c^appNameE ����"������������l�i^successE���T��������������$������������n�cS get the path�$�D���2���������l�i^path(E � PM_FindFolder�DiagnosticsApps��u�H���6�����������^path(E � PM_MakePath�path(��appName���������������������,�����������Sdelete the stop fileE11�B���0��������^��path(�E��.stop�� $������0��������������^��path(�E��.stop�������������111^����������������*��������)))%Srun the application�*����������� ^ PM_Launch�path(��������������f,�N�:���(��������fS"wait for the application to finish� �����������f^ticksE�!� �����������fD^done(E��������������f8^�.��������������^C�B���@����������B���0��������^��path(�E��.stop�� $�����.�����������^C�B���@����������0�����������^��path(�E��.stop�� ���������������^done(E���"�����������111^successE���������������^�(��������������Scheck for cancel����2��� ��������^#� PM_Platform� $�����,�����������^�"������11� �����������^done(E���&�����������n ^iE��@�������������������111^��������������^�,�����������^�3������� ���������������^done(E�����&�����������^iE��@�������������������������^��������������^�&���������������Scheck for click���@���.�����������^�mouseXE��mouseYE�� mouseButton����8���&������������^� mouseButton�E`����������������b���P�����������^ mouseButtonE � Alert_Alert��@�����������@����������?����������8���&������������^� mouseButton� ���������������� ���������������^done(E�����&��������ayer^iE��@�������s ����������f��^����������e��^� ����������� ^�done(������������������ ��������Scleanup�.�����������^C�B��������������n�"����������� ^��E�successn��������������������������DFCC4DK�0��^���L��^�� ^����8Echanges to the set name should be immediatly visible in the set list ��������������������[�4���"�����������((RecNum�(ArrayNum�������������H[���������������((v�B���0������������((�@$(��� @(�@$(���v���d��������,Ge(#(SetArray��@(������������@#(SetArray�#(SetArray��@#(PostDefaultSet����0������������(RecNum�(�(��������D���2�����������(ArrayNum�(�#( SetNumArray(RecNumA֗�N���<�������������85I only handle keystrokes when the set already exists ����8���&������������((ArrayNum��@(��������������6���$������������#(SetArray�(ArrayNum�((���*���������������((�@$(����@���.�������������8'check that the name is not a duplicate ���R���@������������(ArrayNum�(�#(SetArray� (setName(�?�������ea�b���P������������(ArrayNum�(�#(SetArray� (setName(ArrayNum���@(�?����������,����������������8duplicate ^����8���&������������((ArrayNum��@(��������������:���(������������#(SetArray�(ArrayNum�(����(���(��������������� (setName(����(���L���:������������ (Alert_ParamText (setName������������ֺ�D���2������������ ( Alert_Alert(�?�������(�@�����������������������(( �:���(�������������8!do save and update array ��>���,������������(�#(SetArray�#( SetNumArray�@���D���2������������(ArrayNum�(�#( SetNumArray(RecNumA��P���>������������#(SetArray�(�����������#(SetArray�(ArrayNum�TX�.���������������#(SetArray�(ArrayNum�(���(���������������(���� (setName(�$���������������(�5(����� i����������������(( l����������������((������������������((����������������((����������������((��������������������������������������������������DFCC4D3�%�@���.���������d�d��& Long name to file name Project Method���F���4���������d�d��, Long name to file name ( String ) -> Stringap�P���>���������d�d��7 Long name to file name ( Long file name ) -> file name[�6���$���������d�d%%@������� � �����:���(���������d�dviLenviPosviChar����*������������d�dviLen� ����,������������d�dviPosv����������V�R���@���������d�dviChar�viLenv?��������vv?��������6���$���������d�d �!viChar�"�v�v:���(������������d�dviPosviChar�߀�.������������d�dviChar�v�������������������������d�d�������������d�d���4���"���������d�dviPos�vv�����������B���0���������d�d ���  �viPos��vv?�������ar�������������d�d���� ���������d�d �� ����������������d�d������������������������������������DFCC4DJ�~H����r��"��!��,�7dQThis code matches the fields to the selected row in the list. Since there are a l�7dot of tricks pulled for������|���������7dQthe password fields this takes some work. If they click past the end of the list �7d then just leave the stuff blank.o���L���:������� �7d5Also don't let users edit the username if it is admin��������������� �7d�z�`���� ����\��7d input0���8���&���������i�n�7d! (optional), surpresses the save�s������������7d�z�d�v���d�����������]found������� � arrColVarsr��?�������� � arrColVarsr��?������������6���$�����������]�found����?��������������������������wi�2��� ����X�mpon�7dsave if nothing was passed0om�.�����������]����������������LI�:���(���������� ]UAM_Editor_SaveRecordw save first��s�������������i�n]��������������000100�(�����������EMak�7dgo to the record4D�,�����������0001]���������found�08�������������EMaker�:���(�������������7d"can't edit username if it is admin���.������������t� ]���������Admin�� �(������������� ]����������� �(������������� ]�����������d��������Š�]�(�����������]�����������(�����������d]����������������������///]--��������������.�����������g�7dset the password fields�(�����������] tempStringt�����V���D�������� ]vPswd��������w#probably need a platform check here�@���.������������ ] vActualValuec��Z$���&����������,��������������� ] vlastPosition��������&��������������� ]vPswd2� �vPswd���4���"������������ ] vActualValue2 � vActualValuec���6���$������������ ]vlastPosition2@ � vlastPosition������������������]����������������������������������DFCC4Do�Nq�^���L��%k��$k��gSGCreate a summary of the data in a set. The summary has two parts, a topN�^���L������������SGsection that says how much is in the summary, and a bottom section with���D���2����������S,a full description of every item in the set.���<���*�����������^- ��� ��� ��� ��� ��� ����r���`�����������^-� tablesPtr�� timeSeriesPtr�� mapsMonthsPtr��mapsPtr�� slicesPtr��zonesPtr$�V���� ����N�f�^�i�f�"�������N����^�count��r�$�������N�����^ tablesPtr �����(�������N�����^ timeSeriesPtr �����(�������N���^ mapsMonthsPtr �����"�������N�����^mapsPtr ��?�$�������N�-[��^ slicesPtr �����$�������N��m�m^zonesPtr$ ������������N��e�m�b�*�������N��I�fScreate the summary8�l�*�������N��e�t^�����Tables: ��P�>���,����N���^count �Sets_CountArray� tablesPtr��g�2��� ����N����^�count�`��������������Z���H����N����^������������� �count���� different months/seasonsR��������N���^�[�2��� ����N�����^������������ none t��������N�����^�N���<����N�����^�������������Z$���&���� Time Series: nt�B���0����N���^count �Sets_CountArray� timeSeriesPtr��m�2��� ����N�����^�count�`����������������V���D����N�����^������������� �count���� different variables����������N�����^��2��� ����N�����^������������ none t��������N�����^�H���6����N�����^�������������Z$���&����Maps: en�<���*����N�����^count �Sets_CountArray�mapsPtr����2��� ����N�����^�count�`����������������V���D����N�����^������������� �count���� different variables����������N�����^��2��� ����N�����^������������ nonem��������N�����^�R���@����N�����^�������������Z$���&����Vertical Slices: le�>���,����N���^count �Sets_CountArray� slicesPtr��S�2��� ����N�����^�count�`����������������V���D����N�����^������������� �count���� different variables����������N�����^��2��� ����N���^������������ none s��������N�����^�N���<����N�����^�������������Z$���&���� Zonal Plots: ri�>���,����N�����^count �Sets_CountArray�zonesPtr$����2��� ����N�����^�count�`����������������V���D����N�����^������������� �count���� different variables����������N�����^��2��� ����N�����^������������ nonez��������N�����^���������N�����^���������N�����^�b���P����N�����SKcreate the details section with the indepth reporting of what is in the set���<���*����N�����^�����Tables:����Z$���&����8���&����N�����^� tablesPtr����@�������+���L���:����N�����^������������ December�����Z$���&�����������N�����^S�8���&����N�����^� tablesPtr��������������+��&�J���8����N�����^������������ January����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����?�������+���L���:����N�����^������������ Feburary�����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@��������+���H���6����N�����^������������ March����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@��������+��Z�H���6����N�����^������������ April����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+���F���4����N�����^������������ May����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+���H���6����N�����^������������ Junep����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+���H���6����N�����^������������ Julyp����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+���J���8����N�����^������������ August�����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+���L���:����N�����^������������ September����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+���J���8����N�����^������������ October����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+��Z�L���:����N�����^������������ November�����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+��Z�F���4����N�����^������������ DJF����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+��Z�F���4����N�����^������������ MAM����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+��Z�F���4����N�����^������������ JJA����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+���F���4����N�����^������������ SON����Z$���&�����������N�����^��8���&����N�����^� tablesPtr����@�������+����J���8����N�����^������������ Annual�����Z$���&�����������N�����^����������N�����^�"�������N�����S setup sets��$�������N�����^�v�maps'���&�������N�����^�v�slices����*�������N�����^�v� time series����$�������N�����^�v�zones����"�������N�����^�2���������"�������N�����^�2�������s�"�������N�����^�2�������se�"�������N����^�2�����������������N�����^�6���$����N�����Sloop over records to summarize���b���P����N�����^�������������Z$���&���� Time Series:����Z$���&����0�������N���^��$�������� ����g�P���>������������^������������ 0�����������Z$���&����"�������������^�3��������o����������������^��Z���H����������^�������������Z$���&����Maps:����Z$���&��[�0�������������^��$�������� ����g�P���>����������^������������ 0�����������Z$���&��:�"�������������^�3��������o����������������^��f���T����������^�������������Z$���&����Vertical Slices:����Z$���&��r�0�������������^��$�������� ����g�P���>����������^������������ 0�����������Z$���&��:�"�������������^�3��������o��������������C^��b���P����������^�������������Z$���&���� Zonal Plots:����Z$���&��t�0�������������^��$�������� ����g�P���>����������^������������ 0�����������Z$���&��:�"�������������^�3��������o��������������^����������������^���� �����������Scleanup��$�������������^�u�maps'��c�&������������e�t^�u�slices�un�*���������������^�u� time series����$���������������^�u�zones���������������������������������DFCC4DK�,A�\���J��%��$��gSEResize the length of the run list manually to match the height of the���^���L�����������SGwindow. This replaces the autoresize option because I need the group to���&���������������Sshrink properly���8���&��������S Now has Run list as the 2nd item����������������@�"��������������� Svar�R� �������������}@top��F�"�����������@@leftP����$�������������}@@bottomD��l�"���������������@@right��(������������� @@ windHeightw��t�$�������������}@@divPosi��l�"������������&�@@itemo��o�T���B���������g�h@@ toolHeightt�@ listHeightl�@ subHeight�@ newHeight��i��������������+���:���(���������d�HS"get the height of all the sections��0�����������@ toolHeighttM@��������������R���@��������@@item��@�?�������� @ ToolbarLeno�M`@�?���������R���@��������)))%@ @ToolbarVisiblez�@itemb%�@��wO8visible section���H���6��������@ @ ToolbarStateo�@itemb%�@��wO8closed�B���0������������@ toolHeighttM@ toolHeightt�M�@�@������������� ������������@�� openM���b���P������������@ toolHeighttM@ toolHeightt�M� @ ToolbarHeight�@itemb%�M�@�@�������������������������@������������������@������������������@����������������4���"��������%%NsSget the height of the windowJR�@���.������������@@left��@top�@right�@bottom�����H���6�����������@ windHeightwM@bottom��M`@top�M`@�@���������F���4������������S.try to compensation for special section at top���J���8������������@ windHeightwM@ windHeightw�M`@�@���������538���.���������������@ newHeightM@��������������V���D������������@��w�l List_List�@left��@top�@right�@bottom������������������������T���B������������S=if the sections are too tall shrink the runlist (if possible)���8���&������������@@ toolHeightt�M@ windHeightw����z���h������������@ @ToolbarVisiblez�@�@��������%�@����X @ ToolbarStateo�@�@��������%�@������&�����������Sget heights �6���$��������@ listHeightlM@bottom��M`@top�@���.��������@ subHeightM@ toolHeightt�M`@ windHeightw�H���6�������� @@ listHeightl�M`@ subHeight�M@�@���������>���,��������@ newHeightM@ listHeightl�M`@ subHeight�������������@�.�����������@ newHeightM@�@�������������������@�\���J������������@ newHeightM@ listHeightl�M`@ newHeight���M`@�?�����������*���������������Sshrink run list ���n���\������������@��w�l List_List@��@������������@������������@������������@ newHeight����&���������������Smove the search���n���\������������@��w�l List_Query@�@������������@ newHeight�@������������@������������������������������@������������������@����������������������h���V������������SPif the sections don't take all the space then lengthen the runlist and push the ���8���&������������@@ toolHeightt�wl@ windHeightw����z���h������������@ @ToolbarVisiblez�@�@��������%�@����X @ ToolbarStateo�@�@��������%�@������&���������������Sget heights ���V���D������������@��w�l List_List�@left��@top�@right�@bottom�����6���$������������@ listHeightlM@bottom��M`@top���@���.������������@ newHeightM@ windHeightw�M`@ toolHeightt���*���������������Sresize run list ���n���\������������@��w�l List_List@��@������������@������������@������������@ newHeight����&���������������Smove the search���n���\������������@��w�l List_Query@�@������������@ newHeight�@������������@������������������������������@������������������@����������������������:���(������������S#move other sections & change height���6���$������������@@ newHeight���@���������������@���.������������@@item��@�@��������� @ ToolbarLeno�������p������������@�� @ ToolbarName�@itemb%�M�w�l@�@������������@ newHeight�@������������@������������������z������������@��w�lz�M� @ ToolbarName�@itemb%�M�w�l@�@������������@ newHeight�@������������@������������������������������@���h���V������������ @ ToolbarHeight�@�@��������%M @ ToolbarHeight�@�@��������%�M�@ newHeight������������������@����������������������8���&������������@@�?��������@�@������������Z���H������������@��w�l zList_Divider�@left��@top�@right�@bottom�����(���������������@divPos�M@bottom����r���`������������@��w�lList@�@lefto�@bottom��M�@�?��������@right�@ windHeightw�������������������������D���2������������S,need to update height because it is dynamic ���F���4������������@@ windHeightw�M`@bottom��M@���������������N���<������������@item�M@� @ ToolbarName�w�lList�@�?�����������L���:������������ @ ToolbarHeight�@itemb%M@ windHeightw�M`@bottom�������������������@������������������@������������������������������������������������������������DFCC4DW�JN�*�����'A��&A��gSload list of pages�T#�&��������������� @PostPageP����*��������������@@listLen�@i����8���&������������@1 @ tNeedRedraw� @ mNeedRedraw����2��� �����������@� @Start�@�?���������0��������������@� @End�@�?�����������$���������������@1@isList�����@���.��������@ @plots_hier_counter-�@ sublistRefs�HH�������������������(���������������Ssetup run number�Dd�H���6������������@����- @Run_Critical_GetRunN=@�?������������������������������*���������������Ssetup and get lists@��6���$���������� @PostPageP-@w�lPostPage�� ��������������������$���������������S setup redraw���&�����������d @ tNeedRedraw-@��&��������������� @ mNeedRedraw-@��������������������P���>������������S9set default tab, fix appearance for Windows 2000/XP issue���"���������������@� @pMaps����2��� ���������L@#@ PM_Platform�$@����@���.������������@[��w�lzHideImageForWindows-�@�� ����������������@����������������������0���������������Ssetup hierarchical lists����&��������������� @ plots_hierl-@w���&������������ @ slices_hier-@w���$��������������� @ maps_hier-@w��&�������������� @ zones_hiero-@w���&�����������KK� @ tables_hier-@w���F���4����������� @PostProcessing_TypeHierEmpty @ plots_hierl����F���4������������ @PostProcessing_TypeHierEmpty @ slices_hier����D���2������������ @PostProcessing_TypeHierEmpty @ maps_hier����F���4������������ @PostProcessing_TypeHierEmpty @ zones_hiero����F���4������������ @PostProcessing_TypeHierEmpty @ tables_hier�����������������������.���������������Sdo inital summary & set���0��������������� @PostProcessing_SummaryLists��������������������������������DFCC4D �I�d���R�����������FJTake a value read in from an XML field and convert it to text (or number) �&�t���b��������neraFQfor a database field or array. Converts based on field type in a best effort fashFion. �R���@�����������F8This code is not responsible for invalid data passed in �ng� ���������������F input ct�2��� ������������F ptr to field or array �ag�,���������������F text from field ^�:���(������������F optional array position index l���.���������������- �fieldPtr@���.��������������� �xml_Text@���0����������������@�@���������,�0��������������� � arrayIndex��,�(��������������� arrayIndex� �in�����������������(��������������� fieldTypein�&���������������fieldPtr@ �ve�&���������������xml_Text@ �ta�����������������8���&������������ fieldType'fieldPtr@�������������������,���������������Ffield converstions ���V���D������������ fieldType�@$��� @ fieldType�@$����b���P������������fieldPtr@�xml_Text@�Z�@��������Z$��&�C�v���d������������ fieldType�@$��� @ fieldType�@$��� @ fieldType�@$���>�8���&������������fieldPtr@� xml_Text@�2��� ������������ fieldType�@$�� &�4���"������������xml_Text@�@Y�pTrue&�(���������������fieldPtr@�?�����������������<�(���������������fieldPtr@�e �����������������2��� ������������ fieldType�@$��Nu�8���&������������fieldPtr@�xml_Text@���2��� ������������ fieldType�@$��&�8���&������������fieldPtr@�fxml_Text@�,���������������Farray conversions ^���V���D������������ fieldType�@$��� @ fieldType�@$��e��t���b������������fieldPtr@ arrayIndex��xml_Text@�Z�@��������Z$��&�v���d������������ fieldType�@$��� @ fieldType�@$��� @ fieldType�@$��c�J���8������������fieldPtr@ arrayIndex�� xml_Text@&�2��� ������������ fieldType�@$���4���"������������xml_Text@�@Y�pTruee_�:���(������������fieldPtr@ arrayIndex���������������������:���(������������fieldPtr@ arrayIndex��-�������������������2��� ������������ fieldType�@$�� Z�J���8������������fieldPtr@ arrayIndex��fxml_Text@&������������������������DFCC4D#4�,������������d�d��set boolean values� ������������d�d1 ���0������������d�d%%?������� ����������������d�ds4���� ���������d�d ���� ������������d�d ����t��������������d�d��� ������������d�d ����f��������������d�d��DFCC4DX�n_�`���N��'��&��b$IWhen 4D quits the normal On Exit method runs after all the processes havefn�`���N����Ɯ�y�b$Iterminated with is bad since EdGCM 4D can have unsaved records in various�l�,���������scalb$processes. So Do_Quited�2��� �����scal% @�@��������@path��:�����������scalli�*��������scalb$saves to do on quit��(��������������� @Safe_SaveSimulation���&����������� @Safe_SaveInfoText���<���*����~�TAT @ @B�8#@PostProcessing_ProcessID�3 �"�������H�TAT @�5 @������D �������������@����������������������:���(��������b$"clear temp files from this session�>���,��������TAT @path� @ PM_FindFolder w� eJournals�la�4���"�����TAT @PM_RecursiveDelete @pathe� �4���"�������� @ @ @pathe��$@��� �.������������ @ PM_MakeFolder @patha������������������@���������������������������@#����������������DFCC4D �������!�� ��,�7dvar��,�������������]1 �Simulation_New@���6���$�����������]%��@��������#�QueryStr����"���������������]�width����*��������������#]QueryStr��moof���������������"�������������7d setup otherw@�*������������ ]Simulation_New@����������������kZo{]�4���"����J�����7dyou must be an admin to enterh �,�������J�  '] �UAM_Authenticated�dy���������J��������"�������J�????�7d setup other��b���P����J�����]�C�� SimLibrary�2 This menu bar gives the user access to the demos.���8���&����J�����]�6��������� List View��(l�$ �B���0����J�����]#� Toolbar_Width����@��������^p������>���,����J�����]width#� Toolbar_Width����@�����������������J����]��� �������J�����]width������������J�]��������J����� ]myWind���#� Toolbar_Width���@���������width������@��������$��"� ���Simulation LibraryH��� Generic_Close������� ����J�����]F�B����$�������J�] �myWind�����������J����������� ������������]��(l����P���>������������]��������)this is a conflict with Setup Simulations���"��������������]�/�������wi�,��������������]��� List_OnErrDo������������������K���:���(�����������]��L������������������������(��������������(]�;��������(l���4���"��������@�7dADD RECORD([Utility Table];*)8�������������0]��B���0�������� ] Alert_Alert��?����������@������������������]7d�V���D������7d? The close box associated with this window pauses the process. t�Z���H������7dB The window stays ready for use throughout the use of the program.�����������]���������111]w����������]�^���L�����#]List_ProcessID@������������w$ Reset process ID tracking variable.����������RRR]�*������������7d End of procedure.Plb��������������������������������������DFCC4DO�0_�\���J��%5��$5��gSECleanup after trend setter so that the viewer programs can work right���J���8�����������S3MacOS X: type the files so that PlotShop opens them��N���<�����������S7Windows: change the file names so that Excel opens them������������������S������� ������������S input���,�����������S path to trend files�F���4���������0^%��@�������� ����path(��filepath$���� �����������EMak^path( ������������������������"���������������S list loader?�:���(������������^listRef��PPMV58 Revisted���������������111��$�������������S retype files���<���*�����������^�i����������������@�����������z���h��������^filepath$�path(�� �GetListItemStrA�listRef��i�P��@������������?���������8���&��������^��filepath$�� $�����H���6��������^#� PM_Platform� $����y@Mac files for EVAtS�2��� ��������^�filepath$��EVA_���2��� ��������^�filepath$��TEXT��,�����������^ApPC files for Excel�0�����������????^�filepath$��xls�;;������������)�^��������������^U���������������^������������������������� ������������Scleanup���$���������������^y�listRef������������������������������������������������������������������������������������DFCC4D?W�p�.����������7dget current record ID���� ������� ����[ ������.�������,����[�CurrentRecordID�����,�����������[#� Rundeck_Textu�����.�����������[#�Rundeck_Summary�����<���*������������[%��@��������#� Rundeck_Title�����,�������*�����[CurrentRecordID ���tw�D���2�������������7d*open rundeck viewer window to see rundecks�0�.�����������#[ Rundeck_Textu���������.�����������#[ Rundeck_Title���������:���(����v����[state�J#�Rundeck_ProcessID�����N���<��������  '[�state�$�� ��� �state�� U$�� �������v���d����"��� [Generic_OpenReopens#�Rundeck_ProcessID���Rundeck Window ���RundeckViewer_Process����������������  '[[���0��������������[I#�Rundeck_ProcessID������������������������������������������������DFCC4Dc84��������n�����d�d��������a�����d�d�0�J���8���o�����d�d@@@Counter@@C?�������@ @Number_of_Groups @@�������u�����d�d@temporary_reserved_name@@�tz�@�t @ Group_Namer@@Counter@�@�C@�C_@�CCthe objects that are not suppose to move have a z in fornt of them@ha�������������d�d@temporay_stationary_object@@temporary_reserved_name�@�t@�t Closed_Arrowr@�tPtemporary_stationary_object is set to the name of the variable containing the ar�@���F���4���a�����d�d@[@�@[@@temporay_stationary_object@@�@@���������������d�d@@��������������������������������������������������DFCC4D�fZ�n���\��'��&��`DQRun SumAndPd which does all the model diagnostics in from one super driver progra`Dmn�p���^�����G(`DQJean wrote. SumAndPd2.I adds a set of subfolders for the output from SumAndPd. Th`DeselL�n���\����p�����`DQsubfolders organize the output of SumAndPd and fix a bug where the contents of th`De�~�r���`������������`DQpostprocessing folder got too large to fix in a 4D array. This version should als`Do dop���p���^�����������`DQa few sundry things better. Below reproduced is the documentation from the .I fil`De f3�$�������b����`D Jean gave me:������������������`D����"���������������`D #file: pd_I���2��� ������������`D#read by: pd from SumAndPd�����������������`D�+�0�����������`D#Example Order of inputs:ll�D���2������������`D-line 1 B8x10_3pdC9 #runID���J���8������������`D2line 2 /u/cmrun/B8x10_3pdC9/ACC/ #input path �J���8��������d`D3line 3 /u/cmrun/B8x10_3pdC9/ACC/ #output path�`���N�����������`DIline 4 ffft #monthlies;quarters;seasons;annual��J���8�����������`D2line 5 1902 #first year���H���6����Ҭ�Ld`D1line 6 1902 #last year���H���6����Ҭ�����`D0line 7 8x10 #geometry����Z���H����Ҭ�@���`DBline 8 0 0 0 0 0 0 0 0 0 0 0 0 #kdiag set for lat/pressure���������Ҭ�����`D����R���@����Ҭ�����`D;if KDIAG(1-12)<9 the corresponding tables/maps are printed.���H���6����Ҭ�� `D1KDIAG must be <9 for other output to be produced.��X���F����Ҭ�����`DAiprint_pd, iform_pd, iNetcdf_pd: are not active when set to zero.���V���D����Ҭ�����`D?Therefore, only standard printout is produced when iprint_pd=0.���R���@������������`D;The special cases for KDIAG described in *) are mirrored by��"���������������`D iprint_pd.���T���B���������L`D<When iform_pd is active, it writes on iu_pd using the format����*���������������`Din the table below.������������������`D����D���2������������`D- kdiag iu_pd iform_pd���F���4������������`D/ 1 BUDGET PAGES *) 201 ASCII text���X���F������������`D@ 1 BUDGET PAGES **) 213 Regions ASCII text (when iu_pd(1)<9����J���8��������� `D2 2 LAT-HT (CP) 202 binary GISS4D �H���6������������`D0 3 LAT-LON MAPS *) 203 binary GISS����4���"����|�����`D 4 ENERGY HISTORY 204 @)���4���"����|����`D 5 SPECTR. ANAL. 205 @)���4���"����|�����`D 6 DIURNAL DIAG 206 @)���4���"����|�����`D 7 WAVE POWER 207 @)���4���"����|�����`D 8 DIAG8 (PLOTS) 208 @)���4���"����|�����`D 9 CONS. QUANT. 209 @)���J���8����|�����`D2 10 LAT-HT (SGM) *) 202 binary GISS4D(���4���"����|�����`D 12 KEY NUMBERS 212 @)�����������|��������@���.����|�����`D( *) IF KDIAG(1)= 1 NO REGIONAL BUDGETS����H���6����|�����`D1 2 GLOBAL AND LAND BUDGETS ONLY���J���8����|�����`D3 3 GLOBAL AND ICE-FREE OCEAN ONLY���@���.����|�����`D( 4 GLOBAL BUDGETS ONLY����>���,����|�`D& 5 LAND BUDGETS ONLY�H���6����|�`D0 6 ICE-FREE OCEAN BUDGETS ONLY��B���0����|�`D+ 7 OCEAN-ICE BUDGETS ONLY���T���B����|�����`D= **) 8 REGIONAL BUDGETS ONLY on unit# iu_pd+12���N���<����|�����`D6 IF KDIAG(3)= N (>0) THE LAST N PAGES ARE SKIPPED ���H���6����|�����`D0 -N ONLY PAGE N IS PRINTED OUT����H���6����|�����`D1 IF KDIAG(10)>0 LON-HT TABLES ARE SUPPRESSED���N���<����|�����`D6 The rules for KDIAG are true for IPRINT_PD as well. ����������|�����`D����R���@����|�����`D; @) iu_pd is not written on (i.e., NOT YET PROGRAMMED for���,�������|�����`D special output)����������|�����`D����"�������|������ @diag����6���$����|�����@� @ modelgrid�@�@������������6���$����|�����@% @�@��������@ diag_path����(�������|�����@2 @ docref_full����*�������|�����@1 @���@success������������|�������2��� ����|�`Dsetup paths and input files�"�������|�@success@��H���6����|�@ diag_path @ PM_FindFolder w�DiagnosticsApps��N���<����|���@ @ @ diag_path��w� SumAndPd.stop��$@�����<���*����|�! @� @ diag_path��w� SumAndPd.stop���������|�����@�����������|��������B���0����|�����`D+copy over the land file from the run folder����������|�����@ @PM_CopyFortranz @�@���������w��� @ PM_FindFolder w� CurrentRun���@�@��������@ diag_path�@�@��������@���@����������������������|�����@ @PM_CopyFortranz @�@���������w��� @ PM_FindFolder w� CurrentRun���@�@��������@ diag_path�@�@��������@���@�����������������������|��������$�������|�����`D setup .I file���8���&����|�����@diag�@������@�Z $@��&������� ����|�����`Dpaths���B���0����|�����@ #@ PM_Platform�$@���wX Unix pathsT���^���L����|�����@diag@diag�� @ PM_FindFolder w�acc��X���@�Z $@��&����j���X����|�����@diag&@diag&�� @ PM_FindFolder w�postprocessing��X���@�Z $@��&����"�������|�����@�� PC PathsP�X���F����|�����@diag&@diag&�� @ PM_FindFolder w�acc���@�Z $@��&����d���R����|�����@diag&@diag&�� @ PM_FindFolder w�postprocessing���@�Z $@��&�����������|�����@���8���&����|�����`D!monthlies;quarters;seasons;annual���Z���H����|�! `DCalways do all four since I don't know what the user will want later���2��� ����|�����@diag&@diag&��w�ttttXSu�6���$����|�����`DIf ([PostProcessing]ij Monthly)��(�������|�����`D$diag:=$diag+"t"z������ ����|�����`DElse ���(�������|�����`D$diag:=$diag+"f"z������ ����|�����`DEnd if a�8���&����|�����`D!If ([PostProcessing]ij Quarterly)os�(�������|�����`D$diag:=$diag+"t"zth���� ����|�����`DElse �(�������|�����`D$diag:=$diag+"f"zch���� ����|�����`DEnd if ���8���&������������`D!If ([PostProcessing]ij Seasonaly)��(���������������`D$diag:=$diag+"t"z������ ������������`DElse ���(���������������`D$diag:=$diag+"f"z����� ������������`DEnd if ���8���&������������`D If ([PostProcessing]ij Annually)���(���������������`D$diag:=$diag+"t"z������ ������������`DElse uc�(��������������`D$diag:=$diag+"f"z������ ���������`DEnd if ���8���&���������@diag&@diag&��@�Z $@��&������� ���������`Dyears���L���:���������@diag&@diag&��@�  @�������@�Z $@��&����L���:���������@diag&@diag&��@�  @�������@�Z $@��&���� ���������������`Dgeometry���(���������������`Dcheck model/gridz���6���$������������ @GetModelAndGrid � @ modelgrid�������������������@���R���@������������@ @ modelgrid�@�@���������@�@���������wX8x10���F���4��������@diag�@diag���w�8x10X��@�Z $@��&��T���B��������@ @ modelgrid�@�@���������@�?��������wX7.8x10 �H���6�������� @diag�@diag���w�7.8x10���@�Z $@��&�����������������@���.���������������`Dpick diagnostics to run���:���(����N����`D"If ([Model Variables]Model 64 bit)���h���V����N�����@diag&@diag&��w�0 0 0 0 0 0 0 0 0 0 0 0��@�Z $@��&�wX everythingT������ ����N�����`DElse ���h���V����N�����`DP$diag:=$diag+"0 9 9 9 9 9 9 9 9 9 9 9"+Char(Carriage return )`only buget pages������ ����N�����`DEnd if ����������������������,���������������`Dwrite out the .I file���H���6������������@ diag_path @ PM_FindFolder w�DiagnosticsApps����D���2����������0@ docref_full@  @ diag_path��w�pd.I�� �2��� ������������@ #@ PM_Platform�$@������|���j������������@�g @ docref_full�@� @� @diage�@�Z $@��&��@�Z @�@����������w�:�w�/��������������������@���:���(������������@�g @ docref_full�@ @diage��������������������@���(���������������@  @ docref_full�KD�@���.����������&@ @ diag_path��w�pd.IX�w�R*ch��������������������4���"������������`Dcreate the folder for AllSeas���T���B������������@ diag_path @PostProcessing_SubFolderPath w�zonal�@�����8���&������������@ @ @ diag_path��$@������&���������������@ @ diag_path�@����������������@%���������������0@�0���������������`Dcreate the folder for Avg���V���D������������@ diag_path @PostProcessing_SubFolderPath w�average�@�����8���&������������@ @ @ diag_path��$@������&���������������@ @ diag_path�������������������@ d�����������������@�*���������������`Drun the application���D���2������������@path_ @ PM_FindFolder w�DiagnosticsApps����L���:������������@pathi @ PM_MakePath @patha�w� SumAndPd2�@�����d���R������������ @ PM_Launch @patha�wX4$success:=PostProcessing_LaunchAndWait ("SumAndPd2")���"���������������@success@�������������������@���B���0������������ @ Alert_Alert @�@���������@�@��������������������������@������������������@���B���0������������ @ Alert_Alert @�@���������@�@��������������������������@������������������������� ������������`Dcleanup���"��������������� @��@success������������DFCC4DU?�,Z�N���<����������7This creates a sumary of the run information instead of�|�P���>�����������9a traditional rundeck. The summary is based on the layout���P���>�����������8of the setup window and is written in English instead oft�N���<�����������6fortran namelist style. The titles are saved in a listW��>���,������������'and opened relative instead of absolute���B���0���������C�h^�listRef��listItem$��count��i�� �$������������u�n^�rundeck���0������������:�=^%��@���������str���6���$������������^�� modelgrid���@���������ry���������D��� ��(�������D���load list & grids��:���(����D��u�r^listRef��Rundeck Summary���.�������D��C�h^listItem$��?��������a�6���$����D��u�n ^GetModelAndGridj� modelgrid��c���������D��:�=��&�������D��h�acleanup rundeck�r�$�������D��t�e^rundeck������������D���5���������D��� topte�P���>����D�����^rundeck���������Z$���&����@���������is���������D��� ^�$�������D����� general infode�n���\����D��� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&�� �>���,���������� ^listItem$�listItem$����?��������e�z���h���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&���>���,���������� ^listItem$�listItem$����?��������e����p���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����� ����������Z$���&���>���,���������� ^listItem$�listItem$����?��������e����p������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����� ����������Z$���&����>���,���������� ^listItem$�listItem$����?��������e�z���h��������0001^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&�00�>���,���������� ^listItem$�listItem$����?��������e����p������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����� ��v��������Z$���&����>���,����$��� ^listItem$�listItem$����?��������e�z���h����$���^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&�� �>���,���������� ^listItem$�listItem$����?��������e�z���h���������C�h^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&��i�>���,���������� ^listItem$�listItem$����?��������e�z���h���������:�=^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����|�������Z$���&���>���,���������� ^listItem$�listItem$����?��������e� ������������t�e ownership��"���������������^�m������un�,�����������^count����������2��� ������������^�count��������������Li�Z���H������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����"������������� ^�=������id�6���$����������^rundeck�rundeck���������2��� ���������u�r^�count���?���������t�6���$���������C�h^�i���@����������count�ry�,������������u�n^������������B���0���������+�^rundeck�rundeck���, 0��������t�������������I�t^�m�"������������r�t^�>������de�������������� ^r��������������^�)�<���*���������u�r^rundeck�rundeck����Z$���&���������������C�h^r�>���,���������o�d^listItem$�listItem$����?��������a�<���*���������l�i^rundeck�rundeck����Z$���&�����������������^�$������������e�t model versionis�n���\���������t�L^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&��>���,���������� ^listItem$�listItem$����?��������e�������������m�^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$��� �GetListItemStrA#� ModelNamesRef�� modelgrid���?������������Z$���&���>���,���������� ^listItem$�listItem$����?��������e�������������I�t^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$��� �GetListItemStrA#� ModelGridsRef�� modelgrid���@�������������Z$���&����@�����������>���,���������� ^listItem$�listItem$����?��������e�����������������^�"�������������  input filesl�n���\������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&���>���,���������� ^listItem$�listItem$����?��������e�z���h������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&����>���,���������� ^listItem$�listItem$����?��������e����p������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����� ����������Z$���&����>���,���������� ^listItem$�listItem$����?��������e����p������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����� ��l��������Z$���&����>���,���������� ^listItem$�listItem$����?��������e���� ������������istartip�Z���H������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������������^c�H���6������������^��������@���������y@GCM restart fileef����n������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����?������������Z$���&����N���<���������� ^��������@��������y@Restart file for rewind�����n������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����@�������������Z$���&����P���>���������� ^��������@��������y@Restart file, ground data�����n������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����@�������������Z$���&����������������� ^�$����n������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����@������������Z$���&����������������� ^�$�>���,������������^listItem$�listItem$����@��������z���h������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����o�������Z$���&����>���,���������� ^listItem$�listItem$����?��������e�<���*������������$ground data is only used by istart=5����2��� ������������^��������@�����������z���h������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&����>���,���������� ^listItem$�listItem$����?��������e����������������^r�>���,������������^listItem$�listItem$����?�������������������������^r�Z���H������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$���� ���������������^������r�H���6���������� ^rundeck�rundeck���Yes����Z$���&������������������^r�H���6���������� ^rundeck�rundeck���No0����Z$���&������������������^l�>���,������������^listItem$�listItem$����?��������z���h������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&����>���,���������� ^listItem$�listItem$����?��������e�z���h������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&����>���,���������� ^listItem$�listItem$����?��������e�z���h������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����~�������Z$���&��>���,���������� ^listItem$�listItem$����?��������e�z���h������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&��>���,���������� ^listItem$�listItem$����?��������e����~������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&����@������������>���,���������� ^listItem$�listItem$����?��������e�����������������^�"��������������� ocean model��n���\������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&���>���,���������� ^listItem$�listItem$����?������� f�z���h������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&���>���,���������� ^listItem$�listItem$����?��������e�>���,������������'have to adjust list based on ocean mode�z���h���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&�� �>���,���������� ^listItem$�listItem$����?��������e�z���h���������� ^�������������������� �������y@/show max mixed layer depth unless just sst mode� �z���h����������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&���������������� ^�$�>���,���������� ^listItem$�listItem$����?��������e�r���`������������^��������?��������� ��������@����������y@qflux and deep ocean���z���h����������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&���>���,���������� ^listItem$�listItem$����?��������e����p���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����� ����������Z$���&��i�>���,���������� ^listItem$�listItem$����?��������e����������������^l�>���,������������^listItem$�listItem$����@��������������������������^r�F���4������������^��������@���������y@deep ocean onlytR�z���h������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&����������������� ^�$�>���,������������^listItem$�listItem$����?�������$��h���V������������^����������������������������y@collect fluxes from sst mode���n���\����������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&���>���,������������^listItem$�listItem$����?��������H���6���������� ^str �GetListItemStrA�listRef��listItem$���j���X������������^rundeck�rundeck�����str��^0��� �����������Z$���&���>���,���������� ^listItem$�listItem$����?��������e�H���6������������^str �GetListItemStrA�listRef��listItem$�ef�j���X���������� ^rundeck�rundeck�����str��^0��� �����������Z$���&��t�>���,���������� ^listItem$�listItem$����?��������e�z���h���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����n�������Z$���&�� �>���,���������� ^listItem$�listItem$����?��������e�������������� ^l�>���,������������^listItem$�listItem$����@�������������������������^�l���Z������������^��������?�����������������y@!collect diffusion from qflux mode��n���\����������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&������������������^r�>���,���������� ^listItem$�listItem$����?��������e�<���*������������^rundeck�rundeck����Z$���&�de�����������������^�(������������� diagnostic outputte�n���\������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&�us�>���,����������^listItem$�listItem$����?��������Z���H���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$��i�X���F������������^������y@2only print include extra data if generating output(���H���6������������^rundeck�rundeck���Yes����Z$���&���>���,����������^listItem$�listItem$����?��������Z���H���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$��i�V���D������������^������y@1 this is too bad since I had to reused a variablem$�H���6���������� ^rundeck�rundeck���Yes����Z$���&������������������^r�H���6������������^rundeck�rundeck���No0����Z$���&�������������������^���>���,������������^listItem$�listItem$����?�������ea����������������^r�H���6���������� ^rundeck�rundeck���No0����Z$���&���>���,������������^listItem$�listItem$����@������������������������^�z���h����������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$������������Z$���&���>���,���������� ^listItem$�listItem$����?��������e�J���8������������^������y@$collection sea level pressure field?���n���\������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&����>���,���������� ^listItem$�listItem$����?��������e�H���6������������^str �GetListItemStrA�listRef��listItem$����j���X������������^rundeck�rundeck�����str��^0��� �����������Z$���&����>���,���������� ^listItem$�listItem$����?��������e����������������^r�>���,���������� ^listItem$�listItem$����@���������e����������������^l�<���*������������^rundeck�rundeck����Z$���&��������������������^�&���������������forcings, solar��n���\����������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&���>���,������������^listItem$�listItem$����?�������/@�Z���H������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����>���,������������^listItem$�listItem$����?���������N���<������������7check if the solar value matches the value for the year���X���F������������^��������@ `���������������P��@ ����������X���F������������^���������������f�01/01/@���� ����������,���������������^��������T������P���>������������^rundeck�rundeck���� ����������Z$���&�is����������������^����n������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����?������������Z$���&����������������� ^�$����������������^r�n���\������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&�������������������^r�>���,������������^listItem$�listItem$����@�����������H���6������������^str �GetListItemStrA�listRef��listItem$�ef����n������������^rundeck�rundeck�����str��^0��� ��T���������Z$���&����@������������>���,���������� ^listItem$�listItem$����?��������e��������������� ^�"��������������� solar trendun�Z���H���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$���� ������������� ^��U����r�L���:������������^rundeck�rundeck���enabled����Z$���&������|������������^rundeck�rundeck�� �Rundeck_Summary_Trend�Solar�j��V����j��W�����W/m^2�j��X����j��Y�������������������� ^rundeck�rundeck�� �Rundeck_Summary_Trend�Solar�j��Z����j��[�����W/m^2�j��\����j��]��������Z$���&��������7����� ^�$�d���R���������� ^rundeck�rundeck���disabled�����Z$���&����@����������u����������������^s�>���,������������^listItem$�listItem$����?�������^��������������� ^�$��������������� forcings ghggh�n���\������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&����>���,������������^listItem$�listItem$����?�������/�Z���H����������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$��r�>���,������������^listItem$�listItem$����?��������>���,����������&check if the ghg values match the year �o�X���F������������^��j������@ �����������j����p��@ 0����������X���F����������^���������������f�01/01/���� ��j�������e����������������^������������������������������������&��������������0��������������B��������P���>�������^rundeck�rundeck���� ��j��������Z$���&��e��������������^�I����n������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����?������������Z$���&����������������� ^�$����������������^�n���\������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$�����Z$���&�������������������^s�>���,������������^listItem$�listItem$����@���������H���6���������� ^str �GetListItemStrA�listRef��listItem$���j���X������������^rundeck�rundeck�����str��^0��� �����������Z$���&����>���,���������� ^listItem$�listItem$����?��������e�H���6������������^str �GetListItemStrA�listRef��listItem$����j���X������������^rundeck�rundeck�����str��^0��� �����������Z$���&����>���,���������� ^listItem$�listItem$����?��������e�H���6������������^str �GetListItemStrA�listRef��listItem$��j���X���������� ^rundeck�rundeck�����str��^0��� ��&���������Z$���&��n�>���,���������� ^listItem$�listItem$����?��������e�H���6������������^str �GetListItemStrA�listRef��listItem$����j���X������������^rundeck�rundeck�����str��^0��� ��0���������Z$���&����>���,���������� ^listItem$�listItem$����?��������e�H���6������������^str �GetListItemStrA�listRef��listItem$��&����n���������� ^rundeck�rundeck�����str��^0��� ��B���������Z$���&����@�����������>���,���������� ^listItem$�listItem$����?��������e��������������� ^�6���$���������� trends are handled differentlyle�Z���H���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$��� ������������� ^��������L���:������������^rundeck�rundeck���enabled����Z$���&�������x������������^rundeck�rundeck�� �Rundeck_Summary_Trend�CO2�j������j�������ppm�j������j���������������������� ^rundeck�rundeck�� �Rundeck_Summary_Trend�CO2�j������j�� �����ppm�j�� ����j�� ��������Z$���&��������W����� ^�$�d���R���������� ^rundeck�rundeck���disabled�����Z$���&����@����������u�������������� ^l�>���,������������^listItem$�listItem$����?�������_T�Z���H���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$��� �������������^��������L���:����������^rundeck�rundeck���enabled����Z$���&��&����x����������^rundeck�rundeck�� �Rundeck_Summary_Trend�N2O�j������j�������ppm�j������j�������l�������������� ^rundeck�rundeck�� �Rundeck_Summary_Trend�N2O�j������j�������ppm�j������j����������Z$���&��������S����� ^�$�d���R���������� ^rundeck�rundeck���disabled�����Z$���&����@����������u�������������� ^�$�>���,������������^listItem$�listItem$����?��������Z���H���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$��� ������������� ^��'������L���:������������^rundeck�rundeck���enabled����Z$���&�������x���������� ^rundeck�rundeck�� �Rundeck_Summary_Trend�CH4�j��(����j��)�����ppm�j��*����j��+�����;�������������� ^rundeck�rundeck�� �Rundeck_Summary_Trend�CH4�j������j�������ppm�j������j����������Z$���&��������;����� ^�$�d���R���������� ^rundeck�rundeck���disabled�����Z$���&����@����������u�������������� ^l�>���,������������^listItem$�listItem$����?�������is�Z���H���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$��� ������������� ^��1������L���:������������^rundeck�rundeck���enabled����Z$���&�������z���������� ^rundeck�rundeck�� �Rundeck_Summary_Trend�CFC11�j��2����j��3�����ppt�j��4����j��5������������������� ^rundeck�rundeck�� �Rundeck_Summary_Trend�CFC11�j��6����j��7�����ppt�j��8����j��9��������Z$���&��;������5����� ^�$�d���R���������� ^rundeck�rundeck���disabled�����Z$���&����@����������u�������������� ^l�>���,������������^listItem$�listItem$����?�������_T�Z���H���������� ^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$���� ������������� ^��C����r�L���:������������^rundeck�rundeck���enabled����Z$���&�������z���������� ^rundeck�rundeck�� �Rundeck_Summary_Trend�CFC12�j��D����j��E�����ppt�j��F����j��G�����"�������������� ^rundeck�rundeck�� �Rundeck_Summary_Trend�CFC12�j��H����j��I�����ppt�j��J����j��K��������Z$���&��;������5����� ^�$�d���R���������� ^rundeck�rundeck���disabled�����Z$���&����@����������u�������������� ^r�>���,������������^listItem$�listItem$����?��������������������������^���� ������������orbits��Z���H������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����z���h������������^��x���������������������w���������������������y���������������������$������������� default orbit��d���R������������^rundeck�rundeck���: modern�����Z$���&����@������������>���,���������� ^listItem$�listItem$����@��������_T�������������� ^r� ��������������� set orbit��>���,������������^listItem$�listItem$����?�����������������������^rundeck�rundeck����Z$���&��� �GetListItemStrA�listRef��listItem$����� ��w��������Z$���&����>���,���������� ^listItem$�listItem$����?��������e����p������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����� ��x��������Z$���&����>���,���������� ^listItem$�listItem$����?��������e����������������^rundeck�rundeck�� �GetListItemStrA�listRef��listItem$����� ��y��������Z$���&����@������������������������� ^�$�>���,���������� ^listItem$�listItem$����?������������������������������ ������������cleanup���0���������������#^Rundeck_Summary�rundeck���$���������������^y�listRef�������������������������������������DFCC4Ds�,�`���N�� ]�� ]���8FResize the length of the run list manually to match the height of the ��\�b���P����������8Hwindow. This replaces the autoresize option because I need the group to ����*����������������8shrink properly ���:���(���������8!Now has Run list as the 2nd item �����������r������������ �������������8var �����"�������������topg+�$�����������Z^��left"t�&����������������bottoml"�$�����������{{��rightdu�*����������������� windHeightw���&����������������divPosl"�$�����������{s��item"f�V���D������� toolHeightt� listHeightl� subHeight� newHeight���������\�<���*����������8#get the height of all the sections ����2��� ���������� toolHeightt��������������T���B����������item��?������� � ToolbarLeno�@��?������� s�V���D���������� �ToolbarVisible�itemb�@��,visible section �J���8���������� � ToolbarStateo�itemb�@��,closed �D���2���������� toolHeightt� toolHeightt��@��@�������� � ���������?�����open � s�d���R���������� toolHeightt� toolHeightt��@ � ToolbarHeight�itemb��@��@������������������������� s����������������x�����������������������������\�6���$����������8get the height of the window ���B���0�����������left�top�right�bottomlID�J���8���������� windHeightw�bottoml�@�top�@��@���������0������������� newHeight�������������ad�X���F�����������@\� List_List�left�top�right�bottomle�������������\�X���F�������������8>if the sections are too tall shrink the runlist (if possible) ,� �:���(�������������� toolHeightt�@� windHeightwSt�|���j������������� �ToolbarVisible��@���������@���@ � ToolbarStateo��@���������@��un�*����������������8get heights ��8���&������������� listHeightl�bottoml�@�top����B���0������������� subHeight� toolHeightt�@� windHeightw�nd�J���8�������������� listHeightl�@� subHeight�@��@��������@���.������������� newHeight� listHeightl�@� subHeight�� ���������������������0���������������� newHeight��@�������� o���������5��������^���L���������� newHeight� listHeightl�@� newHeight�@�@��?����������.�������������8shrink run list ����p���^�����������@\� List_List@������������������������������������� newHeight�r���������8�������������������������"�����������������(�j���X�������������8Qif the sections don't take all the space then lengthen the runlist and push the �de�:���(�������������� toolHeightt�@� windHeightw��|���j������������� �ToolbarVisible��@���������@���@ � ToolbarStateo��@���������@��ƀ�*����������������8get heights ����X���F��������������@\� List_List�left�top�right�bottomlte�8���&������������� listHeightl�bottoml�@�top����B���0������������� newHeight� windHeightw�@� toolHeightt���.������� ������8resize run list ����p���^���� �������@\� List_List@������������������������������������� newHeight���������� ��������������� �������rf�������� ������\�>���,���� ������8$move other sections & change height ����8���&���� ������� newHeight�@�������������B���0���� �������item��@�������� � ToolbarLenol����r���� �������@ � ToolbarName�itemb��@\�@������������� newHeight�������������������������.����|���� �������@\�z��@ � ToolbarName�itemb��@\�@������������� newHeight���������������������������������� ��������j���X���� ����� � ToolbarHeight��@�������� � ToolbarHeight��@����������@� newHeight����������� �������������� �����\�:���(���� �4������?��������@��@�����������\���J���� �������@\� zList_Divider�left�top�right�bottoml�0�*������� ������divPosl�bottoml��t���b���� �������@\�List@�left�bottoml��@��?��������right� windHeightw�@ge�������� �����\�F���4���� ������8-need to update height because it is dynamic ��H���6���� ������� windHeightw�@�bottoml�@������������ef�P���>�������������item�� � ToolbarName\�List��?����������N���<������������ � ToolbarHeight�itemb� windHeightw�@�bottoml������������������������������������������x����DFCC4D#���d���R��������d�d@0�Kthis code takes in the field to sort and the name of the text to change the@b�D���2��������d�d@0�*sort order and undeline the collumn headerh@����� ��������d�d@0�input@���&�����������d�d@0� ->[db]field@��0������������d�d@0� name of collumn header@��������������d�d@"�,������������d�d@-@ @�@@field_p@@�:���(���������d�d@%@@%@�������@@ fieldName_s@@���$������������d�d@field_p@ @�@ "�(������������d�d@ fieldName_s@ @�@�������������d�d@"�������������d�d@@���D���2���_�����d�d@0�+order based on what has been clicked on @`�*�����������d�d@@@�@$@��@@���8���&���������d�d@�1@@�����@@field_p@@�@f@@���<���*���������d�d@�@�@@@� FieldLabel@@$@��@@���Z���H��������d�d@�@�@@@� FieldLabel_�@�@ fieldName_s@$@���@�$@��@@���������������d�d@"�6���$��������d�d@0�initially order by run number@���*������������d�d@@@�@$@��@@&�4���"���������d�d@�1@@�����@@����@�@@@��<���*���������d�d@�@�@@@� FieldLabel@@$@��@@g_�R���@���������d�d@�@�@@@�FieldLabel_RunNumber�@$@���@�$@��@@n �������������d�d@���������������d�d@@����������������������DFCC4D,TV�^���L��'��&��b$Gstart process to start GCM, this gets around the dialog locking problemV����������b$������� ���������b$ input������ ��������b$ none������ ����:����b$ output���� ���������� b$ none�a�,�����������0001� #@Setup_ProcessID�08�������������EMaker�0���������������b$find if setup is running����\���J��������TAT @ @Process_FindWindow #@Simulation_ProcessID(��@������������.0�R���@�������� S b$:if setup is open do the setup in through the setup process<??�6���$�������� 0:0#@Simulation_Button@�@������� a�2��� ��������@I #@Simulation_ProcessID(����������������@���P���>��������b$8if setup is not running then setup through a new processO��������������&�����������b$update window $��*���������������b$Safe_SaveSimulation���P���>������������@� @������ @Run_Critical_GetRunN; @�@���������7�����������������������2��� ������������b$start process to run model���d���R������������#@Setup_ProcessID@= w�Setup_StartGCM�#@ StackSize�w� Setup_Process�������������������@��@I #@Simulation_ProcessID(����������������@���P��DFCC4D[�N�/�T���B��'��&��b$=assess if the new entry is acceptable for the assignment list���D���2��������3@��b$,if so add it to the database and to the list����������������b$������� ������������b$ input������ ��������b$ none�M���� ����������b$ output������ �������� b$ noneno�������������H2M12.�8���&��������14.4b$!check that the user picked a typeol�T���B��������TAT �  @R1��8@�?����������  @R2�8@�?��������� �:���(�������� @ @� @Name���@������������.5�.�����������@ @ AssEditMode�@���D���2��������kZo{@found @Assign_FindRecord @��7 @Nameg����������������@��� �����������@found@�������������@�>���,��������@ @ AssEditMode��  @found�@���������������@�:���(��������@ @R1u�8@�?��������wXfile�R���@��������)))% @Assign_DoRecord 7 @Nameg�@�?��������7 @filenamef����:���(��������@ @R2l�8@�?��������wXhtml2��L���:������������b$4check that URL contains http:// and add if necessary���F���4������������@ @� w�http://� @Url��8@���������������0��������������� @Urlw�http://�� @Url������������������@���L���:������������ @Assign_DoRecord 7 @Nameg�@�@���������7 @Url����8���&������������@ @R3l�8@�?��������wX?? ������������������@�&������������������@������������������@�&��������������.@..����������������@���H���6������������ @Alert_ParamText @Namet�w���w���w������R���@������������ @ Alert_Alert @�@���������@�@��������@�@���������������������������@�&��������������9@99����������������@���R���@������������ @ Alert_Alert @�@���������@�@��������@�@���������������������������@�&������������������@������������������@���R���@������������ @ Alert_Alert @�@���������@�@��������@�@���������������������������@�&������������������@�� 0���>���,������������@#@Simulation_Button�@�?�����������6���$������������#@Simulation_Button@�@����������2��� ������������@I#@Simulation_ProcessID(�������������������@���6���$������������#@Simulation_Button@�����������������������������@������������DFCC4D^M�:B�8���&��'��&��`D!setup the post processing processZR�2��� ������������ #@PostProcessing_Button����0��������������@ #@SetsCurrentVersion��*�����������0001@1 @ StartEndReady�00�:���(��������EMak@� @ TabSavedYears�@���������������B���0������������@ @SetButtonTextAlready(� @ TimerCounti����:���(��������aaaa @SetButtonTextAlready(@�������������0��������������� @ TimerCounti@���������������������������������d���R������������`DMoffically assign name/number pairs for the tabs to avoid the ordering problem��d���R������������`DMcause by Mark's name of the week way of handling tabs in Analyze Output. This���h���V������������`DQfixes a problem where the form pages have problems when the tab order is changed.���X���F������������@ @ pTimeSeries� @pMaps� @ pVertical� @pZonalc� @pTables����*������������� @pMaps@�?����������.��������������� @ pVertical@�@�����������,��������������� @pZonal�@�@��������w �0�������������� @ pTimeSeries@�@����������,�����������^4 @pTables@�@����������������������������&�����������@���`Dopen the window���:���(������������#@PostProcessing_Button@��������������.���������������@�C w�PostProcessing����B���0��������� @�7 @������w�PostProcessing Too��X����~���l������������`DQmyWind:=Open form window([PostProcessing];"PostProcessing Too";Plain window ;Too`Dlbar_Width;45;*)m������������������ @myWind�@� #@ Toolbar_Width�@�@��������@�@���������#@ Toolbar_Width�@�@@��������@�@��������$@�"� �w�Analyse Output�w� Generic_Close�������������������������� ������������@F @B����$��������������A@ @myWind������������������������4���"�����������`Dsetup database tables & sets������ ������������@� �X����"���������������@� @��������"��������������@� @���������"���������������@� @�������"���������������@� @���������"���������������@� @���������"���������������@�/ @���������"���������������@�/ @���������"���������������@�/ @�������"���������������@�/ @���������0���������������@�t @������w�All AJ����0���������������@�t @������w�All AIJ����0���������������@�t @������w�All AJK����2��� ������������@�t @������w�All ALat����<���*��������@ @������@�����w�Tables��:���(��������@ @�L @�������@������������)�"�����������@�D @�������(����������� ))@����w�Tables�"���������������@�5 @������������������������@���"���������������@�/ @���������"���������������@�2 @���������������������������� ���������������`D temp hack���&���������������@����w�Jean���(���������������@����w�Default���&���������������@����w�Jean���(���������������@����w�Default���"���������������@�5 @���������������������������� ���������������`Dset pref���"���������������@�/ @���������"���������������@�2 @������������������������&���������������`Dsetup the restg�(��������������� @ StartEndReady@����6���$��������! `DRunArray_ManagePostProcessors ..�(��������������� @Run_PostProcessing���"��������������� @ SetArray_InittS�,��������������� @PostProcessing_SetsSet���(��������������� @ StartEndReady@����*���������������`DSafe_CurrentState H������������������� @����������������@���(���������������@�9 @�������X�so�0��������������� @ @OK�@������������or��������������������V���D������������`D? The close box associated with this window pauses the process. ra�Z���H������������`DB The window stays ready for use throughout the use of the program.��������������������h���V�����������#@PostProcessing_ProcessID@������������� $ Reset process ID tracking variable.����������������������*���������������`D End of procedure.H��������������������������������������DFCC4DRn�{�:���(��%n��$n��gS"Dialog to ask about creating a setNT��������*����^������@���������dP��@�������������@���������dP��@�������������@���������c���@�������������@���������c���@��������$��'���New Set�y@ Open a modal windowc���8���&���������� ^ FolderTextod�Name of new set:�S�.�������������� ^ Foldernameod�new set�<���*�����������^�(��������PastePICTNewFolder��������������0001^�00�,�����������EMakScheck they clicked okns�0�����������^ �OKd� ��?�����������6���$��������Scheck for a unique record name�J���8��������^������� � Foldernameo��p��������������,�����������111 ^setNamed � Foldernameo S�"�����������^��������� ����������� ^ Sets_Create�"�����������RRR^����������"��������������^���������@���.��������S)open the sets window if it is not already�6���$�����������^stated�J#�Sets_ProcessIDA�R�2��� ��������^�state������������������ ������������ ^ Sets_Open������������������^���T���B������������S<reopen the window/bring to frount and change the current setA������ ������������ ^ Sets_Open���"���������������S set the set���0���������������#^ Sets_Buttond��@����������,���������������^I#�Sets_ProcessIDA�������������������^������������������^���N���<������������ ^Alert_ParamText � Foldernameo���c���c���c����B���0������������ ^ Alert_Alert��?����������@��������������������������^������������������^����������������������DFCC4D�(�2��� ��%��$��gSChange which window is openDT���� �����������S input�$��������������S mode to use���(���������������� @��@mode����� ���������������@mode�> @����������������)))%������������@�(��������������@@�$@������(����������� @ViewModeV>@modeM���� ��������SOK:=0������������@ ������������@ ������������111@��������DFCC4D>1�j�f���T��%��$��gSOSee if there are any serious errors in a simulation that would break a rundeck.Z�T���B�����������S<If there are serious errors then a warning dialog is put up.����P���>������������S9Output is true/false based on if the simluation looks ok.�������������������������������Svar������ ������������1 @�����&�����������@@ error_num��:���(��������@%@�@�������� @ RundeckTitlen��8���&����޺��� @%@�@�������� @ RundeckDesc��e�J���8����޺�� �@�@�@�������� @ RundeckErrors�@�@���������a�$�������޺���@@listRef��R�$�������޺���@@listLen��i�(�������޺��)� @@ listItemRef�����������޺���)����� ����޺���[Ssetup� �:���(����޺��e�r@listRef*@w�lRundeck Errors��r�0�������޺�����@listLen*@|@listRef����T���B����޺��� @ RundeckTitlen* @GetListItemStr*@listRef�@�?���������e�R���@����޺�� � @ RundeckDesc* @GetListItemStr*@listRef�@�@����������m���������޺����(�(�������޺���Saccumulate errors�g�.�������޺��)� @ error_num*@������������I�:���(����޺���)@@�@������@��������������>���,����޺���[@ error_num*@ error_num�*�@�?��������t�|���j����޺��e�r @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@����������S��������޺�����@���6���$����޺�����@@�����@�fw�l0/0/0�����>���,����޺�@ error_num*@�?��������*�@ error_num�|���j����޺� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@����������������޺�@�6���$����޺�@@�����@�fw�l0/0/0���>���,����޺�@ error_num*@�?��������*�@ error_num�|���j����޺�  @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@���������E��������޺���@�E�:���(����޺���@@�@������@������������_n�>���,����޺��)� @ error_num*@�?��������*�@ error_numrr�|���j����޺���) @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@���������c��������޺���[@�:���(����޺�@@�@�|�����@������������_n�>���,����޺�@ error_num*@�?��������*�@ error_numrr�|���j����޺��� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@�����������������޺��s�t@����x����޺��E�n@@�@������@�������������x @�����w�l2YOU MUST TYPE A SHORT DESCRIPTION OF YOUR RUN HEREg����>���,����޺��m�S@ error_num*@�?��������*�@ error_numrr�|���j����޺��o�r @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@�����������������޺���3@�2��� ����޺��o�r@@�����wl@������������@�>���,����޺� @ error_num*@�?��������*�@ error_numrr�|���j����޺��� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@���������o��������޺�� �@�l�2��� ����޺���@@�����wl@��������������>���,����޺���@ error_num*@�?��������*�@ error_num�r�|���j����޺��)� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@���������0��������޺���)@��2��� ����޺���[@@�&����wl@�������������C�>���,����޺��r�_@ error_num*@�?��������*�@ error_num��|���j����޺��E�A @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@�����������������޺�@�2��� ����޺�@@�0����wl@������������@�>���,����޺�@ error_num*@�?��������*�@ error_numrr�|���j����޺����� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@������������������޺�����@ R�2��� ����޺�����@@�B����wl@������������@�>���,����޺�����@ error_num*@�?��������*�@ error_numrr�|���j����޺����� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@������������������޺�����@ R�2��� ����޺�����@@�T����wl@��������������>���,����޺�����@ error_num*@�?��������*�@ error_num���|���j����޺����� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@��������?��������޺���@ R�4���"����޺�����@@�����*@�@������s �>���,����޺�����@ error_num*@�?��������*�@ error_num��|���j����޺����� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@������������������޺�����@ R�X���F����޺�����@@�����@�@�����������x@�������@�@ �����������>���,����޺�����@ error_num*@�?��������*�@ error_num��|���j����޺����� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@��������@��������޺�����@ R�T���B����޺�����@@�����@�@�����������x@�����*��� ��0,�>���,����޺����@ error_num*@�?��������*�@ error_num���|���j����޺��� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@����������������������8��@ e� ��������������@@�����rs�4���"��������@@@�@������ @��������>���,��������?�@ error_num*@�?��������*�@ error_num R�|���j����������� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@��������������������������@ e����������������@ R�\���J������������@@�y���� ��*`@�@���������x @�y���� @�@�����������>���,������������@ error_num*@�?��������*�@ error_num@�|���j������������ @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@��������������������� @��\���J������ �@@�x����wl�*`@�@���������x @�x����*@�@����������e�>���,�������@ error_num*@�?��������*�@ error_num��|���j������� @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@���������r����������)� @��X���F����������)@@�w����wl@�������������x @�w����*@�?����������e�>���,����������[@ error_num*@�?��������*�@ error_num�t�|���j���������e�r @ RundeckErrors�@ error_num*@� @ error_num��*� @GetListItemStr*@listRef�@�@���������S�������������4�0@�����������������@�&������������� Sdisplay results�m�6���$���������L�E@@ error_num�@�������������t���� ������������ @��*@���������������EMak@ S�*���������������Scleanup array listi���j���X���������@� @ RundeckErrors�@ error_num�*�@�?��������@�@��������*`@ error_num��&�����������Serror dialog ���>���,���������@�7@������w�lRundeck Errors�����������������@�@��*`@�@��������� @�@���������@��*`@�@��������� @�@����������*`@�?���������*`@�?��������$@�'��w�l�*����8���&�����������@�(@������w�lRundeck Errors������������������@������� ������������ @��*@�������������������@������������������������� ������������Scleanup���$���������������@y@listRef����*���������������@�Y @ RundeckErrors����*���������������@�Y @ RundeckTitlen����(���������������@�Y @ RundeckDesc�������������������������������������������������DFCC4Dg �,z��d���R�� ]�� ]���8JPM_RecursiveCopy as the name implies copies a folder and all its contents ��k.�f���T������������8Lto another location. The most common case for this is a package application ��8�4���"������������8which is really a folder. �������������������8 �tL� ����������������8 input �ck�V���D�������������8= source path & folder name, eg Mana:Applications:Safari.app ��J���8�������������81 dest path & folder name, eg Mana:Safari1.2.app ��"����������������8 output l���6���$�������������8 errors (longint), 0=noerr Z����P���>������������(%y(�@�������y (�y (�y(srcPathy(destPath�yy��(���������������(y (��y(erryyeI�8���&������������(y( folderCounty( fileCountyy���H���6������������(�y(�@�������y(fileList�y(�����������yy�J���8������������(�y(�@�������y( folderList�y(�����������yy�$���������������(srcPathy (�( �&���������������(destPath�y (�(rs�*���������������(erry(�����������(����������������([�$����������������8 path test <�ef�@���.������������(y(y(destPath�y�y@(�����������yy�4����������������y[�>���,�������������8%create folder and get info about src ����(���������������(y(destPath�yy�4���"������������(y(srcPathy(fileList�yy i�6���$������������( fileCounty(y(fileListtyyn �6���$������������(y(srcPathy( folderList�yy� �:���(������������( folderCounty(y( folderListtyy�����������������y��6���$�������������8recurse over the folder list �� �:���(������������(y( folderCount�y@(�����������yy��>���,������������(y(iy(�?�������y( folderCountyy������������������ (PM_RecursiveCopyy ( PM_MakePathy(srcPathy( folderListhy(iyy(�yy ( PM_MakePathy(destPathay( folderListhy(iyy(�yyy� ����������������((@����������������((@����������������(��(����������������8copy the files ��8���&������������(y( fileCount�y@(�����������yyor�<���*������������(y(iy(�?�������y( fileCountyy������~������������(y ( PM_MakePathy(srcPathy(fileListay(iyy(�yy ( PM_MakePathy(destPathay(fileListay(iyy(�yyy�s����������������((������������������((������������������(( o�.���������������(erry�y@(�?�������(������������������((������������������([�"����������������8cleanup l�um� ��������������� (��y(err(�������������������������������������������������DFCC4D(�\y�V���D�� �����7d=create subrecords, up to ten not counting those already there�@�,�����������MUTX\- ����subPtr��@�$��������������\�count����$���������������\subPtr� ���s ����������������[�*�����������opsi�7dcount subrecords��(�������v��\�m�subPtr}����D���2����v�����\count��@�������������subPtr}����������v������(�4���"����v�����\�count���������������� �������v�MUTX�7dcreate����8���&���������\�i���?���������count�����(������������\�H�subPtr}����D���2���������7d*[Model Variables]Keywords'Keyword:="empty"�y������������\\ o������������\\������������������������������������DFCC4DT-�,E�V���D��$��#��L?Create the traditional sections of the rundeck that are used byB�T���B��������o��=the setup script. These sections are lovingly redendered with���\���J�����������Dfull accuracy for the historically minded. However as of the current���Z���H�����������Cversion the object modules section is replaced with a model versionI�*��������������section from 2.4.1���������������000100������������EMakvarli�6���$������������^�� modelgrid���@����������������������������:���(����������C#traditional human readable header ��l���Z���������a�y^������������.R Model II ���� ��v����y@writes the run number�)��������������^�������������Z$���&����@������������ Creator: �����������Z$���&�y@ writes ownery��n���\����H�� �^������������ Comments: �����|�������Z$���&����@����������>���������H��M�o�d�$�������H��b�l model version�B�6���$����H��� ^GetModelAndGrid�� modelgrid��R�P���>����H��C�a^������������Model version:����Z$���&����������H��n�^������������ Model=��� �GetListItemStrA#� ModelNamesRef�� modelgrid���?������������Z$���&��l��������H��o�d^������������ Grid=�� �GetListItemStrA#� ModelGridsRef�� modelgrid���@�������������Z$���&����@����������k���������H�� ���,������������s�tdata and input files��V���D����������^������������Data and input files:����Z$���&��M�:���(��������� �r^����������������������� �R���@���������g�r^������������ 7=�����������Z$���&��c��������������^�[�:���(���������e�l^����o�������������������>�R���@���������)� ^������������ 9=����o�������Z$���&���������������[�M^�d�:���(���������e�l^������������������������R���@����������^������������ 15=�����������Z$���&������������������^�`���N������������^�����������������������������������������������R���@������������^������������ 17=�����������Z$���&�������������������^�:���(������������^����~��������������������R���@������������^������������ 19=����~�������Z$���&�������������������^�:���(������������^������������������������R���@������������^������������ 21=�����������Z$���&�������������������^�:���(������������^������������������������R���@������������^������������ 22=�����������Z$���&�������������������^�:���(������������^������������������������R���@������������^������������ 23=�����������Z$���&�������������������^�`���N������������^�����������������������������������������������R���@������������^������������ 25=�����������Z$���&�������������������^�:���(������������^������������������������R���@������������^������������ 26=�����������Z$���&�������������������^�:���(������������^������������������������R���@������������^������������ 29=�����������Z$���&�������������������^�`���N������������^��������������������������������?������������R���@������������^������������ 62=�����������Z$���&�������������������^�8���&������������^�������������Z$���&�������������������^�*���������������label and namelist�Z�T���B������������^������������Label and namelist:����Z$���&����|���j������������^������������������� (0����������)����Z$���&����@���������������������DFCC4D"O�,^�|���j�� �� ����8Qrun ostpec, now does the multipliers for the ocean heat transports as per Gary's �8 instructions ��]�$��������������((diag�3�8���&�����������(%(�@�������( diag_path���*���������������(2( docref_full�"���������������((posmR�$��������������((iteme3�6���$�����������((COT_Mult�(AMP_Mult���������������chic� �������˞������8setup ��en�.�������˞�����( diag_path ( InputPath(����������˞�����(3�(�������˞������8do multipliers �B��*�������˞�����(COT_Mult�(�� ��(3�*�������˞�����(AMP_Mult�(�� ��(�8���&������������((COT_Mult��@(�?����������0���������������(COT_Mult�(�?�������(e ����������������((im�8���&������������((COT_Mult��@(�@����������0���������������(COT_Mult�(�@�������(to����������������((�8���&������������((AMP_Mult��@(�?�������ar�0���������������(AMP_Mult�(�?�������(ct���������������((3�8���&������������((AMP_Mult��@(�@�������3�0��������������(AMP_Mult�(�@�������(�Z������������6���((e ������������6���(3�,����������������8set otspec.I file ^�@�`���N������������(diag�(� (�� ���@(�� ����@(�?���������@(�Z$(��&�d�n���\������������(diag&(diag&��@ ( RealToF18.5(COT_Mult8�@(�@���������@(�Z$(��&���n���\��������P(diag&(diag&��@ ( RealToF18.5(AMP_Mult8�@(�@���������@(�Z$(��&���Z���H��������3���(diag&(diag&��@ ( OutputPath���@�XCORR��@(�Z$(��&�N���<������������((( diag_path��@� FOR026.DAT,�@$(�����^���L������������(diag(diag��@( diag_path��@� FOR015.DAT&��@(�Z$(��&���z���h�����������(diag&(diag&��@( diag_path��@�ocean��@ (PathCharh��@� OceanFlux��@(�Z$(��&3�^���L������������(diag&(diag&��@( diag_path��@� FOR025.DAT&��@(�Z$(��&���^���L������������(diag&(diag&��@( diag_path��@� FOR026.DAT&��@(�Z$(��&������������������((lo�Z���H������������(diag&(diag&��@( diag_path��@�fort.15��@(�Z$(��&�z���h������������(diag&(diag&��@( diag_path��@�ocean��@ (PathCharh��@� OceanFlux��@(�Z$(��&�\�Z���H������������(diag&(diag&��@( diag_path��@�fort.25��@(�Z$(��&��Z���H������������(diag&(diag&��@( diag_path��@�fort.26��@(�Z$(��&����������������((�^���L������������(diag&(diag&��@ ( OutputPath���@� tg_arrays��@(�Z$(��&������������������(diag&(diag&��@ ( OutputPath���@�otspec_��@(������@�_��@(� (COT_Multt�@(�@��������##0.00P��@�.otsp��@(�Z$(��&am�`���N������������(diag&(diag&��@ ( OutputPath���@� otspec.prt&��@(�Z$(��&3����������������3�:���(�������������8!write out the .I file and launch ���R���@������������ (OHT_SaveAndLaunch(diagS�otspec.I��otspecP3����������������������������������DFCC4DU8�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](qun_Critical_BeginN���<���*�����������p#@RunNumberArrayz�@�������������4���"�����������#@RunNumberArrayzN@�?������������������������@���D���2������������@} @RunNumberArrayHierN�#@RunNumberArrayH����&�����������8d @Run_Critical_End��*��������������� @Run_UpdateSimControls���&�����������@��� @Toolbar_IBC_View���&��������������� @Toolbar_IBC_Sort��������������������������DFCC4DW�~�N���<��"R��!R��,�27Shows the user the run folder in the Finder, similar to �0������������2the same meathod in Setup�����������~�����������������������2var��� �����������^�err���6���$������������^%��@��������� runFolder����������������N���0�����������0001�2find run folder and open���,�����������EMak^ runFolder �Run_PathRns�8���&������������^�� runFolder���R$�������D���2���������t�h^��p��� ShowFolder��� 3;1;?2002;240��o�,�������������� ^ FinderToPathn��������������������^���D���2��������^��p��� ShowFolder��� 3;1;?2015;240�������������^��������������DFCC4D  �H���6�� �� �� �7d.this code loads a section into the text windowd���� �������������7d input`��8���&���������7d section number (0 = abstract)����4���"���������� ] ����currentSectionA���,��������������]currentSectionA. ��� ������������o I.���2��� ��������0001�7dsection 0 is the abstract����>���,��������EMak]�currentSectionA�������������������4���"������������ ] SectionTitlec.��Abstract������������������]]�R���@��������stri ] SectionTitlec.��Section ��.� �� �currentSectionA���������������]]lo�H���6��������� ] SectionText. �ItemTextI�currentSectionA.���[����������������������DFCC4DQ�k�6�f���T�� �� ����8MPath Manager is a global cache of paths to important files for EdGCM and 4D. ��@�f���T������������8LThe goal of Path Manager is a cross platform path system that proviedes the ���X���F������������8?features simiar to FindFolder in Finder.p and LaunchServices.p �������������������]�"�����������MUTX�8globals l�ie�:���(�����������6(%(�@��������#( PM_PathChar���,�����������MUTX(#( PM_PathASCII����H���6��������(%(�@�������#( PM_Database#(PM_EdGCMa�[�<���*������������(%(�@�������#( PM_EdGCM_Unix���*��������������(#( PM_Platform�.�����������(#(PM_PlatformVers���>���,����������'(%(�@�������#(PM_PlatformName���*�����������V(#( PM_ListRef�hR�F���4��������y(( vlPlatform�(vlSystemr( vlMachine����������������]�^���L�������������8DUse sample code from the PLATFORM PROPERTIES command in the manual, ����`���N�������������8Gbut the Windows version is broken so I use the system folder to figure �(�&����������������8 things out. �����X���F������������8>Gets all the platform information for the basis of the paths ����F���4������������(m( vlPlatform�(vlSystemr( vlMachinele�2��� ������������#( PM_Platform( vlPlatformm(�f���T������������(( vlPlatform��@(�?�������� @(�@���������@( vlPlatform����,���������������( vsPlatformOS���������������������((��:���(������������(( vlPlatform��@(�@�����������,���������������( vsPlatformOS������f���T�������������8LIn Win2K the system folder is called WINNT while in WinXP the system folder ��(�f���T�������������8Lis called WINDOWS so I can distiguish between systems this way. 98 probably ��ia�N���<�������������84is tagged as XP but 98 isn't a supported OS anyway. ����$���������������(winSys�((ll�J���8������������((���WINNT(winSys��@(�����������io�8���&������������( vsPlatformOS�� Windows 2000��.���������������#(PM_Vers(�@ �������(������������������((�6���$������������( vsPlatformOS�� Windows XPck�.���������������#(PM_Vers(�@ @������(������������������((v�t���b�������������8Q$vsPlatformOS:=$vsPlatformOS+" version "+String($winMajVers)+"."+String($winMinVe�8rs) l�r����������������((v�N���<������������((vlSystem��@(�@��������@(�@����������4���"������������( vsPlatformOS��MacOS X ��B���0������������( vsPlatformOS�( vsPlatformOS���@�10pt�.���������������#(PM_Vers(�@�������(������������������((�:���(������������( vsPlatformOS��MacOS version ck�`���N������������( vsPlatformOS�( vsPlatformOS���@(� (vlSystemr�@(�@��������|�>���,������������#(PM_Vers(vlSystem��@(�@�������(������������������((im�t���b������������#(PM_Vers#(PM_Vers��@(vlSystem��@(�@��������@(�@��������@(�?�(K����������������( vsPlatformOS�( vsPlatformOS���@�.��@(� (vlSystemr�@(�@��������@(�@���������@�.��@(� (vlSystem��@(�@��������@(� (vlSystem��@(�@��������@(�����������`����������������((c����������������((up�8���&������������#(PM_PlatformName( vsPlatformOSa(�����������������(���,����������������8path for platform ^�`�4���"������������(#( PM_Platform�@$(��de�*���������������#( PM_PathChar�: �4���"������������#( PM_PathASCII�(�[�:7d�8���&������������(\_tWindows uses forward slash \ \�*���������������#( PM_PathChar�\ �4���"������������#( PM_PathASCII�(�[�\�����������������(( ����������������(3�$����������������8 base paths �sc�(���������������#( PM_Database((���D���2������������#(PM_EdGCM� ( PM_UpOneLevel#( PM_Database�B���0������������#(PM_EdGCM� ( PM_UpOneLevel#(PM_EdGCML���<���*������������#( PM_ListRef�(� PM_Folders��2��� ������������#( PM_EdGCM_Unix�../../P���������������������������������DFCC4Dle�[�%�R���@��!6�� 6��,�7d:Convert a real into the decimal format used in a namelist.�DE�T���B����x����G�7d<Unfortunetly German, French and some other languages format ��X���F������ �:�7d@reals as 10,0234 instead of 10.0234 which prevents the formatter��,�X���F������$�t�7dAfrom working right. The fixed code is here and builds on the fact�n�\���J����������7dDthat Fortran requires the format to be 10.0234 but converting , to .w���$���������Z�7d is harmless.�li�����������������7d�z���� ����B�����7d input0������ ������������7d real0���� ����������7d output�d�2��� ��������\�7d string in namelist format"\���� �����] ����8���&��������]%��@���������temp� �����(������������]� decimalPosd��e�.������������e���7d$sample:=14654.54654654���(��������������]tempw��  ������<���*��������EMak]tempw���temp���,���.��:���(��������0001] decimalPosdw����.��temp�00������������EMak] S�\���J������������]� decimalPosd���������������no decimal point, add it to end���,�������������� ]��w�temp�w���.,p�h���V��������ww]� decimalPosd����?��������*decimal point is first char, add leading 0�g9�4���"��������� ]��w��0�w��temp�w���,�&�����������_]r]w format is ok@J�*������������ ]��w�temp�w���,������������{s]w�����������������������������������������������������������������������������������DFCC4DY�?n�h���V��&��%��gSPWhat to do when the play button is pressed. Normal runs started if they are new ifs�h���V���������-��SPand restarted if they already exists. Scenarios are duplicated and archived runsiat�f���T��������SOare denied. The scenario duplicate is now handled by special code in Simulation���d���R�����������SMinstead of putting up an alert here. Now disallows starting a run twice. Now �h���V�����0001SPmakes sure that the semaphore is set first, this is tricky because the semaphorei23�f���T��������EMakSOmust be released for Setup_Open to work (SafeSave ends up trigger the semaphore f�8���&���� ��� S in the Setup Simulation window).� �������������i�oS��p���� ���������S input������ �����������S none������ ���������S output������ ��������dS none�����������������(�������������� Run_Critical_Begin>��<���*�����#@RunNumberArrayz�>@������������++����������������@���D���2���������@#@Run_RunNumScenMast��#@RunNumberArrayM����(��������������SSimulation_Open ���b���P����R�@@�" @Run_FindOneProcess>#@RunNumberArrayc�#@RunNumberArrayc�����@���.������������ @Restart_Process#@Simulation_ProcessID(����6���$���������#@Simulation_Button>@�@����������2��� �����������@I#@Simulation_ProcessID(������������@�&��������������� @Run_Critical_End���T���B�����@#@Run_RunNumStatus8�#@RunNumberArrayu� �@�@���������b���P������������@@�" @Run_FindOneProcess>#@RunNumberArrayc�#@RunNumberArrayc�����V���D����� @Run_Critical_End��*must release the lock here or save freezes�� ��������������� @ Setup_Openel_��������d�@S�&��������������� @Run_Critical_EndPr��������z�@�T���B������������@#@Run_RunNumStatus8�#@RunNumberArrayu�@�@�����������h���V����<� @Alert_ParamText#@RunNumberArrayt�#@RunNumberArrayt�w�l�>�w�l�>�w�l�>�\\�&��������������� @Run_Critical_End ��B���0��������� @ Alert_Alert@�?��������@�@�������������������������@���h���V��������� @Alert_ParamText#@RunNumberArrayt�#@RunNumberArrayt�w�l�>�w�l�>�w�l�>���&�������������� @Run_Critical_Endn>�B���0��������� @ Alert_Alert@�?��������@�@��������������������d@S��������f�@S�&��������������� @Run_Critical_End����������l�����@S����������������������������������������������������������������������DFCC4Do��f���T��&��%��gSNWhat to do when the rewind button is pressed. Normal runs are deleted and thenZ�f���T��������Rf��SOrun or just run if they are new. Scenarios are duplicated and archived runs are�{�N���<�����������S6denied. Be more selective about locking the semaphore.0����������������������(�������������� �Run_Critical_Begin%��<���*������������#@RunNumberArrayz�%@�����������������������������@���R���@�������� ADO@#@Run_RunNumScenMast��#@RunNumberArrayMS�wO8scenario%���h���V����������� @Alert_ParamText#@RunNumberArrayt�#@RunNumberArraytS�w�l�%�w�l�%�w�l�%�ne������������@ @ Alert_Alert@�?��������@�@��������@�?���������@�?��������wO8$can duplicate but not start directly%33�&��������������� @Run_Critical_End���$��������������� @Simulation_OpenP�6���$������������#@Simulation_Button%@�@�����������2��� ������������@I#@Simulation_ProcessID(�������������������@���\���J����������@#@ Run_RunStatus�#@RunNumberArray%S�@�?��������wO8locked���h���V������������ @Alert_ParamText#@RunNumberArrayt�#@RunNumberArraytS�w�l�%�w�l�%�w�l�%��&�������������� @Run_Critical_End��R���@��������4 @ Alert_Alert@�?��������@�@��������@�@������������p���^������������@#@Run_RunNumStatus8�#@RunNumberArrayuS� �@�@��������wO8in progress or unlocked���H���6��������@���@�@������#@ RunIDArrayR�#@RunNumberArrayzS����&��������������� @Run_Critical_End���`���N������������SIcheck that neither the model nor the shell is running (be extra paranoid)������r������������@ @Run_FindOneProcess% @ GetModelNamet��x @Run_FindOneProcess� @ GetModelNamet����wO8running���L���:���������� @Alert_ParamText@�����w�lredoT�w�l�%�w�l�%�� �R���@������������ @ Alert_Alert@�?��������@�@��������@�@������������ ���������������@��stopped���"��������������� @ Setup_RedoRun���������������� @������ ��������KK�@�� other�l���Z����������� @Alert_ParamText#@RunNumberArrayt�#@RunNumberArraytS�w�lredoU�w�l�%�w�l�%����&��������������� @Run_Critical_End���R���@����������� @ Alert_Alert@�?��������@�@��������@�@���������������������������@������������������@���������������������DFCC4Di��$�����%��$��g �Simulation_Open��6���$�����������#�Simulation_Buttonn@�@����������2��� �����������@I#@Simulation_ProcessID(�����������������������������DFCC4Dh��%�V���D��%k��$k��gS>convert a set into the current set, basicly load the blobs andB�0�������������Sset everything from there�_�8���&�����������^� � tablesInfoa���������������<���*��������^� �timeSeriesInfoA�����������������8���&������������^� � mapsMonthsa�����������������6���$���������� ^� �mapsInfom���������������i�8���&����������(^� � slicesInfol����������������6���$��������0001^� � zonesInfo��������������00�������������EMaker�8���&������������S!check that the selection is valid���6���$����$�^#�SetArray�`������������������������$� ^�*�������$�fSget the right set �B���0����$�===^��������#� SetNumArray�#�SetArray����������$� ^�$�������$�cS version check�:���(����$�^������#�SetsCurrentVersion���H���6����$� ^Alert_ParamText����������������B���0����$� ^ Alert_Alert��?����������@����������������$�^�Y���������$�^�$�������$�����S retrive data��L���:����$����� ^Retrieve_Variable_Blob��������� � tablesInfoa����P���>����$�kU ^Retrieve_Variable_Blob��������� �timeSeriesInfoA����\���J����$���� ^Retrieve_Variable_Blob��������� � mapsMonthsa�� �mapsInfom����L���:����$����� ^Retrieve_Variable_Blob��������� � slicesInfol����J���8����$�kS� ^Retrieve_Variable_Blob���� ����� � zonesInfo�k���������$�kTp�^�*�������$�kYlSrestore information���������$�k\ ^PostProcessing_SetsRestoreInfo?� � tablesInfoa�� �timeSeriesInfoA�� � mapsMonthsa�� �mapsInfom�� � slicesInfol�� � zonesInfo������������$�k]�^���� ����$�kXTScleanup���(�������$���g^�Y � tablesInfoa�TX�,�������$�����^�Y �timeSeriesInfoA����(�������$�����^�Y � mapsMonthsa����&�������$�����^�Y �mapsInfom��s���������$�������������$�����^��������$�����^����������������DFCC4D��zh�2��� ��'A��&A��gSset a whole list on or offDT��������������S in�_�$��������������S ->to table���$��������������S true/false���"��������������-@table�nu���� ������������@- @�����$���������������@1@enabled������� ��������@1 @��..�"���������������@@iteml���"������������@@count����2��� �����������@%@�@��������@name������������l�d������ ����l�����SsetupP(� �������l�@���@table @����"�������l�����@enabled @�ra���������l��������>���,����l�O� S&check that there are records to change`���.�������l�����@count@�L@table���,�������l�����@namee@�@table� �2��� ����l�����@@count�@�����������������������l��������N���<����l��LS7go to the start of the selection and set every record ap�$�������l�����@�2@table��� �:���(����l�����@@iteme�@�?��������@count�����������l�����@���,�������l�����@@namet�w�lAJX����&�������l�����@����@enabled���,�������l�� @@namel�w�lAIJ����&�������l�����@����@enabled�H�,�������l����@@namel�w�lAJL����&�������l�����@����@enabled���.�������l�KK�@@namel�w�lALat��&�������l����@����@enabled����������l�����@���$�������l�����@�5@table�����$�������l�����@�3@table������������l�����@���$�������l�����@�@table������������l�����@������DFCC4D)/��R���@����������"09Does the search for links based on the saved search list "nd�.��������������"0works for both lists "��� ��������������"0 input " �4���"������������"0 process to copy var from "�(��������������"0 table to use "�2��� ������������Z �Z ProcessToCopyZZ�.���������������-Z �ZTablePtr@ZZ���<���*������������Z LinksListTypeZ�����������ZZ���>���,����H���ZLinksListField[Z�����������ZZ���L���:��������Yj�Z�@�������Z LinksListWordZ�����������ZZP�H���6����|���Z�@��������Z WildChar@Z�@��������ZZxm�*�������|@Vi ProcessToCopyZ Z�Z���&�������| ~TablePtr@Z Z�ZhT������������QZ�P���>����^Ѐ���sZ ProcessToCopyZ LinksListTypeZ LinksListTypeZZ?�T���B����^��sZ ProcessToCopyZ LinksListField[ZLinksListField[ZZ��P���>����^����sZ ProcessToCopyZ LinksListWordZ LinksListWordZZad�*�������^�����/ZTablePtr@ZZZt��8���&����^����linkLenZZZZ LinksListTypeZZ����������^�������6���$����^����ZZZlinkLen�Z@Z�?�������ZZ���b���P����^���� InfoText_LinkWildcharZ LinksListTypeZ�?�������ZZZ WildChar@ZZ���������^����ZTablePtr@ZZ InfoText_LinkFieldPtrZLinksListField[Z�?�������ZZZ�Z@ WildChar@Z�?�������Z�Z�@ LinksListWordZ�?�������Z�Z�@ WildChar@Z�@��������ZZZ���6���$����^����ZZZlinkLen�Z@Z�@��������ZZ���b���P����^���� InfoText_LinkWildcharZ LinksListTypeZ�?�������ZZZ WildChar@ZZ�����������������ZTablePtr@ZZ InfoText_LinkFieldPtrZLinksListField[Z�?�������ZZZ�Z@ WildChar@Z�?�������Z�Z�@ LinksListWordZ�?�������Z�Z�@ WildChar@Z�@��������ZZ�Z@ZZ���b���P���� ��� InfoText_LinkWildcharZ LinksListTypeZ�@��������ZZZ WildChar@ZZ���������� ���ZTablePtr@ZZ�Z @Z InfoText_LinkFieldPtrZLinksListField[Z�@��������ZZZ�Z@ WildChar@Z�?�������Z�Z�@ LinksListWordZ�@��������Z�Z�@ WildChar@Z�@��������ZZZ���6���$������������ZZZlinkLen�Z@Z�@��������ZZ���b���P������ InfoText_LinkWildcharZ LinksListTypeZ�?�������ZZZ WildChar@ZZ��������@ViZTablePtr@ZZ InfoText_LinkFieldPtrZLinksListField[Z�?�������ZZZ�Z@ WildChar@Z�?�������Z�Z�@ LinksListWordZ�?�������Z�Z�@ WildChar@Z�@��������ZZ�Z@ZZ���L���:���� ~ZiZ�@��������ZlinkLen�Z@Z�?�������ZZ-P�X���F����Q InfoText_LinkWildcharZ LinksListTypeZiZZZ WildChar@ZZM����������������ZTablePtr@ZZ�Z @Z InfoText_LinkFieldPtrZLinksListField[ZiZZZ�Z@ WildChar@Z�?�������Z�Z�@ LinksListWordZiZ�Z�@ WildChar@Z�@��������ZZZhe���������������^���L��������� InfoText_LinkWildcharZ LinksListTypeZlinkLenZZZ WildChar@ZZ������������������ZTablePtr@ZZ�Z @Z InfoText_LinkFieldPtrZLinksListField[ZlinkLenZZZ�Z@ WildChar@Z�?�������Z�Z�@ LinksListWordZlinkLenZ�Z�@ WildChar@Z�@��������ZZZ�h��������P��am��������������������������������������������������������������DFCC4D<�>B�Z���H���������d�d��@compute the length of the trend based on the variables passed in����L���:���������d�d��2gives either the beginning of the trend or the end�8� ������������d�d�� inpute��@���.���������d�d��' direction (true = start, false = end)��� ������������d�d�� bound��*������������d�d�� start/end 1..4e�������������d�d��� ������������d�d1 ���(������������d�d1 directionP� ������������d�d ���$������������d�dboundum� ������������d�d ��$������������d�dval1d� ������������d�d ���$������������d�dval2d� ������������d�d ��$������������d�dval3d;� ������������d�d ���$������������d�dval4d� ������������d�d ��H4�"������������d�dout� � ������������d�di��������������d�d���&������������d�d direction �is�"������������d�dbound �� �"������������d�dval1d �� �"������������d�dval2d �3�"������������d�dval3d ���"������������d�dval4d ���������������d�d�$������������d�doutval1dś�������������d�d�&������������d�d direction�L���:���������d�dval2c�vout�oval2c� vboundDP�$������������d�doutval2d�������������d�dM_�L���:���������d�dval3d�vout�oval3d� vbound�$������������d�doutval3d�������������d�d��L���:���������d�dval4d�vout�oval4d� vbound\P�$������������d�doutval4dU�������������d�d �������������d�dre�L���:���������d�dval2d�vout�oval2d� vboundie�$������������d�doutval2d�������������d�d�L���:���������d�dval3d�vout�oval3d� vbound���$������������d�doutval3d2;�������������d�dlo�L���:���������d�dval4d�vout�oval4d� vbound]P�$������������d�doutval4d{�������������d�dre�������������d�dre�������������d�d� ������������d�d ��out����DFCC4DX�n_�`���N��'��&��b$IWhen 4D quits the normal On Exit method runs after all the processes havefn�`���N����Ɯ�b$Iterminated with is bad since EdGCM 4D can have unsaved records in various���h���V�������� b$Pprocesses. So Do_Quit saves the Setup Simulations window and the eJournal window� �d���R�������b$Lbefore consenting to quit the program. The only other task is to cleanup the@��N���<������� b$6temp files created by Preview for Web in the eJournal. w ����������b$�er���� ����������b$ input q���� ��������b$ none������ ����~�����b$ output������ ����H�TAT b$ none#@�2��� ����������% @�@��������@path�������������b��� @�*��������������b$saves to do on quit���(�������l���� @Safe_SaveSimulation��&�������������� @Safe_SaveInfoText���<���*�����aaaa@ @B�8#@PostProcessing_ProcessID��"���������������@�5 @��������������������@P����������������@�:���(��������TAT b$"clear temp files from this session.3�>���,�������� @path� @ PM_FindFolder w� eJournals�lo�4���"����R�0001 @PM_RecursiveDelete @pathe�10�4���"��������EMak@ @ @pathe��$@���ke�.�������l�0001 @ PM_MakeFolder @patha�00������������EMak@#���������8�aaaa�����������������@#��¦�kkk^�0�������¦�^�(��������Control�cc�$�������¦����^� �myWind������������¦�����V���D����¦�ccc? The close box associated with this window pauses the process. am�Z���H����¦�B The window stays ready for use throughout the use of the program.���������¦�#^�`���N����¦�????#^Control_ProcessID������������Ap$ Reset process ID tracking variable.����������¦����*�������¦���� End of procedure.��������������������������������������DFCC4D_�p:�d���R��'+��&+��gSLcreate a new user in the interface including all the work to update the list@���d���R����Ь����SLnote that the new name is unique because it includes the sequence number for@���"���������������S the table.8������������������M�$�������м�����S save old user��*�������������� UAM_Editor_SaveRecord����������������������4���"������������Screate record and set fields���"����������������D@��������H���6�����������@username$-w�lnobody�-�@� @�@���������(�����������0001@����-@username$07� �����������EMak@����-@����*���������������@����-@��������������"�����������D @vPswd-w�l�-e�$��������Vd @vPswd2�-w�l�-pl�*������������ @ vActualValuec-w�l�-���*��������@��� @ vActualValue2-w�l�-� �2��� ��������� @ vlastPosition-@��������������4���"��������� @vlastPosition2z-@����������������������� ���2��� ���������Ssave and restore selection���"������������@�5@���������,������������@curID-@�@���������"������������@�/@�������������������L���"���������������S update list �F���4������������@@����� @ arrColVarsr�@�?�������w�����<���*������������@ @userColsu�@�?���������-����\���J������������SESELECT LISTBOX ROW(userCols;Find in array(arrColVars{1}->;$username))���X���F������������@ selectNum-@� @ arrColVarsr�@�?�������w��@username$����6���$��������� @@ selectNum�-@��������������V���D������������S>set a timer to update the list since we're ahead of the update���0�������������� @ userColsToSet-@ selectNum��(��������������@@�@�����������������x�����@�����������x���&��N���<����x�����S7enable fields, in case the old record was the admin one���(�������x�����@�@�����@�����(�������x�����@�@�����@������������������������"���������������S final setup���,���������������@�@������@curID����"�������������0@�@������������������������������������������DFCC4DY?�,z��^���L�� �� ����8EPM_MakePath creates a path from the base path string and an addition ����`���N���������8Gso that you get the correct characters in between. Auto adds the first �is�`���N���������8Fpath seperator if it is missing. Optional * parameter does Unix style ���@���.������������8'path additions instead of PM_PathChar ��4�"���������������8 intput l���.����������� PCP�8 string, base path ����2��� ���������8 string, added to path ���T���B���������8; boolean, true means folder (hence add \ or : at the end) ���D���2�����zzz�8+ * (optional), use Unix path char instead ��"��������w��8 output l�bo�,������������8 string, new path ��T���B���������(%(�@������� (� (� (��(path�(addition�en�(������������(( pathASCII���8���&���������(%(�@��������(pathChar����,������������(1 (�(folder����D���2���������((�@(�@��������E\use unix path X ��(������������(pathChar��/JL�8���&���������( pathASCII(�@�������\_t/ \in�.������������(\_tuse platform paths \���0������������(pathChar�#( PM_PathChar(� �2��� ���������( pathASCII#( PM_PathASCII�(sr�������������((��"������������(patha (�(���&������������(addition� (�(��$������������(folder� (�(��������������(��R���@����������89add path char to end of path if it doesn't end in \ or : ����J���8���������((�[ (�!(�(pathe"�@( pathASCII t�6���$���������(pathA(pathA��@(pathChar�( s�������������((���$�������������8 add paths <�am�2��� ��������� (��(pathC��@(addition�(��J���8����������80add \ or : at end of new path if it is a folder }��$������������((folder���.������������ (�� (����@(pathChar�(���������������((lo������DFCC4D�o�T���B��%k��$k��gS<collect arrays for each part of the postprocessing interfaceA���V���D���������S>pass in three pointers to arrays, get out three boolean arrays���V���D��������S>of settings. This code can then be reversed later to restore a������ �����������Sset. tt������������S�o����� �����������S input�,�����������)))%S ptr, tables months�4���"��������S ptr, time series variables�N���<�����������BS7 ptr, maps months, used for all of the additional tabsce�,��������������S ptr, maps variablesle�0�����������0001S ptr, verticle variables09�.�����������EMakS ptr, zonal variablesta�<���*������������^- ��� ��� ��� ��� ��� ������r���`������������^-� tablesPtr�� timeSeriesPtr�� mapsMonthsPtr��mapsPtr�� slicesPtr��zonesPtr$����$���������������^ tablesPtr ����(����������^ timeSeriesPtr ����(������������r�o^ mapsMonthsPtr ��� �"������������ �t^mapsPtr ���e�$�������������)^ slicesPtr ���o�$������������t^zonesPtr$ ��fo��������������� ��"������������P�t^�4����������������������t�r��.������������r�oScollect info for tables�t�H���6����������;^�� tablesPtro����������������@����������<���*���������� ^ tablesPtro�������������*������r�<���*���������r�^ tablesPtro���?�������*������C�<���*����������^ tablesPtro���@��������*�� �����<���*���������c�e^ tablesPtro���@��������*�� ����m�<���*����������^ tablesPtro���@�������*�� ����T�<���*���������� ^ tablesPtro���@�������*�� ����r�<���*��������^ tablesPtro���@�������*�� ����<���*�����������^ tablesPtro���@�������*��������<���*�����������^ tablesPtro���@�������*��������<���*�����������^ tablesPtro���@�������*��������<���*������������^ tablesPtro���@�������*��������<���*��������^ tablesPtro���@�������*������<���*��������^ tablesPtro���@�������*������<���*�����������^ tablesPtro���@�������*��������<���*�����������^ tablesPtro���@�������*�����)&�<���*��������.��^ tablesPtro���@�������*�������<���*��������qOJ^ tablesPtro���@�������*��������������������������4���"�����������Scollect info for time seriese-�4���"��������K��^$����� time series��4���"��������^������������� ����>���,��������ayer^� timeSeriesPtro�� time series����0���������� SCLEAR SET("time series")��a����������� � ��<���*������$�tS$collect info for maps-verticle-zones�1�@���.�������^ mapsMonthsPtro�������������*������ �@���.������S�E^ mapsMonthsPtro���?�������*�������@���.���������^ mapsMonthsPtro���@��������*��������@���.�����#^ mapsMonthsPtro���@��������*����������������������0������������Scollection info for maps��.��������)^$�����maps.����4���"�����)^������������� ����2��� �����)^�mapsPtro��maps,�)����������)�0��������)Scollect info for verticle�0��������)^$�����slices��4���"�����^������������� ����6���$�����^� slicesPtro��slices�����������ӡ�.��������Scollect info for zonesࡱ�.��������^$�����zones��4���"�����^������������� ����4���"�����^�zonesPtr$o��zones�����������J�"��������^$������������������������������������������������DFCC4D\�5�D���2��&\��%\��gS,Changes an item to match what the user wants��P���>��������[(S9If the current item is a pict then the text area is shown���J���8�����������S2If the current item is text then one pict is shown������ ������������S input���$�����������S item number���6���$������������S section type (0=text, 1=pict)���*������������� @��@itemNum��H�,�����������@ @��@itemType$����"������������@itemNum^ @���$������������@itemType$^ @��������������������������������@���(�����������@@�$@������0���������������Sif we're not already text������p��������� @@itemType$�@�������������� @ItemListI�@itemNum�^@�������������wO8change to text���<���*��������\4 @ItemListI�@itemNum^@��������������D���2������������ @InfoText_ShowHide@itemNum�@�?����������������������@���@������p������������@@itemType$�@�?���������� @ItemListI�@itemNum�@�������������wO8change to pict��<���*������������ @ItemListI�@itemNum^@�?����������D���2��������>� @InfoText_ShowHide@itemNum�@�?�����������p���^����������� @InfoText_LoadThumb^@itemNum�^`@�?���������@�@��������^�@�?������������������������@���4���"���������Seither way update the labels���.������������ @InfoText_UpdateFigLabels���������������@������������������������������������������������������DFCC4D�8 �"�����"R��!R��,�2 run atrans�rf�"��������������]�diagx����6���$�����������]%��@��������� diag_path��(�����������]2� docref_full�� �������������I]�pos��u�"���������������]�itemx����6���$���������zzz]� � modelgrid���@����������z�<���*���������]�AOT_Mult$�same as COT_Mult������������������� ��������????�2setup==�,�����������)�] diag_path � InputPath���6���$�������� ]GetModelAndGrid � modelgrid�zz��������� ��������&������� ���,�2do multipliersic�(������� ����]AOT_Mult$��� �� r�6���$���� �����]�AOT_Mult$�!��?�����������.������� �]AOT_Mult$��?�������LI�������� ��� ]2�6���$���� ��o�m]�AOT_Mult$���@��������� �.������� �����]AOT_Mult$��@�������s:�������� �� �B]2��������� �� � ��(������� ������2set atrans.I fileB8�H���6���� �� �d] � modelgrid��@����������|��@���������;q�:���(���� ��o�l]diagx��8x10�����Z$���&� �������� ���]2�<���*���� ��(�]diagx��7.8x10����Z$���&� �������� ��_�f]2�l���Z���� ���]diagx�diagx�� � RealToF18.5�AOT_Mult$����@������������Z$���&�� �X���F���������l�e]diagx�diagx�� � OutputPathu����AVFX�����Z$���&��1�v���d���������r�i]diagx�diagx��� diag_path����ocean�� �PathCharP����kBasin����Z$���&��e�T���B���������E�Y�2<dunno what the land file is called, need to check this first��)�L���:��������� �s]�� diag_path���� FOR026.DAT���|$�����X�\���J����������;]diagx�diagx��� diag_path���� FOR026.DAT����Z$���&��.�������������w�i]�l�X���F���������r�i]diagx�diagx��� diag_path����fort.26����Z$���&���������������"�]�����������������]diagx�diagx�� � OutputPathu����atrans_���� �AOT_Mult$����@����������##0.00�����.prt�����Z$���&�����������F����]diagx�diagx�� � OutputPathu����atrans_���� �AOT_Mult$����@����������##0.00�����.xls�����Z$���&�RR���������F���8���&����F��2 write out the .I file and launch�W�P���>����F� ]OHT_SaveAndLaunch�diagx���atrans.I����atrans�������������������������������������������������������DFCC4D �,�p���^��$}��#}��LQDo the work for the save as dialog, which includes creating the folder for the imagefn�4���"����������if the user picks new folder������������ƒ�������*�������ƒ�����get the folder list���4���"����ƒ�^S��� ��� � ImageFoldersa�or�r���`��������Qused to check for protected folders, this never seemed to be used and has been removed��������������.�����������setup ImageFolder array�*�����������^� � ImageFoldersa���2��� ��������???? ^ ImageFoldersa��?���������������������)����$����������� do the dialog�0�����������^sequence$������ ���cc�(�������������� ^ Foldernameo������������¦�0001^������@���������P��@�������������@���������P��@�������������@������������@�������������@������������@��������$��'���Save pasted image as�y@ Open a modal window00�2��� ����¦���^�(�������� PastePICT����������¦�����^������������¦��������F���4������������.create the folder if needed (if Foldername#"")�������������^ �OK���?������������ �FilenameF����@������������� � Foldernameo����@�����������P���>����������^ � PM_MakePath � thumbFolder� � Foldernameo�������N���<�������� ^ImageFoldersMenu� �ImageFoldersMenu � Foldernameo������������^��������������������������������������������DFCC4D �8�X���F���������d�d"3H>Alert_ParamText places strings into the global ParamText array"te�L���:���������d�d"3H2so that they can replace the ^0..^3 in the alerts.�"��������������d�d"�B���0���������d�d"%""%@�������" "�" "�" "�" "�""���>���,���������d�d#"AlertParamText""A?�������"" "�"���>���,���������d�d#"AlertParamText""A@��������"" "�"���>���,���������d�d#"AlertParamText""A@��������"" "�"���>���,���������d�d#"AlertParamText""A@�������"" "�"����������������������������������������������DFCC4D �We�*�������x��"0Do the link list "���:���(����y`����%G�@�������G SearchWord�GG���(�������B��-GfieldPtr@GG���<���*����]`����%G�?�������GstartGendGG���:���(����������GiGlenGposGendl\GG���&��������������1GremoveGGG�H���6�����������G�@��������G WildChar@G�@��������GG�����������������Gw�.�����������me_I"0set field to search G"���J���8�����������fieldPtr@G GInfoText_LinkFieldPtrG G FieldListGGk����������������G�.���������������"0wild char expansion G"���N���<����������� InfoText_LinkWildcharG SearchType�GG WildChar@GG�����������������G���.���������������/G LinkTablePtr�GGG���B���0������������G�G SearchWord�G�G@G�����������GG������������������G LinkTablePtr�GGfieldPtr@G�G@ WildChar@G�?�������G�G�@ SearchWord��G�@ WildChar@G�@��������GGG����������@�����:���(����@@ViSGfieldPtr@GG SearchList�GG��������@ ~Gi�N���<����@Q"04special reduction for keywords to remove duplicates G"���2��� ����@��lenGGG G SearchList�GG����z����@��GG FieldList�G@�@��������G�G@Glen�G@G�?�������G�G@GG�G G SearchWord�G�G@G�����������GGG���J���8����@����GiGlenG�?�������G�G@G�?�������GG�J���8����@����posGG�G G SearchWord�G G SearchList�GGiGGG��������@����Pa�p���^����@����GGG G SearchType��G@G�?�������G�G@GGpos�G@G�?�������GGa@ starts with za��$�������@����removeGGG�G��������@����GGG G SearchType��G@G�@��������G�G@GGpos�G@G�?�������G�G@GG�G G SearchWord�G�G@G�G G SearchList�GGiGGGGaGis a���$�������@����removeGGG�G���l���Z����@����GGG G SearchType��G@G�@��������G�G@GGpos�G@G�����������GGa@ contains al �$�������@����removeGGG�G ����v����@����GGG G SearchType��G@G�@�������GGa>D&($pos=1+(Length(SearchList{$i})-Length(SearchWord))))`ends with GaA�h���V����@����endl\GG�G G SearchList�GGiGG�G@G�G G SearchWord�G�G�@G�?�������G���,�������@����Gendl\�G@posGG���$�������@���removeGGG�G"��������@@�$�������@))removeGGG�G p����������������������lgP���$�������lgP@ViremoveGGG�G����������lgP ~l�,�������lgPQGremoveG�G@�GG���0�������lgP�����G SearchList�GiGGWo��������lgPsibl����������lgP�������������lgP!��~��������������������������������������DFCC4D[-�S��B���0���������d�d"3H) STORE VARIABLES INTO BLOB project method"��`���N���������d�d"3HF STORE VARIABLES INTO BLOB ( Pointer { ; Pointer ... { ; Pointer } } )�"�V���D���������d�d"3H= STORE VARIABLES INTO BLOB ( BLOB { ; Var1 ... { ; Var2 } } )"���2��� ���������d�d"-" """?�������"""�&������������d�d"""vlParam""�2��� ���������d�d"^" "�"""����������""�:���(���������d�d"""vlParam""v@��������""""���>���,���������d�d"" """vlParam""" "�""�"""���������������d�d""��������������DFCC4DW���@���.��%��$��gp%@�@�������� @floating_run_number�KO�2��� ����V��� @floating_run_number~@�����:�*�������T�����@ @ temp_rundeckm��*������������ @ temp_rundeckm~w�l�~�.�������,�����@1 @Modified_rundeck����0������������ @Modified_rundeck~@�-������6���$���������@%@�@��������@ temp_name����(�������z�����@ temp_name~@�������&�������������g@�@ temp_name���$�������H����@@counter���� ������������@@top����$�������l�����@@bottomr����"�������:�����@@lefto����"������������@@right������������^��������*������������SReset_Main_Window ���������������X��b���P��������SJI replaced most of Matt's disclosure triangle code because Mark added some�`���N����2�SInew requirments. We decided that it would be more efficent to reimpliment�b���P��������SJthe whole code than to patch it incrimentally. Here is a table of how the �,������������Sinformation is kept:~������������������S����8���&�����TS Var Name, Type, Src, Description �`���N���������SHGroup_Name, string, list, name of each group as used by the form objects�R���@��������S:Group_Height, longint, form, full height of each group box���\���J������������SEGroup_State, boolean, blob, is the disclosure triangle open or closed���J���8����(���gS2Group_Visible, boolean, blob, is the group visibleCH����������������S����:���(��������@S#Below are Matt's original comments:�f���T��������llSNthis assigns the arrows for opening and closing group boxes to an open postion��h���V�����������SPthis sets the status variable for group abc to true signifying that the group b���R���@��������EMakS:running this routine only when the form is load saves time���h���V������������SPthese arrays are neccsary to either initialize the array or have values from the�����������������@�@�@�������� @ Group_Namer�@������������wO8Fthe arrays are made process var so they can be accesed from any method0�>���,�����������@ w�lGroup_Name_List� @ Group_Namer���>���,��������)� @Number_of_Groups~@ @ Group_Namer��T���B������l��@� @ Group_Heighto� @Number_of_Groups�wO8list of heights�|���j��������ll@� @ Group_State� @Number_of_Groups�wO89Since lists don't know there own sizes it is neccasary tol�P���>��������lnS9enter this information should the number of groups change���@���.��������lq@� @ Group_Visible� @Number_of_Groups����(���������� SOpen_all_groups ��n� ������������e�c @Opene~@���"������������� @Closed�~@��e� ����������� @Shown~@����"�������X�$ @Hidden�~@��&�����������p @Form_BLOB_Loader�������������(��8���&��������S hide scenario background for now���B���0��������@[��w�lzScenarioBackground�@�����������������������V���D��������S>prior to setup of groups set menus to reflect values in groups\�������������`���T���B����������S<setup the various group boxes, particuarly: ocean and trends��g�(������������ �i @Hide_Closed_Arrows~�y�$������������� @Twist_Down_Init�I�.������������V�I @Simulation_TrendMenuInit��2��� ��������T9� @Simulation_OceanMenu8@�����.�����������T� @Simulation_PowerToolsInit����v��������T�@ Group_Index~@� @ Group_Namer�w�locen!�@�?��������wO8.this finds and reverses the state of the Group`T��>���,��������T�@orginal~ @ Group_State�@ Group_Index�D���2��������T�@ @ Group_State�@ Group_Index� @Openp�T�>���,������� @ Group_State�@ Group_Index~ @Closed��;������������� �i@�c�<���*���������� @ Group_State�@ Group_Index~ @Openp��������������V�I@�I�d���R��������� �pSLGroupOcean_Manage `this preforms a similar function for the ocen group box@�r�>���,�������� @ Group_State�@ Group_Index~@orginal�����������������&������������ �iSsetup the list�l�(������������� @Run_Critical_Begin~�G�D���2���������V�I@@#@RunNumberArrayz��~@�������������n�"������������ �p@�/@�������a�b���P������������@temp�~#@RunNumberArray~�#@RunNumberArray~wO8this gets the run's name����H���6����������@�@������#@ RunIDArrayR�#@RunNumberArrayz��l������������� �i@�c�&������������� @Run_Critical_End�N����������������������������������������������������DFCC4DGj�x�$�������P�Z^�/����� �4���"���������1����������@��������>����wr������������������������������������������������������������DFCC4DX8����� ��&\��%\��gSsetup>�������������������J���8�����������S3these are the internal values in the Item List blob��8���&��������0001S!ItemList item type has 20 entries11�6���$��������EMakSitem type is: 0=Text, 1..4=Pictr��P���>������������S9ItemName has 80 entries, the four filenames for the picts���0������������� Sitem name is: <filename>���V���D���������)� S?ItemCaption has 80 entries, the four descriptions for the picts�;�:���(���������C�_S"ItemPict is a pointer to a picture�n�F���4���������a�nS/ItemPictLabel is a pointer to the picture title��X���F���������� S@ItemLinePict is unused, but was for dividers to deleted sections��r�z���h���������)� SQItemText is list of pointers to the text fields in the record, the 0th element isS the abstract�Y�:���(���������C�_ @ItemVersI� @CurrentItemVers��n�6���$���������a�n@� @ItemListI�@�@��������� �6���$����������@� @ItemNameI�@�@���������n�8���&���������p�t@� @ ItemCaption�@�@��������� �6���$���������R�@ @ItemPictI�@�@����������:���(���������e�a@ @ ItemPictLabel�@�@���������L�������������o�l@ @ ItemLinePicte�@�@��������wO8Qunused for now, used to let the user delete a section of the journal by selectingwO8 line�t�6���$����������@ @ItemTextI�@�@����������4���"��������D @CurrentItemVers~@�@�������+�4���"������������#@InfoText_Button~@��������������"�������:�� S link fields���H���6����:�����@�@�@�������� @ SearchListe�@���������������F���4����:�����@�@�@�������� @ LinksList�@���������������:���(����:�����@� @ LinksListType�@���������������<���*����:�����@� @LinksListFieldz�@���������������J���8������������@�@�@�������� @ LinksListWord�@���������������<���*��������>� @CurrentLinksVers~#@CurrentLinksVers8���r���`�����������SQmark if a section is being deleted since the On Data Change seems to get called tSwice ���2��� �����������@1 @HandlingDeleteSection����0��������������� @HandlingDeleteSection~@����$��������������S search stuff���n���\��������aaaa@ @Search_InProgress�wO8:record id of search in progress, -1 means no active searchyy�J���8������������@ @Search_LastField�wO8field search stopped on��<���*������������@ @Search_LastType�wO8 field typed���T���B����$����@ @Search_LastPosz�wO8#position in field search stopped on���`���N����$�����@ @Search_LastSubPos�wO8,position in field search stopped on in image@���B���0����$�����@ @ Search_Mode�wO8what fields to search���L���:����$�����@%@�@�������� @ Search_Text�wO8text to search���:���(����$����� @Search_InProgress~�~`@�?������������������$��������L���:����$�����S5wait for Cache Manager to finish scanning image files���4���"����$�����@@w�l$CM_ImagesScan�����.�������$���&@C@B�@�@��������`��������$�����@�����������$��������&�������$�����Ssave menu item���(�������$�����@�Cw�lInfoText�����4���"����$�����@�7@������w�lText��������������$��������,���������������Spick window position ������������������ @myWind�~@�#@ Toolbar_Width�@�@��������@�@��������~�#@ Toolbar_Width�@��~`@�@��������$@�"� �w�leJournal��w�lInfoText_Close������� ������������@F@B����$���������������@ @myWind��������������������������� ��������@����"�����������@�@�������\���J��������SDcheck that are accessible eJournals otherwise create a new blank one~�h���V������������@@#@ JournalArrayo��@������������wO8!no accessible records so make one���(��������������� @InfoText_NewRecord~���0���������������@�� pick the first eJournal���"���������������@�/@���������2��� ������������#@ JournalArrayo~@�?����������4���"������������#@JournalIDArrayz~@�?����������H���6������������@�@������#@JournalIDArrayz�@�?��������������������������@����������������������,���������������SInfoText_LoadRecord ~������������������@���"�����������@�9@�������0����������� @ @OK�@������������))��������������%"(�V���D��������S? The close box associated with this window pauses the process. ���Z���H������������SB The window stays ready for use throughout the use of the program.����������������������b���P������������#@InfoText_ProcessID~~@������������� $ Reset process ID tracking variable.~����������������������*���������������S End of procedure.N����������������������������������������DFCC4D;�, �F���4������������8,Shows the user the run folder in the Finder \������������������������ ������������8var �����"���������������� �err  ���������������| 7d�2��� ��������ff�8find run folder and open ��@���.������������� � �Run_PathR � @������������  �J���8��������ic���� � @ \�Sim_ShowFolder \� 3;1;?2002;240  �.��������������� � FinderToPathn \�  ��������������ff�� �J���8��������ff�� � @ \�Sim_ShowFolder \� 3;1;?2015;240  ����������������� ��������DFCC4D@�,�e��8���&��^�� ^����8write a rundeck to a text file �����������ʸ����������� ����T�����8var ����� ��������������(- (� �$��������������(-(pText�8���&����n����(%(�@�������( user_path���*�����������(2( docref_full �"�����������ff(pText (�( ���������������(7d�P���>������������87choose file, can't set a name and choose where to save �ec�>���,��������ff( docref_full( ���TEXT��������������ql���(����������������8save the file �(�2��� ������������( (OKc�@(�?��������4���"�����������(#( PM_Platform�@$(��\�6���$������������(�g( docref_full(pText��������������ff�p((v�>���,��������(�g( docref_full((pText��������������((l�*�����������3333( ( docref_full��.���������������( user_path (Documenth(���4���"������������(( user_path�R*chhe����������������((���������DFCC4Dj{�,�,�����$��#��Lget current record ID���$�������������� C_LONGINT($1)���2��� �����������C_LONGINT($CurrentRecordID)���,���������������$CurrentRecordID:=$1������������������������� ����������setup�n�&���������������save menu itemh���������������� ^myWind���#� Toolbar_Width���@����������@��������#� Toolbar_Width���@�����������@��������$��"� �� View Rundeck�� Generic_Close������� ��������0001^F�B�nu�H���6��������EMak^��Simulation Summary: ��#� Rundeck_Title�������������������^���� �����������show itim�$������������r�u^ �myWind����8���&��������^�(��������Rundeck Viewer��$�����������^� �myWind���������������V���D��������? The close box associated with this window pauses the process. ��Z���H���������B The window stays ready for use throughout the use of the program.���`���N�����#^Rundeck_ProcessID������������Ap$ Reset process ID tracking variable.�����������*�������� End of procedure.����������������DFCC4D"�O�?n�(�����!�� ��,�7d PAUSE_PROCESS ()TX����������������7d�z���@���.�������������7d) Typically used as a close box procedure.���B���0���������7d+Adds in support for proper record handling.�������������� ���������]D�B����*��������������� ]Simulation_SaveRecord���8���&���������&&�7d!adjust name if it has changed ���0�������������7dRunArray_ChangeRunNumber ��"������������]������������� ��������]?�B��������������RRR1�*���������������7d End of procedure.P��������������������DFCC4DC*�c��`���N��^�� ^����8Fhandle clicks on the set array, code is in PostProcess_ExternalButton ��\�<���*�����������#(PostProcessing_Button(�@�������(���8���&�����������(I#(PostProcessing_ProcessID���2��� ��������#( Sets_Button(�@�������(�.�����������(I#(Sets_ProcessID���������������������������������������������������DFCC4Dwg�;sj�R���@��%��$��gS;Check that the start date is ok because fools are so cleverDE�R���@�����������S:If people pick a start date after the end date then fix it�����������������^on�(�����������0001^�� $����07������������EMak^ S������������������������������������������������DFCC4D�h~�t���b��%5��$5��gSQCreate lists for summaries tab from the diagnostic folders. In version 2.3 Cache SManager���h���V���������SQisn't used here because the user is always creating new stuff so it's too hard to���v���d����p����SQkeep the caches up to date, besides I only have to search one folder. Currently uSses two ���x���f��������SQdifferent pieces of code, since plots/time series are hierarchical and the othersS are flat.p���r���`�����������SQThis calls the new hierarchal list code that includes icons. Fixed bug a so that Sthat wo�v���d��������SQsummaries doesn't try to list runs that don't have folders. Empty lists come up aS s <Empty>��(������������Sinstead of blank.���6���$���������^%��@��������� diag_path����$�������͒�����^�runLen�an�F���4�����������^���@��������� diag_list��������������av�J���8���������� ^���@��������� diag_foldersi���������������L��������������i�s�8���&�����0001S only list runs that have folders11�J���8��������EMak^ �PostProcessing_Validate��@���������T��ie����������������������� ���������i�mSrunLen��.������������� ^runLen����������t��������������g�_�f�$�������������S setup tables� �L���:���������i�m^� � PM_FindFolder�tables��� $���������v���������� ^PostProcessing_TypeListHier����tablesp�� � tables_hier���@���������runLen����@���������e�������������g�_^�o�F���4���������� ^PostProcessing_TypeHierEmpty�� � tables_hier�� �������������i�m^�H��������������� �"������������g�_S setup plotsFi�J���8����������^� � PM_FindFolder�plots��� $����ts�T���B���������i�m ^PostProcessing_TypeListTimeHier�plots�� � plots_hierl��o��������������^P�F���4����� ^PostProcessing_TypeHierEmpty�� � plots_hierl�������������^P��������������,�����������Ssetup maps and slices�J���8�����T�^� � PM_FindFolder�maps/��� $���� �����t����� ^PostProcessing_TypeListHier�.nc��mapsD�� � maps_hier���������������runLen����?��������������������^P�D���2��������� ^PostProcessing_TypeHierEmpty�� � maps_hier������������^�L���:�����^� � PM_FindFolder�slices��� $���� �����x����� ^PostProcessing_TypeListHier�.nc��slicesp�� � slices_hier���������������runLen����?�����������������^P�F���4����� ^PostProcessing_TypeHierEmpty�� � slices_hier����������^�����������"�����������S setup zonesFi�J���8�����^� � PM_FindFolder�zones��� $����es�T���B����� ^PostProcessing_TypeListTimeHier�zones�� � zones_hiero����������������^P�F���4����� ^PostProcessing_TypeHierEmpty�� � zones_hiero����������^P������������^S�B���0��������S*create empty lists if there are no folders�rl�F���4�������� ^PostProcessing_TypeHierEmpty�� � plots_hierl��F���4����������� ^PostProcessing_TypeHierEmpty�� � slices_hier���D���2������������ ^PostProcessing_TypeHierEmpty�� � maps_hier���F���4������������ ^PostProcessing_TypeHierEmpty�� � zones_hiero����F���4������������ ^PostProcessing_TypeHierEmpty�� � tables_hier�������������������^�����������������������������������������������������������������������DFCC4Dv�O�<���*���������� Simulation_GroupChangeAllG OpenlGG��������������������������������������������������DFCC4Dw�8 �V���D��%��$��gS>Set PowerTools, which currently loads the model and grid menusB�Z���H�����������SCfrom the run or sets them based on the menus. Both menus call this ������ ������������Scode^������ ��������S input�M�2��� ��������0S true = load, false = set ��*������������� ^1 ����loadset��r�:���(������������^� � ModelGridInfo���@������������"���������������^loadset^ ������������������r�i�d�4���"���������T�Sload menus from values in run�f�"��������������^�loadset�n �:���(����������� ^GetModelAndGrido � ModelGridInfo���J���8����������� ^Dev_ModelNameMenu^ � ModelGridInfo���?�������9�J���8������������ ^Dev_ModelGridMenu^ � ModelGridInfo���@���������������������� ADO^��*���������������Sset run from menus<�r�H���6���������� ^����^ �Dev_ModelNameMenu� �Dev_ModelNameMenu�u�H���6��������^����^ �Dev_ModelGridMenu� �Dev_ModelGridMenu�������������r�i^�I��������������DFCC4D@ �p:�X���F��%��$��gS@Delete a series of runs, warn the user first of the consequences�LP�J���8�����p�@�@�������� @ RundeckErrors�@���������������J���8�����D@%@�@�������� @ RundeckTitlen� @ RundeckDesc��$����������g@@listRef�����������6�������n���\���� �����SQclose the simulation window and change run to default to avoid conflicts on deletSe���6���$���������#@Simulation_Button@�@�������nt�(������������ @Run_Critical_Begin��Z���H���������#@RunNumberArrayz@�#@RunNumberArray�w�lSample_Control_Run��x�P���>���������#@RunNumberArrayz�@����������� w�lSample_Control_Run���&�������z����� @Run_Critical_End���2��� ���������@I#@Simulation_ProcessID(�_L���������IHDR@��<���*����:�|@state@J#@Simulation_ProcessID(����X���F����^�Ŧ| @@state�wl@�?���������x @state�@�@��������������������l������2��� ����ƚ�����Sclose the rundeck window mp�>���,���������@#@Rundeck_ProcessID�@���������������.������������@D#@Rundeck_ProcessID�BC�.������� �����@?#@Rundeck_ProcessID�BC������������n���@������������������F���4����<�����S/setup the sets to remember the existing records���4���"����F�����@�t@������w�l ListViewSet����&�������l�����@�vw�lUserSet��������������������:���(����"�����@@�L@�������@������������+�:���(����"�����S#scan records to see what runs exist���"��������<@�2@�������8���&��������(@listRef@w�l Delete Errors����0�����������@@�$@�������@�����P���>����H�|@@ @ PM_FindFolderw�l CurrentRun����$@������V���D�����|@� @ RundeckErrors�@ @ RundeckErrors���@�?�����������|���j���� �lj| @ RundeckErrors�@ @ RundeckErrors� @������ @GetListItemStr@listRef�@�@���������j���������lj|@��2��� ��������@@�m����@�?�����������V���D����z��� @� @ RundeckErrors�@ @ RundeckErrors���@�?���������t�|���j����@�h @ RundeckErrors�@ @ RundeckErrors� @������ @GetListItemStr@listRef�@�@��������\���������������@� �����������@@�������V���D���������@� @ RundeckErrors�@ @ RundeckErrors���@�?�����������|���j�����)))% @ RundeckErrors�@ @ RundeckErrors� @������ @GetListItemStr@listRef�@�@����������������J�����@���"�����������@�3@����������������n�����@�����������ǰ���$��������S report errors�B���0������������@@ @ RundeckErrors��@���������������T���B�����lj| @ RundeckTitlen @GetListItemStr@listRef�@�?���������R���@��������ll @ RundeckDesc @GetListItemStr@listRef�@�@����������>���,����՘�RR@�7@������w�lRundeck Errors���V����������������@�@��`@�@���������@�@���������@��`@�@���������@�@����������`@�?���������`@�?��������$@�'��w�l�����8���&����v�lj|@�(@������w�lRundeck Errors�������������������@������������RR@R�$��������������S do the delete���:���(��������@@�L@�������@�?������������� ������������@sw�l������������lj|@�l���� ��������ll@sw�ls���������j�rrr@rr�V���D�������� @Alert_ParamText@� @�L@��������@s�w�l��w�l��J�Z���H��������lj|@ @ Alert_Alert@�@���������@�@���������@�?����������&���������������Sset record model�"�������ݲ�0001@�@������00�"�����������EMak@�@���������������$�������(������������� Sdelete selection���"�����������0001@�B@������00�������������EMaker�$�������R�lj|S fix run list�(�����������ll @Run_Critical_Beginl�&�����������ln#@ Run_CheckDB@�l�(�������n�����#@ Run_DirtySets@����:���(���������#@RunListReinitToolbar8@�?��������&��������������" @Run_Critical_End���.���������������@I#@Toolbar_ProcessID�������������������@������������������@�����������lj|@�l�������������ll�o���� ��������lnScleanup��*�����������@�vw�l ListViewSet��*�����������@�uw�l ListViewSet��2��� ��������@�1@������@��������*�����������lj|@�Y @ RundeckErrors����*�����������ll@�Y @ RundeckTitlen���(�����������ln@�Y @ RundeckDesc�n�������������lj|���������DFCC4D;h��,[�r���`��"R��!R��,�2QSetup lists to support grid, lists are used so that strings are consistant everyw�2herepam�b���P�����������]#� ModelNamesRef�#� ModelGridsRef�#� ModelAppsRefo�#�ModelAppsBinRef���<���*��������#] ModelNamesRef��� Model Names����<���*������������#] ModelGridsRef��� Model Grids����<���*�����������#] ModelAppsRefo��� Model Apps��B���0��������EMak#]ModelAppsBinRef���Model Apps Bin ���������������������������DFCC4D �8jT�@���.���������d�d"3H&clear or fill the checkboxes in tables"�4� ������������d�d"3H inputo"���@���.���������d�d"3H& true/false how to set the checkboxes "f�.������������d�d"1" "�"" clearfill""���(������������d�d"-""MonthPtrl"""�<���*���������d�d"""FieldNuml""TableNuml""i""���&������������d�d" clearfill" "�"nd�������������d�d""�<���*���������d�d"�#setup numbers for fields and tables"���4���"���������d�d"FieldNumn""�"""����""�4���"���������d�d"TableNumn""�"""�����""�������������d�d""�,������������d�d"��set the checkboxes�"N`�>���,���������d�d"""i""i����������""i@�������""���L���:���������d�d"MonthPtr�""�""TableNum�""FieldNum��"�F"i""cl�0������������d�d"MonthPtr�""" clearfill"te�������������d�d""����������������������������������������������DFCC4DRh �"�����'��&��b$ DEPRECIATEDrf�d���R�����cb$LThis method returns a path name that has been decrimented by one level. This@���`���N����������b$Icode predates Path Manager and is deprecidated in favor of PM_UpOneLevel.fn������������b$������� ���������b$ input������ �����scalb$ nonetr���� ����V�����b$ output������ �����������b$ none�����������h����M����������� b$var�D�8���&��������TAT �% @�@�������� @��@path��11�.�������4�TAT @% @�@�������� @��� S�&����������� ?? @ @len�@i�k_� �����������@path� @����$�����������@newpathw������������|��,�����������|b$check for path length���*�����������|@len@� @patha�ac�0�����������|@ @len�@������������ac�6���$�����0001b$remove last ":" if it is there00�4���"��������EMak@ @path�!1@len"�8w�:�ke�V���D��������@path�@�  @path��@�?��������@len�P@�?���������*�����������@len@� @path����������������TAT @ �4���"�������� ?? b$scan characters for last ":"? �4���"������������@ @i�@�?��������@len����N���<�����@ @path�!1@len�P@i��@�?�������"�8w�:���^���L�����@path�@�  @path��@�?��������@len�P@i��@�?���������&��������@i@i��@len���������@������������@�����������@�������������� �����b$cleanup�� �������� @��@path�JJ��� @��@path��ssProc�#@ StackSize�@ processName���������������@����������DFCC4D=f�,�B�T���B��&b��%b��gS=Validate makes sure that the run can be post-processed before���V���D��������S?allowing the post processor to run. Create folders if necessary���F���4��������S.inside diagnostics instead of reporting errors���X���F��������scalSAnew feature to automatically process years if they can't be founddG���� �����������S input������������0001SQ longint, check to make: 1=check acc files, 2=check sumandpd averages, 3=check tS*ime series folders , 4=don't check folderss35�D���2��������EMakS- optional parameter supresses error messages�O�>���,������������S& optional parameter, choose form page ������ ����������S output�f�\���J����Ġ�aaaaSD boolean, process, puts up an error message if the validation fails7���������Ġ���������� ����Ġ������1 @����0�������Ġ�����@ @��@ checkSumAndPD����2��� ����Ġ�����@%@�@��������@path�����2��� ����Ġ�����@@listRef�@ error_num����&�������Ġ���@@formPage$����0�������Ġ�����@1@needToProcessFirst7����J���8����Ġ����@�@�@�������� @ RundeckErrors�@�@����������(�������Ġ�04@ checkSumAndPD7 @����.�������Ġ�����@needToProcessFirst77@����@���.����Ġ�@���@pathT7 @ PM_FindFolderw�l CurrentRun�������������Ġ�����@��&�������Ġ�����Spick form page���.�������Ġ�>� @@�@�@�������������� ����Ġ�����@ @���$�������Ġ�����@formPage$7 @�������������������@���$���������������@formPage$7@�����������������A@���������������������� ��������������S set years��6���$������������@@formPage$� @ pTimeSeries����.��������������Suse all years for plots���4���"������������ @PostProcessing_GetYears����������������@�*���������������Suse selected years#��,�������P����� @PostProcessing_GetYears����������P�����@�����������P�������� �������P�����S load list���@���.����P�����@listRef7@w�lPostProcessing Errors����T���B����P����� @ RundeckTitlen7 @GetListItemStr7@listRef�@�?�����������R���@����P����� @ RundeckDesc7 @GetListItemStr7@listRef�@�@��������������������P��������(�������P�����Saccumulate errors���.�������P�����@ error_num7@��������������4���"����P�@@@path�����$@����>���,����P�@ error_num7@ error_num�7�@�?����������|���j����P��% @ RundeckErrors�@ error_num7@� @ error_num��7� @GetListItemStr7@listRef�@�@���������mn��������P�����@���:���(����P�����@@ @Start��@���������������>���,����P�����@ error_num7@ error_num�7�@�?����������|���j����P����� @ RundeckErrors�@ error_num7@� @ error_num��7� @GetListItemStr7@listRef�@�@������������������P�����@���6���$����P�����@@ error_num�@���������������H���6����P�����@@ @ PM_FindFolderw�lacc�����$@������>���,����P�����@ error_num7@ error_num�7�@�?����������|���j����P����� @ RundeckErrors�@ error_num7@� @ error_num��7� @GetListItemStr7@listRef�@�@������������������P�����@�����������P��������n���\����P�����SQthe following folders are created if they are missing instead of reporting errorsS:���h���V����P�����SP diagnostics, tables, maps, plots, vertical (slices), zonal, and postprocessing}���P���>����P�.@@ @ PM_FindFolderw�l diagnostics�����$@��� �>���,����P���@ @ PM_FindFolderw�l diagnostics���a��������P�����@ R�L���:����P�����@@ @ PM_FindFolderw�ltables�����$@������:���(����P�����@ @ PM_FindFolderw�ltables��bo��������P�����@n�J���8����P�����@@ @ PM_FindFolderw�lmaps�����$@������8���&����P�����@ @ PM_FindFolderw�lmaps������������P����@���J���8����P�����@@ @ PM_FindFolderw�lplots�����$@������8���&����P�����@ @ PM_FindFolderw�lplots�����������P�����@ e�L���:����P�����@@ @ PM_FindFolderw�lslices�����$@��� @�:���(����P�@ @ PM_FindFolderw�lslices����������P�@�J���8����P��%@@ @ PM_FindFolderw�lzones�����$@���;<�8���&����P�����@ @ PM_FindFolderw�lzones������������P�����@ R�T���B����P�����@@ @ PM_FindFolderw�lpostprocessing�����$@������B���0����P�����@ @ PM_FindFolderw�lpostprocessing������������P�����@S���������P���������n����P�����SQif there are no errors then check either the acc files or the postprocessed averaSge files or folderr������z����P�����SQcheck to make: 1=check acc files, 2=check sumandpd averages, 3=check time series Sfolders , 4=don't check folders��6���$����P�����@@ error_num�@����������������������P�����@�:���(����P�����@@ checkSumAndPD�@�?�����������*�������P�����Scheck for acc files���8���&����P�����@path�7 @ PM_FindFolderw�lacc������r����P�.@@ @ PM_MakePath@patha�w�lJAN�7�@� @������7�w�l.acc�7�@�����@������$@���.�>���,����P�����@ error_num7@ error_num�7�@�?����������|���j����P����� @ RundeckErrors�@ error_num7@� @ error_num��7� @GetListItemStr7@listRef�@�@������������������P�����@����r����P�����@@ @ PM_MakePath@patha�w�lDEC�7�@� @������7�w�l.acc�7�@�����@������$@�����>���,����P�����@ error_num7@ error_num�7�@�?����������|���j����P����� @ RundeckErrors�@ error_num7@� @ error_num��7� @GetListItemStr7@listRef�@�@������������������P�����@S�:���(����P�����@@ checkSumAndPD�@�@�����������2��� ����P�����Scheck for sumandpd averageses�R���@����P�����@path�7 @PostProcessing_SubFolderPathw�laverage�@�����P���>����P�����S9<Run Number>_Avg_1907-1911/JAN1907-1911.avgControl2_02sC9���������P�����@@ @ PM_MakePath@patha�w�lJAN�7�@� @������7�w�l-�7�@� @������7�w�l.avg�7�@�����@������$@������>���,�� �����@ error_num7@ error_num�7�@�?��������a�|���j���������� @ RundeckErrors�@ error_num7@� @ error_num��7� @GetListItemStr7@listRef�@�@���������a�.�������P���@needToProcessFirst77@��t��������P�����@S���������P������r���`����P�����SQcheck on a tab by tab basis if any boxes are checked, if none are then it is an eSrrork���$�������P�����@noChecks$7@����������P�����@�6���$����P�����@ @zTabe� @pMaps�wO8maps7���d���R����P�����@@�"@�������@�"@�������@�"@�������@�"@���������$�������������@noChecks$7@������������������@S�>���,������������@ @zTabe� @ pVertical�wO8verticle7������������������SQIf (Not([PostProcessing]JL Monthly)&Not([PostProcessing]JL Seasonaly)&Not([PoS>stProcessing]JL Quarterly)&Not([PostProcessing]JL Annually))e���&�������������S$noChecks:=True�t���� ������������SEnd if @�8���&������������@ @zTabt� @pZonal��wO8zonale ����������������SQIf (Not([PostProcessing]Lat Monthly)&Not([PostProcessing]Lat Seasonaly)&Not([SBPostProcessing]Lat Quarterly)&Not([PostProcessing]Lat Annually))s���&�������������S$noChecks:=True�t���� ������������SEnd if Su�:���(���� �.@ @zTaba� @pTables�wO8tables��$������� ����@noChecks$7@����D���2���� �����@@�����x @�����x @� ����x @� �����$������� ���@noChecks$7@���������� ����@���D���2������������@@� ����x @� ����x @� ����x @�������$���������������@noChecks$7@�ld����������������@���D���2������������@@�����x @�����x @�����x @�������$�������������@noChecks$7@������������������@���P���>������������@@�����x @�����x @�����x @�����x @��������$�������������@noChecks$7@������������������@������������������@�$���������������@@noChecks$����>���,������������@ error_num7@ error_num�7�@�?�������ss�|���j����������� @ RundeckErrors�@ error_num7@� @ error_num��7� @GetListItemStr7@listRef�@�@�������������������������@1�:���(������������@@ checkSumAndPD�@�@�����������4���"��������FdScheck for time series folders���D���2������������@path�7 @ PM_FindFolderw�lpostprocessing���������������@���@@ @ PM_MakePath@patha�@�����7�w�l_�7�@� @������7�w�l-�7�@� @������@������$@������>���,����������@ error_num7@ error_num�7�@�?��������a�|���j������������ @ RundeckErrors�@ error_num7@� @ error_num��7� @GetListItemStr7@listRef�@�@����������.�����������>� @needToProcessFirst77@�����������������@n�:���(��������D@@ checkSumAndPD�@�@��������Ru�"���������������S do nothing8�"����������������@S���������������@����������������@�������������� @���� ������������Scleanup���6���$������������@@ error_num�@������������������ ������������ @��7@�������������������@���.���������������@@�@�?�����������@���.��������>� S)check if we can process and ignore errors�����x�����������@@needToProcessFirst7���@ checkSumAndPD�@�@����������x @ checkSumAndPD�@�@��������������L���:����������@��2try to process years and return error if necessaryd�F�:���(�����������@@ checkSumAndPD�@�@������������2��� ������������Scheck for sumandpd averages���2��� ������������ @��7 @PostProcessing_Average7���:���(������������@@ checkSumAndPD�@�@������������4���"������������Scheck for time series folders���4���"������������ @��7 @PostProcessing_TimeSeries������������������@l�>���,������������@�� $report errors that can't be avoided 7tR�*���������������Scleanup array listst�j���X������������@� @ RundeckErrors�@ error_num�7�@�?��������@�@��������7`@ error_num����&���������������Serror dialog rs�>���,������������@�7@������w�lRundeck Errors�����������������@�@��7`@�@��������� @�@���������@��7`@�@��������� @�@����������7`@�?���������7`@�?��������$@�'��w�l�7��8���&����������@�(@������w�lRundeck Errors��(������������@�un���� ���������� @��7@�� ����������������@����������������@ e���� ������������ @��7@�Er����������������@������������������@�$���������������@y@listRef�nd�*���������������@�Y @ RundeckErrors�um�*���������������@�Y @ RundeckTitlen�or�(���������������@�Y @ RundeckDesc���������DFCC4DMw�[ |�,�����$}��#}��Lshows the info dialog���������������������$��������������� setup window���<���*��������^�7�������� InfoTextInfo���^����������������^����P��@����������@������������P��@�����������@����������P��?���������P��?��������$��'���Info-�y@-1046�������������������$����������� do the dialog�(����������� ^InfoTextI������6���$�����������^�(�������� InfoTextInfo���(��������������^���� �InfoTextI�����������������^����������������������������������������������DFCC4D2� �0�����'&��&&��gSEditor for user accounts�SH�r���`�����SQYou must be an admin to enter the editor. If no accounts exist then the admin accSountm���r���`���������� SQis generated automatically. There must always be an admin account, but you can chSangee�n�$�����������S the password.������������������M�4���"�����0001Syou must be an admin to enter10�,�����������EMak� @UAM_Authenticate�ns� �����������0001Sset form205�4���"��������EMak@�7@������w�l UserManager�ke�p���^���������� @wind�2@@������w�l UserManager�$@�'� �#@ Toolbar_Width�@�@�����������n����������������A���� ���������:�=Sset db�d���� ��������T9�@����"�����������T�@�@���������"�����������T�@�/@���������������������T����4���"������������Screate a user if none exists���:���(��������@@�S@�������@�������������"��������������@�D@��������&��������������@����2w�lAdmin�� ��������������@����2@����*�����������@����2@�������������"�����������@�5@������������������@������������������$�����������S do the dialog�4���"��������@�(@������w�l UserManager���������������@�������������kZkZ@�������������111��2��� ��������#@ UAM_ProcessID2@���������������������������DFCC4D;��D���2����ˆ�����8+Add the current record to the journal list �k�.����������������newElml�pos�����������������[�,������������8update record info ��&��������������������������it�&��������������������������it�������������������.�����������ic���8update journal array ����J���8�����������newElml�#� JournalArrayo��@��?��������ca�8���&�������������#� JournalArrayo�newElml���:���(��������������#�JournalIDArray�newElml���<���*������������#� JournalArrayo�newElml���������F���4������������#�JournalIDArray�newElml��������er������������ff�6���$���������8resort and update selection Z����@���.����������#� JournalArrayo#�JournalIDArrayos�H���6�������������pos��#�JournalIDArray��������#��.���������������#�JournalIDArray�pos����,���������������#� JournalArrayo�pos�lo������������������������������DFCC4DF�2e�2��� ��%6��$6��gSprt2html_I ($prt_file_name)DT�.��������������Scalled by prt2html_loop���V���D�����������S>Convert prt files to html files, now supports shortened tables�:���(�����������^%��@��������� prt_file_name���"���������������^�dotI(����6���$�����������^%��@��������� diag_path����"���������������^�count����6���$����8��� ^� � modelgrid���@����������r����������������}�(������������ �Scheck model/grid��s�6���$���������I� ^GetModelAndGrid� � modelgrid����������������������&������������� Ssample .I file�m�2��� ����������S prtC9_Budgets_index.html����� ��������� �S a_Prt�n�"�������������S a_Prt.htm�t� ������������l�lS jl_Prt���$������������� S jl_Prt.htm�t�*�������������S ... (more files)�)���� ��������� �S END�E��������������I���4���"���������e� Sstart building the dotI file�$�"�����������^dotI(~��~�P���>��������S9html file for the index, pick by full or reduced prt file�H���6��������=HYS0If ([Model Variables]Model 64 bit)`full tables�������������^~~�X���F��������)))%^ � modelgrid���@��������*� ��?��������y@ 7.826x10x9T�R���@��������^dotI(~�dotI(�~��prtC9_index.html�~���Z$���&��I�T���B��������h^ � modelgrid���@��������*� ��@���������y@8x10x9�>=�R���@��������^dotI(~�dotI(�~��prtC9_index.html�~���Z$���&���T���B��������^ � modelgrid���@��������*� ��@���������y@8x10x12�R���@��������^dotI(~�dotI(�~��prtC12_index.html�~���Z$���&�������������^�.������������.�aSElse `reduced tables� �����������111SCase of ����6���$��������S: (modelgrid{2}=1)`7.826x10x9�V���D��������)�S>$dotI:=$dotI+"prtC9_Budgets_index.html"+Char(Carriage return )�2��� ��������S: (modelgrid{2}=2)`8x10x9��V���D��������S>$dotI:=$dotI+"prtC9_Budgets_index.html"+Char(Carriage return )�4���"����.���gS: (modelgrid{2}=3)`8x10x12���N���<����.�����S7$dotI:=$dotI+"prtC12_index.html"+Char(Carriage return )��� �������.�����S End case ������ ����.�SEnd if J�*���������������^count~������������!�2��� ��������Sloop over files to processk�<���*��������^�i���?����������@���������>���,��������ccc^ prt_file_name~ �prt2html_ToPath�i�R�h���V��������^��� prt_file_name��~`��@��������y@!if there is a name make the paths�B���0������������^ prt_file_name~� prt_file_name�~��_Prt*���6���$������������^count~�count�~���?������������� ������������Spaths���2��� ������������^#� PM_Platform� $�������r���`������������^ diag_path~ �PostProcessing_SubFolderPathX�average��������y@path to prt file���x���f����L�^dotI(~�dotI(�~� � PM_MakePath� diag_path�� prt_file_name���������~���Z$���&� �\���J����L�ڼ^ diag_path~ � PM_FindFolder�tables@�����y@path to html fileD����t����L���g^dotI(~�dotI(�~� � PM_MakePath� diag_path�� prt_file_name�~��.htm���������~���Z$���&���������L�����^���l���Z����L�����^ diag_path~ �PostProcessing_SubFolderPathX�average����y@path to prt file���\���J����L�^dotI(~�dotI(�~�� diag_path�~�� prt_file_name�~���Z$���&��V���D����L�^ diag_path~ � PM_FindFolder�tables@�y@path to html file�j���X����L����^dotI(~�dotI(�~�� diag_path�~�� prt_file_name�~��.htm�~���Z$���&�����������L��y��^��������L�����^��������L����^�(�������L����Sfinish dotI file����D���2����L��y��^dotI(~�dotI(�~��END�~���Z$���&����������L������>���,�����������S'only run prt2html for at least one file��2��� ������������^�count�~`����������������*��������������Swrite the dotI file�H���6�����������^ diag_path~ � PM_FindFolder�DiagnosticsApps��J���8������������^ docref_full~� � diag_path�~�� prt2html.I�����2��� ������������^#� PM_Platform� $�����t�2��� ������������Sconvert line endings for PC���:���(������������^�g� docref_full���dotI(��k����������������^�|���j������������^�g� docref_full������dotI(���Z$���&����Z��@�����������:��/����������������^���(��������^ � docref_full�cc�F���4�����^� diag_path�~�� prt2html.I���R*ch�����������{�*��������Srun the application�@���.����� ^ PM_Launch� diag_path�~��prt2html��{{���������L^S����������܈^����������������������������DFCC4D�Sz�,�����&m��%m��gSdo the time averaging������ ������������S input��� ��������������S <none>7������ ����x����S output�F���4�����������S. true if validate is a sucess otherwise false������ �����)))%�1 @����D���2��������@ @PostProcessing_Validate@�?����������(��������������� @��7 @ TimeSeries_Im���2��� ��������d @PostProcessing_EnableButtonsdk�����������@tr���� ��������  ' @��7@� ��������R�����@����������DFCC4DGp�N!�R���@��%��$��gS:remove a record from the database and then update the listpDE�����������������������������Svar���&������� �����@ArrayNum$����&������������@@ ArrayNext����<���*���������@%@�@��������@output_pathname�-~�(������������@@ ArrayPlaceA������������^��������&������� �����Slocate in array���0���������_L@ArrayNum$@�@������_\����������<���N���<�������gS7check that the run is not archived or a master scenario�F���4����z�����@@�m����@�?���������u @������am�H���6����� @Alert_ParamText@�����w�l��w�l��w�l�����B���0����:����� @ Alert_Alert@�@���������@�@�����������������������@�l�8���&��������(S!check that there is no run folder���2��� �������g@output_pathname @Run_PathRDT�D���2����>���@@@output_pathname��@��������������H���6����f����� @Alert_ParamText@�����w�l��w�l��w�l�����B���0������������ @ Alert_Alert@�@���������@�@����������������������@��������������Sask���H���6����@��� @Alert_ParamText@�����w�l��w�l��w�l����Z���H�����lj|@ @ Alert_Alert@�@���������@�@���������@�?������������������ �������*�������H�����Sfind place in list�(������������ @Run_Critical_Begin���F���4���������@ ArrayPlaceA@�#@ RunIDArrayR�@ArrayNum$����&�������"����� @Run_Critical_End�������������������d���R����<�����SMdon't delete the only record in the database, otherwise delete current record���J���8����"�����S2used to not delete the first record, which was bad���l���Z���������@@#@ RunIDArrayR��@�?����������J@ ArrayPlaceA�@����������������������l��������<���*���������S$where to go after the run is deleted,�8���&���������@@ ArrayPlaceA�@�?�����������B���0����������g@ ArrayPlaceA@ ArrayPlaceA�@�?�������pt������������@on����������)))%�2��� ����J�)))%Sclose the rundeck window ��>���,��������@#@Rundeck_ProcessID�@������������z�.��������0@D#@Rundeck_ProcessID��.�������ǰ�lj|@?#@Rundeck_ProcessID����������q`@r`�����������������$�������������gS remove record��"�������v����@�:@���������F���4������������S/RunArray_DeleteByRecNum ($ArrayNum;$ArrayPlace)�����������՘�RR@�2��� �����������Sselect first item in array���(��������lj| @Run_Critical_Beginun�D���2������������@@#@RunNumberArrayz��@���������������\���J����0�RR#@RunNumberArrayz�@�����������#@RunNumberArray�@�?�������Z�4���"������������#@RunNumberArrayz@�?��������&�����������lj|#@ Run_CheckDB@�G�:���(��������ll#@RunListReinitToolbarx@�?�������is�6���$�����lj| @Run_Simulationz@�?����������8���&��������llS RunArray_ManageRundeckWindow (1)���.��������rrr@I#@Toolbar_ProcessID�r�>���,��������S'update the library if it is open (list)��8���&��������lj|#@InfoText_ProcessID@��������������,�����������ll@I#@List_ProcessIDz�����������ݲ����@�B���0��������EMak @ Alert_Alert@�@���������@�@����������������������@(�&������������� @Run_Critical_Endn�������������0001@��H���6��������EMak @Alert_ParamText@�����w�l��w�l��w�l�� V�B���0����R����� @ Alert_Alert@�?��������@�@��������������������������@������������������@���������������@ R�������������@R����������������������������������������������������DFCC4D[�ko�N���<��^�� ^����85Create an empty hier list based on what is passed in ���� �������������8 input ���(���������������8 ptr to list ���,��������������(- (�(listPtrsa�$�����������(listPtr (�(������������((�2��� ������������8clear and recreate list ���.�����������H(y(listPtr�@���&�����������(listPtr(w(���X���F��������((listPtr(�?�������(�����������(�@�������?������������(�$������������8 add empty ��es�F���4��������ff(x(listPtr�<empty>(�?��������X���F������������((listPtr(�?�������(�$(��(�����������ذ`���������������(��������������DFCC4D��t���b��$}��#}��LQThis shows the dialog to do links, this code works for both eJournal and EditSimulations������ �������� �� input�|�>���,�����������' mode to work in (literal page to use)���&��������������� table to useh���.����������� default field to use�,���������������^ ��� �LinkModeL����0�����������111^- ��� � LinkTablePtrn����0�����������^- ��� � LinkFieldPtrn��$�����������^�height��F���4�����������^���@�������� � FieldList����������������$�������������� ^LinkModeL �����(�������������� ^ LinkTablePtrn �����(����������� ^ LinkFieldPtrn ������������������f���T��������Otry to get a default heigh of 1/3 the screen or 310 pixels if that is too small�4���"�����������^height������@�����������4���"��������^�height�-0��@���������,�����������^height���@�������������������^�:���(��������^height��height���@���������������������������������^������@���������P��@������������@���������P�height������@������������@������������@�����������height�$��'���Link-�y@ Open a modal windowdd�4���"����������^�(�������� LinkToList�����������¦�����^�u������������������DFCC4Da�U�x���f��%5��$5��gSQThis puts up a hierarchical list of files for a given type into a list, the dialoS g has beenuof�h���V�����������SQseperated in this version. Also strings are now trimmed according to this formula���t���b������������SQif "ANN1906-1920.avgControl_02sC9.xls" is the string then 12,16 keeps "ANN1906-19S20.xls"���p���^����������SQwhere the first number is the number of char to keep and the second is the numberS to���f���T��������SNremove with anything after the removed char appended to the end of the string.���� ���������0S input���F���4��������EMakS/ type (Type extension, empty means everything)4D�H���6������������S1 folder name (will be expanded by PM_FindFolder)���N���<������������S6 ptr to list to fill out (must be cleared externally)���*�������������S keep char number$��,������������ �S remove char number,�e�>���,��������� �^%��@�������� ���� myExtension��r�@���.����������^%��@�������� ���� myFolderNamey���:���(���������i�n^- ����listPtr�� listRefPtrl���B���0���������u�b^ ��� ����keepChar$�� removeCharr���6���$����������^%��@��������� diag_path���6���$����������^%��@��������� shortname��P�N���<����0��� ^�curPos,�� extensionLenx��strLen,��listLen��l�F���4����0��(�^���@��������� diag_list���������������m�&�������0�� �^ myExtension, ��o �(�������0���^ myFolderNamey, ��r$�"�������0��i�n^listPtr, ��ar�$�������0��u�b^keepChar$, �����&�������0���^ removeCharr, ������������0�^�"�������0��� S clear listh� �,�������0��(�^ listRefPtrl,�listPtr� �0�������0�� �^y� listRefPtrlo��T��:�(�������0��t�s^ listRefPtrlo,�w�e�Z���H����0���^� listRefPtrlo���?�����������������������@����������8���&����0��h�e ^plots_hier_counter�,��@�����������������0��h�o�r�&�������0��l�aSget the folder�U�D���2����0�����^ diag_path, � PM_FindFolder� myFolderNamey����P���>����0�����^dummy, �PM_DocumentListo� diag_path�o� diag_list������������0��������J���8����0�����S2if there is no extension then just keep everything���@���.����0�����^��� myExtension�� ����������������4���"����0�����^� diag_list��listPtro����(�������0�����Sshorten the name����B���0����0�����^�i���?���������� diag_list�����D���2����0�����^z�listPtro��i��iRef(�� shortname�������������������^ shortname,�� � shortname���?���������keepChar$��,��� � shortname��keepChar$�,�� removeCharr�,���?�����������V���D���������� ^�listPtro��iRef(�� shortname� �plots_hier_counter����R���@�������� ;P ^plots_hier_counter�, �plots_hier_counter��,���?�������������������� =^����������������^���d���R������������SLloop over every element in the list and look for a match based on extensionsA�D���� ������������Ssetup���:���(������������^ extensionLenx,��� myExtension������� �����������Sloop,��B���0����ƺ����^�i���?���������� diag_list����:���(����ƺ����^strLen�,��� diag_list��i>�<�B���0����ƺ����S+check against two letter extensions, eg .nc��:���(����ƺ����^� extensionLenx� ��@��������� a"������ƺ����^� diag_list��i>!?�strLen,�,P��@��������",� � myExtension!?��?�������",���� diag_list��i>!?�strLen,�,P��?�������",� � myExtension!?��@��������",���� diag_list��i>!?�strLen,",� � myExtension!?��@��������",����(�����#�����Sshorten the name��(��������ƺ���^ shortname,�� � diag_list��i>���?���������keepChar$��,��� � diag_list��i>��keepChar$�,�� removeCharr�,���?���������e�L���:����ƺ����^x�listPtro�� shortname� �plots_hier_counter�����R���@����ƺ���� ^plots_hier_counter�, �plots_hier_counter��,���?���������������ƺ����^S�F���4����ƺ�S.check against three letter extensions, eg .htm��������ƺ���^S��p����ƺ���^� diag_list��i>!?�strLen,�,P��@��������",� � myExtension!?��?�������",���� diag_list��i>!?�strLen,�,P��@��������",� � myExtension!?��@��������",���� diag_list��i>!?�strLen,�,P��?�������",� � myExtension!?��@��������",���� diag_list��i>!?�strLen,",� � myExtension!?��@�������",����(����������Sshorten the name��(��������ƺ���^ shortname,�� � diag_list��i>���?���������keepChar$��,��� � diag_list��i>��keepChar$�,�� removeCharr�,���?���������e�L���:����ƺ�^x�listPtro�� shortname� �plots_hier_counter�����R���@����ƺ� ^plots_hier_counter�, �plots_hier_counter��,���?���������������ƺ�^S��������ƺ�^��������ƺ���^S��������ƺ����^���������ƺ���^�>���,����ƺ��� S&see if there are any items in the listie�H���6����ƺ����S0add icons to a real list or empty to a null list�?�2��� ����ƺ����^listLen,�|�listPtro���4���"����ƺ����^�listLen�,`�������������{�<���*����ƺ����S$pick icon based on ending, if needed,���8���&����ƺ����^�i���?���������listLen��D���2����ƺ����^z�listPtro��i��iRef(�� shortname����2��� ��������^strLen�,��� shortname�in�b���P��������^ shortname,�� � shortname��strLen,�,P��@�����������@���������������������^l�0�����������^� shortname� �htm����h���V��������^�listPtro��iRef(����$����$����,���@ `�������y@IE icon�0�����������^� shortname� �xls�is�"�����������^#�Use_EVA�o�j���X��������^�listPtro��iRef(����$����$����,���@ �������y@EVA icon,������������^ s�l���Z��������^�listPtro��iRef(����$����$����,���@ P�������y@ Excel iconT������������^�0�����������^� shortname� �.nc�pa�"������������^#�Use_EVA����j���X���������1�6^�listPtro��iRef(����$����$����,���@ �������y@EVA icon,� �������������� ^��n���\���������(�^�listPtro��iRef(����$����$����,���@ p�������y@ Panoply icony��������������^ m������������^l�n���\��������RRR^�listPtro��iRef(����$����$����,���@ 0�������y@ Suspect icony����������������^ r������������^���������������^S�@���.�������� ^PostProcessing_TypeHierEmpty��listPtr���������~����^����������������������������������������������������DFCC4D Mh~�8���&����������"0open list window to edit runs @"���h���V����������� Generic_OpenReopen???#List_ProcessIDK?x� List Window?x� List_ProcessK??����������DFCC4Dm�2 B�L���:��&\��%\��gS4this code lets you go to the previous figure caption~��L���:�����S4I have to build an array of avalible figure captions~���L���:����r�����S4so that I can find the right one. Then move position~������ �����scalS inputD:�&��������scalS cur position:��:���(����������gS# move to previous or next as -/0/+ a�V���D����~����S> optional parameter that prevents old values from being saved���B���0����T�TAT � @��@move��@pos� @��@curPosD�ch�2��� �����TAT @�@figso�@�@�������� �"�������Ɋ�TAT @curPos�~ @�D � �������.����@moveo~ @������������8��������:���(����J� @InfoText_CreateFigArray@figsT�����������������$�����������S move in array���<���*��������TAT @pos~@�@figsT� @ SectionNumber�5 �0�����������@@pos�~@��������������������V�����@���<���*���������@@move��wl@������������wO8prev~���2��� ���������@pos~@pos�~`@�?����������:���(����Ŭ�����@@move��@������������wO8cur���*�����������aaaaSdon't change ��<���*����>��� @@move��~@������������wO8next~�u�2��� ���������o�n@pos~@pos�~�@�?������������������� @��������������o�n@�t�(�������h�aaaa@pos~@���������������������������@�����������X�aaaa��B���0������������S+check for valid pos & change figure caption��<���*���������@@figs��@posa�~@���������������b���P�����������@@�wl@�@���������wO8.surpress save if the extra parameter is passed`���H���6��������aaaa @ ItemCaption� @ SectionNumbera~ @SectionPictText�`���N������������SHItemPictLabel{SectionNumber}->:=SectionPictText `don't need this anymore����������Ĵ�����@�6���$��������� @ SectionNumber~@figsi�@posa��n���\��������H @ SectionPict~ @ItemPictI� @ SectionNumberawO8$load temp image until full one loads~�H���6��������p @SectionPictText~ @ ItemCaption� @ SectionNumbera�B���0����,�0001 @ SectionTitlec~w�lFigure �~�@� @pos�00�������������EMaker�"�������Ӽ��� S load image8�t�<���*����������@value~ @ItemNameI� @ SectionNumbera�T�>���,�����������@@ foundPreviewo~@@�� ���@value�eJ�>���,�������� @I@@ foundPreviewo�~�~`@�?���������D�4���"��������TAT @�@��� ���@ foundPreviewo� �@���.��������496 @pictPath$~ @ PM_FindFolderw�lImages��0:�N���<������������@pictPath$~ @ PM_MakePath@pictPath$�@�� ���@�����N���<���������� @pictPath$~ @ PM_MakePath@pictPath$�@�� ���@���h�8���&���������o�n@@@pictPath$��$@����:�6���$���������{�@@pictPath$� @ SectionPict��}������������@��������������4@������������������@ ����������������������������������������������DFCC4DHtd�EL�~���l������������FQGet the next level up from a path name. If the end of the name is a file then youF get back the e���~���l��������FQfolder/directory that the file is in. If the end of the name is a folder then youF get back the r���f���T�����FMfolder that encloses it. This command is the equivlient of cd .. under unix. }�j���X���������FQThe code comes from the System Documents section of the manual so I've left the �8���&���������Foriginal comments at the end. ��� ��������F input ��(��������F a path name ���"������������F output lha�0������������F a shorter path name ���������������B���0���������F( Long name to file name Project Method ��F���4���������F- Long name to file name ( String ) -> String �R���@���������F9 Long name to file name ( Long file name ) -> file name ������������������6���$���������%�@������� � �����:���(������������%�?������� vsDirSymbol���J���8������������viLenviPosviChar viDirSymbol�������������������4���"����������� viDirSymbol# PM_PathASCII�p�*���������������viLen� ����j���X�������������[ �!viLen"�@ viDirSymbol| omit last char if it's a folder �8���&������������viLenviLen�@�?���������������������������,���������������viPos������������R���@�����������viCharviLen�?��������@�?���������F���4������������[ �!viChar"�@ viDirSymbol���(���������������viPosviChar �.�����������viChar��������������������������������������������������4���"������������viPos�@�����������re�@���.������������ ���  ��?�������viPosle����������������ua���� ������������ �� ���������������������������������������������������DFCC4Dv�,�A�x�X���F���� ����7d>Generic code of OHT programs to write out the file and launch �@� ������������7d input �he�:���(������������7d contents of file to write out l����N���<������������7d4 .I file name to write out (.I needs to be passed) ����B���0��������� ���7d) app name (.app and .exe will be added) �mb�.��������������( (�(contents����>���,������������(%(�@������� (�(filename����<���*���������(%(�@������� (�(appname���8���&��������3333(%(�@�������( diag_path���*��������������(2( docref_full���&���������������(contents� (�(���&���������������(filename� (�(�$�����������zzz(appname (�(r����������������(�0����������������7dwrite out the .I file �Sy�B���0������������( diag_path ( PM_FindFolder�� OHTAppsg �H���6������������( docref_full( ( diag_path��@(filenameh���4���"������������(#( PM_Platform�@$(��re����p������������(�g( docref_full(�(�(contentsu(�Z$(��&(�Z(�@���������:��/�����������������((���@���.������������(�g( docref_full((contentsule����������������((c�*���������������( ( docref_full�D���2������������(( diag_path��@(filenameh�R*ch��������������������.����������������7drun the application ����>���,������������ ( PM_Launch( diag_path��@(appname������������������[��������DFCC4D%�]'�V���D��'&��&&��gS>Scan through the input folders and see how to adjust the cacheB�X���F�����������SAto match what's on disk. This code handles Input and Input Oceans���,���������������Sin a series of steps:���,�����������S 1, set the semaphore�P���>�����������S9 2, scan folder and determine which files are input files���X���F������������SA 3, delete records for files in the database that are not on disk���V���D������������S> 4, add records for files on disk that are not in the database���.������������S 5, clear the semaphore���J���8������������%@�@�������� @inputFolderPath�@tempPath$����N���<����������{@@inputFolderCount�@inputFileCountn�@i�@j��s�J���8��������aaaa@�@�@�������� @ inputFoldersp�@��������������H���6������������@�@�@�������� @ inputFilesn�@����������������������������������(�������X�6dSset the semaphore���6���$����X�����@worksn@�w�l $CM_InputScan������������X�@�����6���$����X�����Sget list of folders to process��<���*����X�����@@j�@�?��������@�@������������"�������X�� S pick folder���P���>����X���� @inputFolderPathn @ PM_FindFolder#@ CM_FoldersC�@j|������������X�D� �������X�����S get lists���>���,����X�����@ @inputFolderPath� @ inputFoldersp����@���.����X����@inputFolderCountn@ @ inputFoldersp����>���,����X�����@@inputFolderCount�n@�����������������������X�� ���:���(����X�����S"remove records for deleted folders���>���,����X����� @ CM_Invalidate) @ inputFoldersp�@j������������X��������*�������X�����Sprocess each folder���B���0����X�����@@i�@�?��������@inputFolderCount����d���R����X�� @tempPath$n @ PM_MakePath @inputFolderPath� @ inputFoldersp�@i|�@��L�N���<����X����@ @PM_DocumentList)@tempPath$�) @ inputFilesn�����t���b����X���� @CM_InputScanFoldern@j�) @ inputFoldersp�@i|�) @ inputFilesn�) @inputFolderPath�����������X����@����������X�����@����������X�����@�����������X���������������X�����@�����������X��������0�������X�����Sclear the semaphore & var���,�������X�����#@CM_Priv_ScanInputn@����,�������X�����@�w�l $CM_InputScan������������X�������������������������������������������������DFCC4D]�_�:���(�� b��b���7d!Method Name: UAM_ComparePasswords����X���F�������������7d>Description: This method will compare the content of two blobs ���$���������������7d Parameter:��+�0���������������7d $1 = Blob; $2 = Blob ����&������������� �7d Return Value:����<���*�����������7d# $0: True if equal, otherwise false����������������������&������������\\ ��� ������ �����������\1 ���������� ������������ \��������6���$��������\�] ������] ��������R���@������������\�vByte���������������] ���� ��?������������>���,������������\ ��O�vByte�O� ��O�vByte�������� ���������zzz \��������*������������\vByte�] �������������������\\������������\\t������������\\s���� �������� \�������������������\\��DFCC4D.c� O�B���0��!6�� 6��,�7d*open or close all the disclosure trianglespt���� ������������7dinput���0����������������7d open or close constant������� �����������]1 ����*�����������ds:H]1� openorclosedp�ar���� ������������]�i����$�������������]1�changed�� �(�������������]1� hidetrendsh���(������������e�c] openorclosedp. ���N��������������� ��Z���H����������I]��"��������.��" �Simulation_UnbreakableLock������4���"���������D�O]� openorclosedp�� �Open��u�(������������{��7dReset_all_groups �������������{��H���6�����]�Counter���?�������� �Number_of_Groupsd�xx�B���0�����)))%] � Group_StateN�Counter.�� �Closed.��L���:����� ]Twist_Down_Button � Group_NamerN�Counter.�������������]���������]���������]�2��� �������� ]Simulation_OceanMenul���������������������8���&��������]��?�����������@������������F���4��������] � Group_StateN��?�������.�� �Closed.��:���(������������ ]Twist_Down_Button��Info������������������]J������������]�F���4��������] � Group_StateN��@��������.�� �Closed.��:���(�������� ]Twist_Down_Button��Init���������������������]������������������]���F���4������������] � Group_StateN��@��������.�� �Closed.����:���(������������ ]Twist_Down_Button��Ocen��������2��� ������������ ]Simulation_OceanMenul���������������������]������������������]���F���4������������] � Group_StateN��@�������.�� �Closed.����:���(������������ ]Twist_Down_Button��Diag�����������������������]������������������]���:���(������������ ]Twist_Down_Button��Forc�����������������������]���8���&������������ ]Twist_Down_Button��CO2����������������������]���8���&������������ ]Twist_Down_Button��N2O����������������������]���8���&������������ ]Twist_Down_Button��CH4����������������������]���:���(������������ ]Twist_Down_Button��CFC11����������������������]���:���(������������ ]Twist_Down_Button��CFC12����������������������]���8���&������������ ]Twist_Down_Button��Sol����������������������]���:���(������������ ]Twist_Down_Button��Scen�����������������������]������������������]���&����������������7dForm_Unloader ���.����������������7dSimulation_SaveRecord ����6���$�������������7dNEXT RECORD([Model Variables])����:���(�������������7d"PREVIOUS RECORD([Model Variables])����������������������$����������������7d Form_Loader �������������������]���6���$������������][�(l��� @_Mode_Menu�������8���&�������������7d this opens all the closed groups����H���6������������]�Counter���?�������� �Number_of_Groupsd����@���.������������] � Group_StateN�Counter.�� �Open����L���:������������ ]Twist_Down_Button � Group_NamerN�Counter.����������������������]������������������]������������������]������������������]������������������]����������������������������������������������DFCC4Dz|�,^�h���V��'+��&+��gSQImports a record or records from an XML file to 4D records. Duplicate run numbersfs�r���`�����������SQare not allowd. Later versions will also document how BLOBs are converted to and Sfromn���v���d�����������SQXML. Counts up the records in the XML import and asks the user what to do about dS uplicates��x���f��������0001SQFixed bug where import halted after the first record and didn't replace duplates S correctly.w27�������������EMaker�@���.�������������%@�@��������@path��@ runNumber�������r������������@%@�@��������@ xml_Table_Ref�@xml_Record_Refz�@ xml_Field_Ref�@ xml_Save_Refm�@ xml_BLOB_Refm����&�����������O@-@fieldPtr$�x�>���,���������@1@doned�@continue$�@showquit$����(�����������@@ fieldValuef���P���>���������@@versd�@misseda�@ fieldType�@import_counterz����(���������������@@ what_to_dow����4���"������������@import_counterz>@��������������&���������������Serror reporting���:���(�����������@%@�@�������� @ RundeckTitlen����8���&������������@%@�@�������� @ RundeckDesc����J���8��������� @�@�@�������� @ RundeckErrors�@�@���������$���������������@@listRef����$�����������d@2@docReff�� ��������������@donee>@�׀��$��������������@showquit$>@������������r�4���(�������r�����Sget the document����2��� ����r�@���@#@ PM_Platform�$@���@��@���.����r�����@path>w�l????wO8import from any file>����������r�����@���$�������r�� @path>w�lxml����������r�����@���@���.����r�����@docRef�>@w�l�>�@pathe�$@������0�������r�����@ @OK�@�?�����������(�������r�����@path�> @DOCUMENTD�����������r����A���,�������r�����Sopen the XML document���4���"����r����@ xml_Table_Ref>@@pathT������������r��������,�������r�����Sread first record ref���>���,����r�����@xml_Record_Refz>@@ xml_Table_Ref������������r��������D���2����r�����S-collate a list of records in the import file ���B���0����r�����S+ (0 = replace, 1 = stop, 2 = don't replace)���l���Z����r�����@ what_to_dow> @XML_CollateRecords�@xml_Record_Refo� @PM_Name@patha�@�������������r�����@���D���2����r�����@@ what_to_dow�@������������wO8replace���$�������r�����@showquit$>@����B���0����r�����@@ what_to_dow�@�?��������wO8stop>�� �������r�@done�>@��J���8����r�@@ what_to_dow�@�@���������wO8 don't replace)�$�������r�@showquit$>@���������r�@���������r��������(�������r�����@@doneq�@�����(�������r�����Sshow progress bar���T���B����r�����@ progressBar> @ Progress_Openw�lImporting simulations...������������r�����@���4���"����r�����@ progressBar>�>`@�@�����������������r�����@�����������r��������<���*����r�����S%loop over the records in the database���L���:����r�����@ @OKE�@�?����������@done��@��������������r����������������r��������L���:����r�����S4read the first field, which should be the run number>���\���J����r���&@ xml_Field_Ref>@@xml_Record_Ref>�@ fieldName�@ fieldValuef���L���:����r�����@fieldPtr$> @ XML_FindField@������@ fieldName����.�������r�����@ runNumber>@ fieldValuefhi���������r�����@�d���R����r�����SMcheck that the first element is the run number and that it is not a duplicate���2��� ����r�! @@fieldPtr$�@�����..�J���8����r�����@import_counterz>@import_counter>�>�@�?�������r>���������r������J���8����r�����S3check what to do about duplicates based on the mode��<���*����r�����@recNum�>@@�����@ runNumber�@�8���&����r�����@@recNumb�>�>`@�?������������������r�����@@ what_to_dow�@�������������� @xml_duplicate_type��@import_countert-�wl@�@����������wO8)replace and run is not using an old model���.�������r�����@�@������@recNum��@�"�������r�����@�:@�������$�������r�! @continue$>@�ow��������r�����@��J���8����r�����@continue$>@��� skip the record on don't replace�����������r�����@c��������r�@�N���<����r�@continue$>@��� %always import if it's not a duplicatete��������r�@�:���������r�����@�$�������r�����@@continue$�����������r�����@�:���(����r�����S#get the data from the rundeck fieldn �Z���H����r�����@ xml_Field_Ref>@@ xml_Field_Ref�@ fieldName�@ fieldValuef����Z���H����r�����@ xml_Save_Refm>@@ xml_Field_Ref�@ fieldName�@ fieldValuef������������r������(�������r�����Scheck the version�2��� ����r�����@versd>@� @ fieldValuef�ie�:���(����r�����@@versd� �@� #@ XML_Version�������������r�7�(�������r�����Screate the recordld�6���$����r����� @Simulation_Create@ runNumber�����������r��������(�������r�����Sread in BLOB data���<���*����r�����@ xml_Save_Refm>@@ xml_Save_Refm����<���*����r�����@ xml_BLOB_Refm>@@ xml_Save_Refm������������r������0�������r�����Sread in User Preferences�_S�<���*����r�����@ xml_BLOB_Refm>@@ xml_BLOB_Refm����J���8����r����� @XML_TextToArray @ Group_State�@ xml_BLOB_Refm����<���*����r�����@ xml_BLOB_Refm>@@ xml_BLOB_Refm����L���:����r����� @XML_TextToArray @ Group_Visible�@ xml_BLOB_Refm������������r����� @�$�������r�����S read in Links@�Z���H����r�����@ xml_Save_Refm>@@ xml_Save_Refm�@ fieldName�@ fieldValuef����Z���H����r�����@ xml_BLOB_Refm>@@ xml_Save_Refm�@ fieldName�@ fieldValuef����Z���H����r�����@ xml_BLOB_Refm>@@ xml_BLOB_Refm�@ fieldName�@ fieldValuef����H���6����r����� @XML_TextToArray @ LinksList�@ xml_BLOB_Refm���Z���H����r�����@ xml_BLOB_Refm>@@ xml_BLOB_Refm�@ fieldName�@ fieldValuef����L���:����r����� @XML_TextToArray @ LinksListType�@ xml_BLOB_Refm� f�Z���H����r�����@ xml_BLOB_Refm>@@ xml_BLOB_Refm�@ fieldName�@ fieldValuef����N���<����r����� @XML_TextToArray @LinksListFieldy�@ xml_BLOB_Refm�ie�Z���H����r�����@ xml_BLOB_Refm>@@ xml_BLOB_Refm�@ fieldName�@ fieldValuef����L���:����r����� @XML_TextToArray @ LinksListWord�@ xml_BLOB_Refm� f���������r����� @�L���:����r�����S5loop over all the fields in the record to copy values f�,�������r�����@missedO>@�����������in�Z���H����r�����@ xml_Field_Ref>@@ xml_Field_Ref�@ fieldName�@ fieldValuef����0���������������@ @OKe�@�?��������in�L���:������������@fieldPtr$> @ XML_FindField@������@ fieldName� f�4���"������������@@;@fieldPtr$��@��ld�B���0������������ @ XML_TextTo4DL@fieldPtr$�@ fieldValuef�������������������@f�4���"������������@@misseda�wl@�@�����������:���(������������@missed�>@missed��>�@�?�������Va����������������@�>���,������������ @ RundeckErrors�@missedk->@ fieldName@����������������@m�Z���H������������@ xml_Field_Ref>@@ xml_Field_Ref�@ fieldName�@ fieldValuef�������������������@����������������������,���������������Sdo cleanup of import>���Z���H������������@misseda> @XML_ImportCleanup@ runNumber�@versu�@missedb�������������������@���L���:������������ @Alert_ParamText@ runNumber�w�l�>�w�l�>�w�l�>����B���0������������ @ Alert_Alert@�@���������@�@��������������������������@������������������@��������������@�`���N��������@@import_counterz�@������������wO8block error on multiple import �B���0�������� @ Alert_Alert@�@���������@�@������������������������@��� ���������������@done�>@�������������������@���@���.������������@xml_Record_Refz>@@xml_Record_Ref>�������������������@����������������������*���������������Sclose progress bar���<���*������������@@ progressBar����>`@�@�����������(���������������@I@ progressBar�������������������@������������������������� ������������Scleanup���*���������������@@ xml_Table_Ref����$���������������@@showquit$����&��������������� @XML_QuitOnImport������������������@������������������@������������������������DFCC4Dr7�,�D���2��%��$��gS,This is a stub method used for documentation�����������������M�^���L�����������SGThe version field in the rundeck part of the XML determins what version���`���N������������SHof EdGCM exported the record so that appropriate changes can be made on ���0�������������Simport. The versions are:>,��������������S��b���P������������SJ0, EdGCM 2.1, base version with version of the database frozen in May 2003��T���B������������S<1, EdGCM 2.3-2.5, changes the ocean mode (kOcean), 2004-2005����d���R������������SM2, EdGCM 3.0, revised database (2.5 used the same db as 2.3), frozen Jan 2006���8���&����š� �%@�@��������#@ XML_Version����(�������š�RR#@ XML_Version%w�l2cc��DFCC4DJ?��&�����&b��%b��gSrun trendSetter��^���L�����������SGinput includes where to place the output and if this is a dry run (just���L���:������������S4create the tables) or a real run. *(^&&)^)%*)%&*%^*$^����������������.�������*�����%@�@�������� @�����6���$����*����@%@�@��������@out_fold$����.�������*�����@%@�@�������� @�����4���"����*�����@%@�@��������@out_tab������� ����*�����@1 @�����&�������*�����@1@ save_data����.�������*����@%@�@�������� @����4���"����*�����@%@�@��������@header�����"�������*�� @@ticks������������*�����@��"�������*�����@@trend����8���&����*�d@%@�@��������@ trend_patht�z�(�������*�����@2@ docref_full�4� �������*�����@@pos����"�������*�����@@iteme������������*����������� ����*��LSsetup���$�������*�����@out_fold$^ @�� �"�������*�����@out_tab^ @����$�������*�����@ save_data^ @����"�������*�����@header�^ @����.�������*�����@ trend_patht^ @Run_PathR�����������*�� ���.�������*�����Sset trendSetter.I file���:���(����*����@trend^@header��^�@�Z$@��&����:���(����*�����S"add xls ending for pc version only���2��� ����*����@#@ PM_Platform�$@������8���&����*����@trend^@trend�^�@�Z$@��&����������*�����@���F���4����*�����@trend^@trend�^�w�l.xls�^�@�Z$@��&�����������*�����@�����������*����������� ����*�����Spaths���H���6����*�����@trend^@trend�^�@out_fold$�^�@�Z$@��&����F���4����*�����@trend^@trend�^�@out_tab�^�@�Z$@��&����������*��������&�������*�����Sfor view or run���d���R����*�����@trend^@trend�^� @trendSetter_I_Boolean@ save_data��^�@�Z$@��&������������*��������$�������*�S trends to use�L���:����*�@trend^@trend�^� @trendSetter_I_Boolean@������L���:����*��%@trend^@trend�^� @trendSetter_I_Boolean@�����=>�L���:����*�����@trend^@trend�^� @trendSetter_I_Boolean@�'�������L���:����*�����@trend^@trend�^� @trendSetter_I_Boolean@�1�������L���:����*�����@trend^@trend�^� @trendSetter_I_Boolean@�C�������`���N����*�����@trend^@trend�^� @trendSetter_I_Boolean@�U�����^�@�Z$@��&������������������ ��"���������������S base values���V���D������������@trend^@trend�^� @ RealToF18.5@������^�@�Z$@��&����V���D������������@trend^@trend�^� @ RealToF18.5@������^�@�Z$@��&����V���D������������@trend^@trend�^� @ RealToF18.5@�&�����^�@�Z$@��&����V���D������������@trend^@trend�^� @ RealToF18.5@�0�����^�@�Z$@��&����V���D������������@trend^@trend�^� @ RealToF18.5@�B�����^�@�Z$@��&����V���D������������@trend^@trend�^� @ RealToF18.5@�T�����^�@�Z$@��&�����������������������(���������������Strend information���&�����������.Scarbon dioxide.�t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@������@������@������@��������t���b���������� @trend^@trend�^� @trendSetter_I_TrendInfo�@������@� �����@� �����@� �����f�t���b���������� @trend^@trend�^� @trendSetter_I_TrendInfo�@� �����@������@������@� �����f�t���b���������� @trend^@trend�^� @trendSetter_I_TrendInfo�@������@������@������@������f�$���������� S nitrous oxide��t���b�����������@trend^@trend�^� @trendSetter_I_TrendInfo�@������@������@������@�������t���b���������� @trend^@trend�^� @trendSetter_I_TrendInfo�@������@������@������@������f�t���b���������� @trend^@trend�^� @trendSetter_I_TrendInfo�@������@� �����@�!�����@������f�t���b���������� @trend^@trend�^� @trendSetter_I_TrendInfo�@�"�����@�$�����@�%�����@�#�����f���� ������� Smethane�d�t���b��������! @trend^@trend�^� @trendSetter_I_TrendInfo�@�(�����@�*�����@�+�����@�)�������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@������@������@������@��������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@������@������@������@��������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@������@������@������@����������� ������������Scfc11���t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�2�����@�4�����@�5�����@�3�������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�6�����@�8�����@�9�����@�7�������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�:�����@�<�����@�=�����@�;�������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�>�����@�@�����@�A�����@�?���������� ������������Scfc12���t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�D�����@�F�����@�G�����@�E�������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�H�����@�J�����@�K�����@�I�������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�L�����@�N�����@�O�����@�M�������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�P�����@�R�����@�S�����@�Q���������� ������������Ssolar���t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�V�����@�X�����@�Y�����@�W�������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�Z�����@�\�����@�]�����@�[�������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�^�����@�`�����@�a�����@�_�������t���b������������@trend^@trend�^� @trendSetter_I_TrendInfo�@�b�����@�d�����@�e�����@�c��������������������������,���������������Swrite out the .I file���D���2������������@ trend_patht^ @ PM_FindFolderw�l TrendApps����N���<������������@ docref_full^@ @ trend_patht�^�w�l trendSetter.I����2��� ������������@#@ PM_Platform�$@������|���j������������@�g@ docref_full�@�@�@trend�@�Z$@��&��@�Z@�@����������w�l:�w�l/��������������������@���:���(������������@�g@ docref_full�@@trend��������������������@���(���������������@ @ docref_full����J���8������������@@ trend_patht�^�w�l trendSetter.I�w�lR*ch�����������������������2��� ������������Swrite out the .I Name file���(��������������� @trendSetter_I_Name^����������������������Z���H������������SBremember to delet the stop file and check for it before continuing���T���B������������@@@ trend_patht�^�w�ltrendSetter.stop��$@������B���0������������@�@ trend_patht�^�w�ltrendSetter.stop�������������������@����������������������*���������������Srun the application���F���4������������ @ PM_Launch@ trend_patht�^�w�l trendSetter2^�����������������������:���(������������S"wait for the application to finish��� ���������������@ticks^@������������������@���.���������������@C@B�@�@��������������p������������ @@@ trend_patht�^�w�ltrendSetter.stop��$@����x @�^`@ticks�^@�@������������.���������������@C@B�@����������������������������������2��� ������������Sretype the files afterwards���<���*������������ @trendSetter_I_Cleanup@ trend_patht�����������������������DFCC4D,��L���:��$}��#}��L5Pick a data file from a list to use for a trend. This��R���@�����������:code displays a list window to prevent people from pickingX���R���@������������:an invalid file. The files are picked from Input Forcings.X������ �������� input�M�B���0�����+ ptr to location to pass filename back to.�,�����������^- ����filename$����F���4��������^���@��������� datafiles����������������H���6��������^ � file_hier�� arraySize��len��itemRef��8���&�����^%��@�������� � file_prompt����$�����������^filename$ ���,�����������^itemRef��?���������������������:���(��������"get the list of datafiles a reduce��P���>��������^ � PM_FindFolder�Input Forcings��� datafiles��&��������������^�� datafiles���������������&�����������create the list�,�����������^�m � file_hier�����&�������¦����^y � file_hier����������¦�^�$�������¦� ^ file_hier�w�V���D����¦�^ � file_hier���?�����������������������@������������������¦��:���(����¦�"fill out list with only text files�4���"����¦�����^ arraySize�� datafiles�rA�:���(����¦�����^�i���?��������� arraySize�is�6���$����¦�����^len��� datafiles��i��� �������¦�����^� datafiles��i!��len�P��@��������"��.���� datafiles��i!��len�P��@��������"��t���� datafiles��i!��len�P��?�������"��x���� datafiles��i!��len"��t�����H���6��$�����^x � file_hier�� datafiles��i��itemRef���p���^����¦���^ � file_hier�����������������$����$�������@ �������y@ text icon�e�:���(����¦�����^itemRef�itemRef����?�����������������¦�����^ R��������¦�����^�����������¦�����^�"�������¦����� show dialog e�>���,����¦�����^�| � file_hier���������������rr�B���0����¦����� ^ file_prompt�Choose a trend file to use:����������¦�����^������@���������P��@�������������@���������P��@�������������@������������@�������������@������������@��������$��'���Choose Trend File�y@ Open a modal window���.�������¦�����^�(��������List-���������¦�����^�rr���������¦����� ^�.�������¦�����if the user picked Open���0�������¦����^ �OK���?�����������B���0����¦�����*get the name of the document from the path����R���@����¦�����^z � file_hier��{ � file_hier���i� � file_prompt����0�������¦�����^filename$j � file_prompt����������¦�����^����������¦�����^���B���0����¦����� ^ Alert_Alert��?����������@������������������¦�����^�����������¦����������� ����¦�����cleanup���&�������¦�����^y � file_hier�����������DFCC4DE�8CR�<���*�� �� �� �7d#save a section back to the eJournal���� ���������������7d input �hi�*���������������7d section number.����6���$��������o I.] ����currentSelectionX�����.�������(�0001]currentSelectionX. �����������������EMak�(�J���8������������ ]ItemTextI�currentSelectionX... � SectionText�������������������������DFCC4Da�,�e�j���X������������8PThis code checks that the files passed to it are really images and removes them l�D�*�����������L�8if they are not. �� ���������������8 input � s�.����������������8 ptr to files list ����.����������������8 ptr to types list ����"����������������8 output l���V���D�������������8< !!warning the incoming lists are modified by this method!! \��=�F���4�������������- �� ���filesPtr$� fileTypesPtriC�,�����������������count�pos^�&����������������filesPtr$ �����*���������������� fileTypesPtri ��� ������������������T���B�������������8;loop over the list until everything is an image or removed ��4���"�������������count��filesPtr$ol�:���(��������������pos��?��������countrs�b���P���������������#� CM_ImageTypes� fileTypesPtri�pos�@��?���������4���"�������������filesPtr$�pos\�~\������������������bj����������������������������������������������������������DFCC4Du�,c�&�����%��$��gSRundeck_Create����������������S�o��f���T�����������SOThis is the core of the whole database as this converts a simlulation record in���b���P������������SKto a working rundeck for the GISS GCM Model II. Thus be very careful about ���*���������������Sediting this code.������������������S����f���T����������SOThis code is undergoing reconstruction, there were problems inherited from the �r�b���P����������SJoriginal GCM Buddy and FileMaker GCM Buddy. GCM Buddy was written before I�V�d���R���������k� SMunderstood the model and it had a lot of problems. FileMaker's scripting left� �b���P����������SKsomething to be desired and continued to have many problems. I am trying to��Z���H��������� �GSCmake this as clean as a script to create a namelist/rundeck can be.�r�������������h�eS��e���� ����������SInput:�:�L���:��������� �S4 Rundeck Style: true/false for traditional or new*�t�Z���H���������t�hSC First Hour: true/false for first hour rundeck or normal rundeck�r���� ���������:�=SOutput:�d�J���8��������S3 All output is placed in [Model Variable]Rundeck�������������S��f���T��������SNFor further reference please look in Namelist Document which tells many of the�V���D��������)))%S?secrets of rundecks. Otherwise ask me (Michael) or Reto or Gary�����������������������������Svar������ �������������1 @�������� ������������@1 @�����(���������������@1@ Traditional����&���������������@1@ FirstHour����6���$������������@� @ modelgrid�@�@������������&���������������@ Traditional* @����$���������������@ FirstHour* @�����������������������(���������������SClear old rundeck���"�����������@����*w�l�*�&�����������@@ Traditional��,����������� @Rundeck_CreateTradition ����������������@���4���"������������Sabreviated header for model ���p���^������������@����*@�����*�w�l (@�*�@�����*�w�l)�*�@�Z$@��&��@�@�������������������������@�[��������������������&���������������Snamelist itself���^���L������������@����*@�����*�w�l &INPUTZ��*�@�Z$@��&�wO8namelist header���>���,����������S'based on model version support geometry�e�6���$������������ @GetModelAndGrid @ modelgrid����l���Z����������@ @ modelgrid�@�?��������*@�?��������wO8if we are not using version 0.9� ����������������@���d���R������������@ @ modelgrid�@�@���������@�@���������wO88x10 for Model II 1.0.7���h���V������������@����*@�����*�w�l GEOMETRY='8x10',�*�@�Z$@��&�wO8namelist header���d���R����������@ @ modelgrid�@�@���������@�@���������wO88x10 for Model II 1.0.7�a�h���V�������� @����*@�����*�w�l GEOMETRY='8x10',�*�@�Z$@��&�wO8namelist header�f���T����������@ @ modelgrid�@�@���������@�?��������wO87.8x10 for Model II 1.0.7�r�j���X��������@����*@�����*�w�l GEOMETRY='7.8x10',*�*�@�Z$@��&�wO8namelist header��������������@�[������������@���� ��������Stime*�x���f������������@����*@�����*�w�l TAUI=�*�@�  @Calendar_DateToTau�@�����@�������*�w�l., ���f���T����������@����*@�����*�w�lIYEAR=��*�@� @������*�w�l,�*�@�Z$@��&��r�(�������������Scontrol variables�i�N���<������������S7kOcean this gets set if the user selects the ocean mode������������������@���@���.������������@@�����@������������wO8 fixed sst���L���:������������@����*@�����*�w�l KOCEAN=0,�*�@�Z$@��&����p���^������������@@�����@�?���������x @�����@�@���������wO8qflux, qflux deep ocean���<���*������������S$information for using ocean fluxes *���T���B������������@����*@�����*�w�l KOCEAN=�*�@� @������*�w�l,���\���J����������@����*@�����*�w�lSRCOR=��*� @Rundeck_DecimalFormat@������e�8���&����������@����*@�����*�@�Z$@��&��u����r������������@@�����@�@���������wO8Mobserved sst, like kOcean=0 except for a rewindable file, written as kocean=0���8���&����������@����*@�����*�w�l KOCEAN=0,�r�X���F������������@����*@�����*�w�locean_input='observed',�*�@�Z$@��&�����������������@�[�\���J������������SEold version of solar and co2 to keep compadibility with old namelists���\���J������������@����*@�����*�w�l S0X=��*� @Rundeck_DecimalFormat@�T�������Z���H����������@����*@�����*�w�lCO2=�*� @Rundeck_DecimalFormat@������d�@���.����������S(collect flux information for a qflux run�c� ������������a�r@@������)�:���(������������S"collect qflux data from x date ������|������������@����*@�����*�w�lUSET=�*�@� @������*�w�l.,TAUO=�*�@�  @Calendar_YearToTau�@�����@���������0����� �����@����*@�����*�w�l.,@�e��������������@�[�8���&������������S says not to collect qflux data ���6���$������������@����*@�����*�w�lUSET=0.,�������������������@���^���L������������SFEnd date for run. The end date is set to the first day of the new year0���b���P������������SKfor this caculation. This hack lets 1/1/1900-12/31/1900 = 1/1/1900-1/1/1901���X���F������������SAbecause the model years have to include the last day of the year.���6���$������������@����*@�����*�@�?����������v���d������������@����*@�����*�w�lTAUE=�*�@�  @Calendar_DateToTau�@�����@�������*�w�l.,@���6���$����������@����*@�����*`@�?��������R�L���:������������S4Sea level pressure can't be turned on after x hours"*���R���@������������S;unlike ocean data so it will go the whole length of the run��� ���������������@@��������t���b������������@����*@�����*�@�Z$@��&��*�w�l USESLP=-��*� @Rundeck_DecimalFormat@���������������������@�[�N���<������������@����*@�����*�@�Z$@��&��*�w�l USESLP=0.,*������������������@���D���2������������S-Check to collect oda data for deep ocean runs���d���R������������SLGary made the dubious choice to overload an unused variable called KCOPY for@���@���.������������S(the collection so this is how you set it���F���4������������@@�������@�����*@����������������6���$������������@����*@�����*�w�lKCOPY=3,�������������������@���6���$������������@����*@�����*�w�lKCOPY=2,�������������������@����������������������\���J������������SDOne hour test code for seeing if the model works with these settings*���>���,������������@@ FirstHour��x @ Traditional�����h���V������������@����*@�����*�@�Z$@��&��*�w�l ISTART=�*�@� @������*�w�l,���h���V����������SP[Model Variables]Rundeck:=[Model Variables]Rundeck+"TAUP="+String([Model Variablp�i�^���L������������SFKCHECKTAUX matches the month to the restart file, 0 disables the check0��� ���������������@@��������:���(������������@����*@�����*�w�l KCHECKTAUX=1,������������������@���:���(������������@����*@�����*�w�l KCHECKTAUX=0,������������������@���:���(������������S#place in random number seed if used���2��� ������������@@�l����*@���������������R���@������������@����*@�����*�w�lIRAND=��*�@� @�l�����*�w�l,����������������@�[����������������@���d���R������������SLdetermine if prt files are generated, they should only be generated for the @���F���4������������S/first hour, which does set the rest of the run.���J���8������������S2NDPRINT is an exception, -1 is true and 0 is false���F���4������������S/NDPRINT should always be on for the first hour.���8���&������������@@ FirstHour���@���������X���F������������@����*@�����*�w�l NDPRNT=-1,��*�@�Z$@��&��*�w�l @������������������@��� ���������������@@�����������������������@����*@�����*�@�Z$@��&��*�w�l6 NDPRNT=0,1,32,60,91,121,152,182,213,244,274,305,335,�*�@�Z$@��&��*�w�l @����������������@�[����r������������@����*@�����*�@�Z$@��&��*�w�l# NDPRNT=0,0,0,0,0,0,0,0,0,0,0,0,0,�*�@�Z$@��&��*�w�l @����������������@�[����������������@���t���b������������SQif prt files are produced then pick between full diagnostics and just diagj eg kdSiag(1).������n������������SQbecause this change was done after the 2.3 database was frozen it uses [Model VarSiables]Model 64 bit���4���"������������Sinstead of something logical.��� ���������������@@�������� ���������������@@��������N���<������������S6default in the model is everything on so write nothing0������������������@���f���T������������@����*@�����*�w�lKDIAG=0,9,9,9,9,9,9,9,9,*�*�@�Z$@��&��*�w�l @����������������@�[����������������@����������������������N���<������������S6don't write the second taue if it's not the first hour0���>���,������������@@ FirstHour��x @ Traditional��������v������������@����*@�����*�w�lTAUE=�*�@� @�?��������*� @Calendar_DateToTau�@�����@�������*�w�l.,@����������������@�[�����������������@�H���6����������S0always put in orbital values, no error checking ������p������������SQIf (([Model Variables]Eccentricity#0)|([Model Variables]OmegaT#0)|([Model VarSiables]Axial tilt#0))������������������@����*@�����*�@�Z$@��&��*�w�l OMEGT=��*� @Rundeck_DecimalFormat@�y�����*�w�lOBLIQ=�*� @Rundeck_DecimalFormat@�x�����*�w�lECCN=�*� @Rundeck_DecimalFormat@�w�������������V�������*�������������Sfinish off namelist�a�Z���H������������@����*@�����*�@�Z$@��&��*�w�l &END�*�@�Z$@��&����D���2����������S,add the forcings for trends into the rundeck��&��������������� @Rundeck_Forcings���*��������������� @Simulation_SaveRecord������������������������������������������DFCC4Dz�, �h���V�� ]�� ]���8Nthis blocks errors from showing up as dialogs, a stub function is in place so d��6���$������������8that a stop can be inserted Z����(�������������(jQ(�?�������(����������������������������������DFCC4Dy�9?�R���@�����������F9This does the show hide of all parts of a section in the �*��������������FInfoText window. � ���������������F input ��&�����������,GeF section # �\�P���>������������F7 show/hide/leave alone: 1=show, 2=hide, 3=leave alone �B�������������������� ������������Fvar ����(���������������vv v�vvsecvv�*���������������vv v�vvstatevv -�6���$������������v%vv�@�������vvsecNamevv��� ���������������vsecv v�v�B���0������������vsecNamevY�pB�v�@v� vvsecv�v�@Y�p_Y� �"���������������vstatev v�v]����������������v�� ���������������Fstate �y�����������������vv���>���,������������vvvstate�v@v�?�������v=%Hshow =���>���,������������v[v�v@vvsecName�v�@Y�pC1@vv�vv���B���0������������vv vItemList@vvsecv�v@v�����������vv]�$���������������F text ]�@���.������������v[v�v@vvsecName�v�@Y�pTextvvv�vv�6�>���,������������v[v�v@vvsecName�v�@Y�pC2@vv�vv���>���,������������v[v�v@vvsecName�v�@Y�pC3@vv�vv���>���,������������v[v�v@vvsecName�v�@Y�pP@vv�vv������������������vv���"���������������F picture ]�@���.������������v[v�v@vvsecName�v�@Y�pTextvvv�vv�:�>���,������������v[v�v@vvsecName�v�@Y�pC2@vv�vv���>���,������������v[v�v@vvsecName�v�@Y�pC3@vv�vv���>���,������������v[v�v@vvsecName�v�@Y�pP1@vv�vv������������������vv���B���0������������vv vItemList@vvsecv�v @v�?�������vv���>���,������������v[v�v@vvsecName�v�@Y�pP2@vv�vv���>���,������������v[v�v@vvsecName�v�@Y�pP3@vv�vv���>���,������������v[v�v@vvsecName�v�@Y�pP4@vv�vv���F���4������������v[v�v@vvsecName�v�@Y�p P1_InfoSub%vv�vv���B���0������������vv vItemList@vvsecv�v@v�@��������vv���>���,������������v[v�v@vvsecName�v�@Y�pP2@vv�vv���>���,������������v[v�v@vvsecName�v�@Y�pP3@vv�vv���>���,������������v[v�v@vvsecName�v�@Y�pP4@vv�vv���B���0������������v[v�v@vvsecName�v�@Y�pP1_Infovv�vvLi�B���0������������vv vItemList@vvsecv�v@v�@��������vvLi�>���,������������v[v�v@vvsecName�v�@Y�pP2@vv�vv���>���,������������v[v�v@vvsecName�v�@Y�pP3@vv�vv���>���,������������v[v�v@vvsecName�v�@Y�pP4@vv�vv���B���0������������v[v�v@vvsecName�v�@Y�pP1_Infovv�vv"�B���0������������v[v�v@vvsecName�v�@Y�pP2_Infovv�vvy^�B���0������������vv vItemList@vvsecv�v @v�@�������vv���>���,������������v[v�v@vvsecName�v�@Y�pP@vv�vv���B���0������������v[v�v@vvsecName�v�@Y�pP1_Infovv�vv��B���0������������v[v�v@vvsecName�v�@Y�pP2_Infovv�vv���B���0������������v[v�v@vvsecName�v�@Y�pP3_Infovv�vv������������������vvs����������������vvs�>���,������������vvvstate�v@v�@��������v=%Hhide =���<���*������������v[v�v@vvsecName�v�@Y�p@vv�vv������������������vvl������������������������������������������������������������DFCC4D+�`�-�8���&����������"0Do the wildcharacter expansion "��� �������.�d�d"0 input "��.������������d�d"0 type of expansion "���D���2����p� ��"0* ptr to array to char to place result in �"w�.����������� �wildType����.�������������- �wildChar����&�������������wildType� ����&�����������]�wildChar� ���������Sg0hiob�.�������v0vErr"0wild char expansion "��������������me_t���J���8��������me_lwildType����?�������J: starts with zJ�<���*����{pwildChar��?�������x��x���<���*��������me_swildChar��@��������x�@x���@���.��������wildType����@��������J:is J�<�<���*����n����wildChar��?�������x��x�<���*����,wildChar��@��������x��x�F���4����������wildType����@��������J: contains J���<���*����pf@LBwildChar��?�������x�@x2�<���*��������,CwildChar��@��������x�@x@�H���6����NI$wildType����@�������J: ends with �J���<���*��������me_lwildChar��?�������x�@x���<���*��������wildChar��@��������x��x��������������� ����������������w����������������DFCC4D7�,*�L���:��%&��$&��gS5Create a hierarchical list of variables from multiple��R���@�����������S;folders in the Plots folder. This code omits the run number���R���@������������S:from the names so the full names must be reassembled later������ �����������S input���J���8��������S2 folder name (will be expanded by PM_FindFolder)���D���2��������0001S- list ref for an existing hierarchical list14�>���,��������EMak^%��@�������� ���� folderNamef���.���������������^- ���� listRefPtrl����P���>������������^�DS_StoreMustDie��i��j��height��errCode����6���$����������$^%��@��������� diag_path��s�6���$����4��� ^%��@��������� shortname��r�J���8����4��L�e^���@��������� diag_foldersi���������������N�F���4����4���1^���@��������� diag_list����������������F���4����4���^���@�������� � file_list����������������0�������4���(^�srcLen��nameLen���$�������4��d�e^�sublist�� �&�������4��1�0^ folderNamef ���e�&�������4��s�r^ listRefPtrl ������������4��+���"�������4���S clear listF��0�������4�����^y� listRefPtrl������ol�(�������4���^ listRefPtrl��w��Z���H����4�����^� listRefPtrl����?�����������������������@��������-�8���&����4��� ^plots_hier_counter��@������������������4�����^� �������4�����S get fileske�B���0����4�����^ diag_path � PM_FindFolder� folderNamef���8���&����4�����^� diag_path�� diag_foldersi�y �l���Z����4�����^nameLen������������@��������Ap'run # + underscore + start on next char�����������4������B���0����4�����S*process folders, or create an "empty" list���:���(����4��d�o^ folderCount�� diag_foldersi���8���&����4�����^� folderCount�`�������������@���������4��d�o^�4���"����4�����Sget list of folders and loop@�<���*����4�����^�i���?��������� folderCount���P���>����4�����^� diag_path��� diag_foldersi��iO�� diag_list�l �J���8����4�����^DS_StoreMustDie��� diag_list�� .DS_Store����<���*����4�����^�DS_StoreMustDie�`���������������:���(����4�����^�� diag_list��DS_StoreMustDie����������4�����^�2��� ����4�����^srcLen��� diag_list���6���$����4�����Sfor the contents of each foldert�4���"����4�����^�srcLen�`�������������ie�`���N����4�����SHcreate sublist of variables in folder stripped down to just the var name����"�������4�����^sublist�wer�8���&����4�����^�j���?���������srcLen���H���6����4�����^ shortname�� � diag_list��jO��nameLen�un�J���8����4�����^x�sublist�� shortname� �plots_hier_counter���"�������4�����^#�Use_EVA�un�v���d����4�����^�sublist� �plots_hier_counter����$����$�������@ �������y@EVA icon����������4���^�S�2��� ����4�����^#� PM_Platform� $�������|���j����4�����^�sublist� �plots_hier_counter����$����$�������@ @�������y@plot shop icon����������4���^�S�x���f����4����^�sublist� �plots_hier_counter����$����$�������@ P�������y@ excel iconT����������4���^�S��������4�����^�R���@����4����� ^plots_hier_counter �plots_hier_counter����?����������������4�����^ R�`���N����4�����SIappend folder which is <run number>_YYYY-YYYY where I want just the years���L���:����4�����^ shortname�� � diag_foldersi��iO��nameLen�an�t���b������������^x� listRefPtrl��� shortname� �plots_hier_counter����@���������sublist����������~������������^� listRefPtrl�� �plots_hier_counter����@�����������$����$�������@ �������y@ folder icon���R���@���������� ^plots_hier_counter �plots_hier_counter����?��������$����������������^ e����������������^ R����������������^n�D���2������������ ^PostProcessing_TypeHierEmpty�� listRefPtrl�������������������^��������������������DFCC4DU!�X(�&����������7d view rundeck����������(���[�.�������L��[ �Rundeck_Validate@�����&��������� [Rundeck_Summary[�4���"�������� [Rundeck_Createy��������>���,����������� [RundeckViewer_Opens�������������������������[[������������DFCC4DA��6���$����������� � FinderToPathn \� eJournals  ��������������inte (��������������������������������?�����DFCC4D&�,�Z���H��%��$��gSBdo everything to load a record correctly for the simulation windowME���� �����������Sinput��� �����������S run ID%������������������� ������������� @�����*���������������@@ RunIDClickedu����(���������������@@ num_groupsn����$���������������@@counter����"���������������@@index����(���������������@ RunIDClickedu% @����*�����������@index%@�?���������������������(�����������dSnumber of groups��8���&��������///@ num_groupsn%@ @ Group_Namer��<���*��������@�@oldGroup_Statez�@ num_groupsn��<���*��������g@� @ Group_State�@oldGroup_Statez��������������� �����������S load data�4���"�����������@�@������@ RunIDClickedu����&�������������� @Form_BLOB_Loader�����������V��������6���$����V�����Sadjust interface to match blob���<���*����V�@���@@counter�@index�@ num_groupsn���X���F����V�����@ @ Group_State�@counter���@oldGroup_Statez�@counter����:���(����V����� @Twist_Down_Update@counter�@�����������V��~�@����������V����@�����������V�������4���"����V�����Supdate menus in the interface���V���D����V����� @Simulation_Date_Convert @Info_v_EndYeare�@����������X���F����V����� @Simulation_Date_Convert @Info_v_StartYearC�@����������2��� ����V����� @Simulation_IStartMenu@�����2��� ������������ @Simulation_OceanMenu8@�����.��������������� @Simulation_TrendMenuInit���,��������������� @Simulation_InputMenuSet���2��� ������������ @Simulation_LockUnlock@�����:���(������������ @Simulation_PowerToolsLoadSet@��������������������������������������DFCC4D�=�hI2x�X���F��'&��&&��gS@Cache Manager builds on Path Manager to have an in database copy�LP�Z���H�����������SBof the files and folders most often needed by EdGCM. Cache Manager���\���J��������SDprovides fast access to the file system without the cost of actuallynD�Z���H����V�����SClooking. Periodic rescans of the actual folders insures accuracy of���"�������r�����S the cache.8������������������S�pl�4���"����R�����Sfolder types for EdGCM Folder��&�����������dS 1=input folder�,������������S 2=input ocean folder���$��������������S 3=output acc���.�����������aaaaS 4=output rsf, disabled�.���������������S 5=output prt, disabled���0�����������0001S 6=output ocean, disabled09������������EMakS�ia�2��� ������������SRecord contents by constant���.�����������aaaaSif EdGCM Folder = 1..2�F���4������������S. Folder Name = folder name in the input folder���P���>��������S8 File Name = name of the file minus the four letter type��r���`��������SQ File Type = last four characters of the filename (or the Mac type if all else faSils)e���.������������Sif EdGCM Folder = 3..6��0�������� dS Folder Name = run number���P���>���������S9 File name = filename for the individual file (full name)8�`���N�����@���SH File Type = folder that contains the files: acc, rsf, prt, ocean, & etc���8���&���������S Setup the data for Cache Manager�������������������$��������� S setup tables������ ��������������"������������@�@��� ������"������������@�@��� ������"������������@�@��� ����������������L���$������������S setup arrays� �:���(���������@ w�l CM_Folders��#@ CM_FoldersC����>���,���������@ w�l CM_ImageTypes�#@ CM_ImageTypes��������������������,������������Ssetup private globals���.��������� @1#@CM_Priv_ScanInput����0������������@1#@CM_Priv_ScanOutputn����0������������@1#@CM_Priv_ScanImagesn����,������������#@CM_Priv_ScanInputn@����.������������#@CM_Priv_ScanOutputnn@����.������������#@CM_Priv_ScanImagesnn@���DFCC4D5�BIq�������'&��&&��g��L���:��������7���%@�@��������@path��@name�� @ ImportNamem����(��������������@ @ Foldernameo���(��������������@ @ ImportPictm����(���������������@ @ ImportTextm����8���&�����������@%@�@�������� @ ImportSizem����,��������������P@@len�@resultS�H�:���(������������@� @ ImageFoldersa�@���������������&��������������@1@fromFile$����"�����������@@space�@�P���>�����L@@heightl�@width�@hOffset�@vOffset�@modes�q�&�����������@@tempPict$�����������������4���"���������Scheck for sufficent filename���@���.�����@@� @ ImportNamem��c@�@����������F���4�����S.create the folder if needed (if Foldername#"")��@���.�����@@� @ Foldernameo��c@�@����������b���P�����@ @ PM_MakePath @ PM_FindFolderw�lImagesP�� @ Foldernameo�@����N���<����� @ImageFoldersMenu� @ImageFoldersMenu[c @ Foldernameo������������@�������������L���:�����S5validate incoming file to make sure that it is unique�h���V���������@nameec @ ImportNamem�c� @ImageFoldersMenu8� @ImageFoldersMenu8[wO8 build key���8���&�����@resultoc@@�� ���@name���L���:�����@@result���c`@�?���������wO8 unique name�D���2����� @ ImportNamemc @PM_Name @ ImportNamem�@���p���^����� @ ImportNamemc@�  @ ImportNamem�@�?��������@�@���������c�w�l.jpg_wO8fixed� ��������S save file������t��������@ imagePathc @ PM_MakePath @ PM_FindFolderw�lImages�� @ImageFoldersMenu8� @ImageFoldersMenu8[�@�����T���B���������@ imagePathc @ PM_MakePath@ imagePath� @ ImportNamem�@�����`���N��������SH$imagePath:=thumbFolder+ImageFoldersMenu{ImageFoldersMenu}+""+ImportName��8���&���������@@@ imagePath��wl$@���������������������>���,���������S'check for image size and offer to scale���`���N���������@ @ ImportPictm�@width�@heightP�@hOffset�@vOffset�@modes����Z���H���������@@heightt�c@�@���������x @width�c@�@������������N���<��������� @Alert_ParamText @ ImportNamem�w�l�c�w�l�c�w�l�c����\���J���������@moderc @ Alert_Alert@�@��������@�@��������@�?���������������������������0������������Splace up progress dialog����J���8���������@proc�c @ Progress_Openw�lCompressing image...c����������������������� �����aaaaSscale�2��� ���������@@moder�@�?����������.��������@@height��c@width��H���6�����@widthc@width�@�@�������� @height���,���������@height�c@�@�������������������@oP�J���8���������@height�c@height��@�@�������� @width����*������������@widthc@�@����������������������@���V���D���������@ @ ImportPictm�@tempPict$�@width�@heightc�$@������.������������ @ ImportPictmc@tempPict$���.������������ @IsOriginalFileJpegcc@�������������������@������������������@���0���������������Splace up progress dialog����J���8������������@procic @ Progress_Openw�lCompressing image...c���������������.@..��������������������T���B������������S<if the original is a jpeg then just copy, otherwise compress����.���������������@ @IsOriginalFileJpegc����$���������������S just copy it���6���$������������@ @ PathToImage�@ imagePath�����������������&@�.�:���(������������S"do the work compression and saving���B���0������������@@ imagePath� @ ImportPictm�w�lJPEG_�������������������@���Z���H������������@@ imagePath�w�lprvw�wO8"make preview the owner of the file@���0���������������@ @OKa�@�?�����������,���������������Screate the text filecmp�x���f������������@ imagePathc@� @ imagePath�@�?��������@�@ imagePath��c`@�@����������c�w�ltxt���2��� ������������@docRef�c@ @ imagePath� P�4���"�����������@�g@docRefa� @ ImportTextm�ma��������������������J���8������������S3create record in the database to match the new file���8���&������������ @ CM_Rescan@��@��@�������"���������������@�/@��� ������,���������������@�1@��� ���@�� ������D���2������������ @Info_iPhoto_LoadThumb@�@���������wO80?���"���������������@I@proc��������������������@ ������������������@���"���������������@I@proc�����N���<������������ @Alert_ParamText @ ImportNamem�w�l�c�w�l�c�w�l�c����B���0������������ @ Alert_Alert@�@���������@�@��������������������������@ ������������������@������������������@���N���<������������ @Alert_ParamText @ ImportNamem�w�l�c�w�l�c�w�l�c����B���0������������ @ Alert_Alert@�@���������@�@��������������������������@�&������������������@���*���������������@�� found, can't add����N���<������������ @Alert_ParamText @ ImportNamem�w�l�c�w�l�c�w�l�c����R���@������������ @ Alert_Alert@�?��������@�@��������@�@���������������������������@�&������������������@���4���"������������@�� invalid file or folder name���R���@������������ @ Alert_Alert@�?��������@�@��������@�@���������������������������@�&������������������@��������������������������������������DFCC4D_��N���<���������d�db��5adjust interface for checkbox that collections trendsb���P���>���������d�db��7you need the max mixed layer depth for trend collectionb��� ������������d�db��to workbat�������������d�db���"������������d�dbbb����bb� �6���$���������d�db[b�b[bb�[Ocen_R_@ bb�bb���������������d�dbb���4���"���������d�dbbb�����bb����������bb�6���$���������d�db[b�b[bb�[Ocen_R_@ bb�bb���������������d�dbb?�������������d�dbbun��DFCC4D �,�L���:��&\��%\��gS4this code lets you go to the previous figure caption~��L���:�������S4I have to build an array of avalible figure captions~���L���:����r��S4so that I can find the right one. Then move position~������ �����..S input ���&�������\�scalS cur position:C�:���(��������scalS# move to previous or next as -/0/+�B���0�������� @��@move,�@pos� @��@curPosD����2��� ����J�TAT @�@figso�@�@�������� �"�������8�TAT @curPos�~ @�D � �������.�@moveo~ @�ea���������Ɋ��������>���,��������S'build array with out of bounds set to 0���:���(����T�TAT @InfoText_CreateFigArray�@figsT�.6���������~�TAT @�$�����������TAT S move in arraye��6���$��������@pos~@�@figsT� @figNum���0������������@@pos�~@����������������������V�����@���<���*���������@@move��wl@������������wO8prev~���2��� ����H�����@pos~@pos�~@�?���������:���(��������aaaa@@move��@������������wO8cur��*���������� Sdon't change �e�<���*���������$�m@@move��~@������������wO8next~�n�2��� ������� @pos~@pos�~�@�?��������t�������������$�m@�v���������aaaa@�(���������������@pos~@���������������������X�aaaa@�������������������B���0����h�����S+check for valid pos & change figure caption���<���*�����������@@figs��@pos�~@������������sa�F���4�����aaaa @ ItemCaption� @figNump~ @InfoCaption_Figure��B���0������������S+ItemPictLabel{figNum}->:=InfoCaption_Figure��0�������>�aaaa @figNump~@figsu�@pos�D���2������������ @InfoCaption_Pict~ @ItemPictI� @figNumc����F���4���������� @InfoCaption_Figure~~ @ ItemCaption� @figNump�t�F���4���������o�n @InfoCaption_FName~w�lFigure �~�@� @pos�� ���������0001@02DFCC4Dsu�Sz�T���B��%k��$k��gS=Create a new set to save information about the postprocessing������ ��������S input���2��� ��������S <implicitly set setName>���� �����������S output� ��������������S sucess?me� ���������������Ssettings����$�����������0001^�newRec�06�(�����������EMak^1� allowdNamea�4D�*���������������^1 �����sucess����"�����������t���^�count�?�8���&����������^� � tablesInfoa���������������(�<���*����������(^� �timeSeriesInfoA���������������t�8���&��������� �s^� � mapsMonthsa���@���������I�6���$���������f�o^� �mapsInfom����������������8���&������������^� � slicesInfol�����������������6���$���������� ^� � zonesInfo���������������e���������������(��F���4��������� �sS/check that the name is unique (and not default)��X���F���������f�o^ �setName� ����f $ �setName� � All Variables����&������������L�L^ allowdNamea���������������g^ a�"������������c�e^�/�������ea�:���(���������r�u^������������� �setName��i�:���(���������_�V^��L��������`��������������-�&���������� ^ allowdNamea��� �����������(^��&��������� �s^ allowdNamea���s�������������f�o^��������������L�L^�R�����������������&������������c�e^� allowdNamea��C�"������������r�u^�5�������� ��������������_�V�a�6���$��������� �Screate record with default info��"������������e�r^�D���������(������������ �^�����Default�E�2��� ���������e�r^����#�SetsCurrentVersion<�L�:���(������������^���� �setNameAptemp temp temp���"���������������^�5����������.���������������^newRec�����������������������������^�:���(������������S"collect postprocessor info as sets����������������� ^Sets_CollectInfo � tablesInfoa� �timeSeriesInfoA� � mapsMonthsa� �mapsInfom� � slicesInfol� � zonesInfo����������������4th Di�&����������� ADOSadd sets to set4D�.���������������^���������newRec����H���6������������ ^Store_Variable_Blob������ � tablesInfoa����L���:������������ ^Store_Variable_Blob������ �timeSeriesInfoA����X���F������������ ^Store_Variable_Blob������ � mapsMonthsa� �mapsInfom����H���6������������ ^Store_Variable_Blob������ � slicesInfol����F���4������������ ^Store_Variable_Blob�� ���� � zonesInfo�����������������������*���������������Screate the summary������������������ ^Sets_SummarizeA � tablesInfoa� �timeSeriesInfoA� � mapsMonthsa� �mapsInfom� � slicesInfol� � zonesInfo���������������������,���������������Sadd to array & selecty�B���0������������^count�#�SetArray�����?����������0���������������^�#�SetArray��count���2��� ������������^�#� SetNumArray��count�Na�6���$������������#^SetArray��count+ �setNamec�8���&������������#^ SetNumArray��count+�newRec`�<���*������������^�#�SetArray�#� SetNumArray��`����&��������������� ^SetArray_AllOnTop#��@���.������������#^SetArray��#�SetArray� �setName������������������������ ������������Scleanup���"���������������^�5�������������������������^A�J���8������������ ^Alert_ParamText �setName�������������B���0������������ ^ Alert_Alert��?����������@��������������������������^S�*���������������Sfix database lists���"���������������^�/���������2��� ������������^�1��������������`����.���������������^���������newRec����(���������������^�Y � tablesInfoa�oA�,���������������^�Y �timeSeriesInfoA����(���������������^�Y � mapsMonthsa����&���������������^�Y �mapsInfom�si�(���������������^�Y � slicesInfol����&��������������^�Y � zonesInfo�������������������DFCC4DYF�UF�z���h��s��s����7dQFor a given month get the right filename and path based on if it was picked in th�7d e interface�Na� ����������������7d input��ma�,���������������7d month to process^�� ���������������7d output�ma�>���,���������d�d�7d% filename (blank if month is unused)����*���������������( (� (month  ��<���*�����������(% (�@������� (�� (prtname  ���&���������������( (listRef  . �8���&������������(� (averages� (�@�������  ���"���������������(month (�(����������������(���.����������������7dget info from dialog ����<���*������������(averages� (�?�������  (����(���<���*������������(averages� (�@��������  (����(��<���*������������(averages� (�@��������  (� ���(ab�<���*������������(averages� (�@�������  (� ���(Po�<���*������������(averages� (�@�������  (� ���( 0�<���*������������(averages� (�@�������  (� ���(Z�<���*������������(averages� (�@�������  (� ���(Z�<���*������������(averages� (�@�������  (����(i�<���*������������(averages� (�@�������  (����(���<���*������������(averages� (�@�������  (����(rn�<���*������������(averages� (�@�������  (����(���<���*������������(averages� (�@�������  (����(t �<���*������������(averages� (�@�������  (����(�<���*������������(averages� (�@�������  (����(��<���*������������(averages� (�@�������  (����( f�<���*������������(averages� (�@�������  (����(ap�<���*������������(averages� (�@�������  (����(������������������(+�B���0������������( (averages� (month  � create name�th�����������������!K�"����������������7dget listl� s�4���"������������(listRef (  �MonthsP  (���������������� �@���.�������������7d&create the filename of the source file�t �<���*�������������7d"JAN1906-1910.avgControl2_02sC9_Prt����|���j������������(prtname (GetListItemStr� (listRef (month � �@(�  (���� � �@ �-� �@(�  (����  ���D���2������������(prtname (prtname� �@ �.avg � �@(����(�����������������(op�$����������������7d clear list�xt�&���������������(y (listRef  lt���������������� I�$��������������� (�� (prtname(t �8���&������������(\~empty return for empty monthn\� ��������������� (�� ���� �����������������(($����������������������������������������������������DFCC4Dm�,�P���>��%��$��gS9code to open/close sections in the toolbar, and show/hideXT�R���@�����������S:sections as well. The first parmeter picks the section and���@���.�����������S(the second sets the mode, the modes are:���$���������������S 0, open/close������ ������������S1, show������ ��������zzzS2, hidez�.������������%@�@�������� @���2��� ��������@%@�@��������@name������� ��������????@ @��==�"�����������@@mode���"�����������@@item������ �����������@@i����"�����������@@left��� �����������@@top��"���������������@@right���$�����������@@bottom��JJ�$�����������@@height����� �����������@namehn @�� �����������@modehn @���������������L���:�����������@itemhn@� @ ToolbarName�@nameb�@�?�����������:���(��������@height�n @ ToolbarHeight�@itemb]��������������)))%������������@@modeb�@�������������� X@mode��@�?����������^ @ToolbarVisible��@itemb]�@����� X@modeb�@�@�����������^ @ToolbarVisible��@itemb]�@����)��������������������2��� ������������@@modeb�@���������������*���������������Sopen/close section���<���*������������@ @ ToolbarStateo�@itemb]�@�����4���"������������ @ ToolbarStateo�@itemb]n@����Z���H������������@[��w�lz�n� @ ToolbarName�@itemb]�n�w�l_Closed�@�����J���8������������@[�� @ ToolbarName�@itemb]�n�w�l@�@��������������������@���4���"������������ @ ToolbarStateo�@itemb]n@����Z���H��������@[��w�lz�n� @ ToolbarName�@itemb]�n�w�l_Closed�@�� �J���8��������@[�� @ ToolbarName�@itemb]�n�w�l@�@��������������@������������@�*���������������Sshow/hide section ���:���(������������@heightrn@height��n�@�@����������2��� ������������@@mode��@�?�����������6���$������������ @ToolbarVisiblez�@itemb]n@����T���B������������@[��w�lz�n� @ ToolbarName�@itemb]�n�w�l@�@�����<���*������������@ @ ToolbarStateo�@itemb]�@�����Z���H������������@[��w�lz�n� @ ToolbarName�@itemb]�n�w�l_Closed�@�����J���8������������@[�� @ ToolbarName�@itemb]�n�w�l@�@������������������@��,�����������@heightrn@�@�����������������������@������������������@���6���$������������ @ToolbarVisiblez�@itemb]n@����J���8��������@[�� @ ToolbarName�@itemb]�n�w�l@�@���T���B�������� @[��w�lz�n� @ ToolbarName�@itemb]�n�w�l@�@���<���*��������@ @ ToolbarStateo�@itemb]�@���,������������@heightrn@�@�������������������@ ������������@������������@��������������0���������������Smove rest of the sections���H���6������������@@i�@item��n�@�?�������� @ ToolbarLeno�������������������@ @ ToolbarStateo�@itemb]�@����^ @ToolbarVisible��@itemb]�@����x @modeb�@�?������������|���j������������@�� @ ToolbarName�@i]�n�w�l@�@������������@height��@������������@������������������t������������@��w�lz�n� @ ToolbarName�@i]�n�w�l@�@������������@height��@������������@������������������������������@������n������������@�� @ ToolbarName�@i]�n�w�l@�@�������������n`@height��@������������@������������������x������������@��w�lz�n� @ ToolbarName�@i]�n�w�l@�@�������������n`@height��@������������@������������������������������@������������������@����������������������r���`������������@@�?��������@�@���������wO84don't resize the window anymore for closing sectionsn���P���>������������S8change window size last so resize of run list is correct����@���.������������@@left��@top�@right�@bottom�����b���P������������@ @ ToolbarStateo�@itemb]�@���x @modeb�@�?������������R���@������������@@height��n�@bottom���n@��n`@�@������������L���:������������@@left��@top�@right�@��n`@�@��������������������������@���N���<������������@@left��@top�@right�@bottom��n�@height��������������������@������������������@���<���*������������@ @ ToolbarStateo�@itemb]�@�����P���>������������@@bottomr�n`@top�n`@height���n@�@�����������N���<������������@@left��@top�@right�@bottom��n`@height��������������������@���N���<������������@@lefth�@top�@right�@top�n�@�@��������������������������@������������������@������������������@������������������@����������������������,���������������Sreadjust the run list���*��������������� @Toolbar_ResizeRunList������ ������������@@;��������������������������������������@��������������������������������������������DFCC4Dz��6���$������������8duplicate an existing record ����<���*����������� �InfoText_SaveRecord��?����������$�����������������������,�4���"��������������������@\� copy\�H���6��������������������@�� ��d�@��@O�����������n��������{{ �Store_Variable_Blob����� �CurrentItemVers �ItemListI �ItemNameI � ItemCaption�|������������ww �Store_Variable_Blob����� �CurrentLinksVersl � LinksList � LinksListType �LinksListFieldr � LinksListWord���$�����������������5������b�.��������������� �InfoText_JournalListAdd�����������������������������DFCC4Dht�k�r�B���0����������"0)Set the status flag for a run to archive "���J���8����s@��� Alert_ParamTextJ����J|��JJ|��JJ|��JJJ, �\���J������������J Alert_AlertJ�@��������J�@�������J�J@�?�������JJ�,����������������m���JJ�@��������J������������^N>,����������������������������������������������������������DFCC4Dc�{ �8���&�� �� �� �7d!incriment the section and load itZR�,�����������]temp � SectionNumber���2��� �����������]�temp�+��@�����������X���F��������]w?go forward until a text section is found or the end of the listJ�6���$����z���]temp�temp�� ��?��������I����r���������m�/ ] �ItemListI�temp���������������� (�temp�������� (�temp����@����������/�,����������������7dadvance if sucessful���,���������������]�temp�( ���������B���0����������� ]InfoText_FullSaveSection� � SectionNumber�=#�,�����������EMak ] SectionNumber�temp���B���0������������ ]InfoText_FullLoadSection� � SectionNumber���������������JRF1]R����������������]��������������������������������������������������������������DFCC4Ds�mA���� ��'&��&&��gSrun rsf��"��������������<@diag����6���$������������@%@�@��������@ diag_path����6���$�����������@%@�@��������@out_path$��(��������������@2@ docref_full��� ������������l�s@@pos��)�"�������ܘ�0001@@iteme�00���������ܘ�EMaker���� ����ܘ�����Ssetup���,�������ܘ�@ diag_pathc @ InputPath�2��� ����ܘ�����@#@ PM_Platform�$@����<���*����ܘ�111@out_path$cw�l../../Input/Ocean rsf/��������ܘ�@�>���,��������@out_path$c @ PM_FindFolderw�lInput��T���B��������RRR@out_path$c @ PM_MakePath@out_path$�w�l Ocean rsf�@�������������������@kk��������������&��������������Sset rsf.I file�������������@diagpc @ InputPath�c�w�lrsf�c� @PathCharP�c�w�lNOV�c�@� @�� ����c�w�l.rsf_�c�@�� ���c�@�Z$@��&��\���J��������)�@diag&c@diag&�c� @ OutputPathu�c�w�l tg_arrays�c�@�Z$@��&��z���h��������SQ3+4+20+8=35 fix hack length to 16 for run number to keep 31 char filenames until S code is fixed������������� @diag&c@diag&�c�@out_path$�c�w�lNOV�c�@� @�� ����c�w�l.rsf_�c�@�� ���c�w�lMLD.rsf_��c�@�Z$@��&�������������������8���&����ۼ�����S write out the .I file and launch���H���6����ۼ���� @OHT_SaveAndLaunch@diagS�w�lrsf.I�w�lrsf��������������������*���������������Supdate input files���2��� ������������ @ CM_Rescan@��@��@����������������������������������������������DFCC4D~���,�����'��&��b$launch SpecialRegions���T���B�����b$<Now is a two step process where you create the .I file first����`���N���������� b$IUse folder in Applications for now not generel /Applications folder. This�a�b���P��������b$Kfeature was removed from the release version of EdGCM 3.0, but could easily���R���@���������b$;be reenabled as it was finished before the feature was cut.���������������b$�in���� �����������b$ input������ ����h����b$ none���� �����TAT b$ outputMM���� ����n�TAT b$ noneMM�T���B����d�)))%specialRegionsPath @ PM_FindFolder w�SpecialRegionsApp�pe����������TAT �&��������TAT b$create .I file$ �l���Z����H�TAT @specialRegionsI @ PM_MakePath @specialRegionsPath��w�Special Regions.I�@��r �>���,�����������@ @ @specialRegionsI��$@����<���*���������� @ docref_full@  @specialRegionsI���z���h��������� �@texti @ PM_MakePath @ PM_FindFolder w� Input Special��w�User�@����@�Z $@��&��c�$������������� b$ save the file�h�0������������l�"@ @OK�8@�?���������r�2��� ����x�0001@ #@ PM_Platform�8$@���00�2��� ��������EMak@�g @ docref_full�@texte�Ma������������0001@02�:���(��������EMak@�g @ docref_full�@ @texte��������������TAT @ �(����������� ?? @  @ docref_full�af�8���&��������T�@ @specialRegionsI�w�R*ch5�T����������@���������@��������������n���\��������@specialRegionsPath @ PM_MakePath @specialRegionsPath��w�Special Regions�@���8���&����������� @ PM_Launch @specialRegionsPath������V���D������������b$? The close box associated with this window pauses the process. �Z���H��������111b$B The window stays ready for use throughout the use of the program.��������������`���N�����������#@Control_ProcessID@������������� $ Reset process ID tracking variable.����������������*�����������b$ End of procedure.H����SAocean folDFCC4D�,�P���>��'��&��b$9setup for eJournal list which requires an admin password.XT����������cb$������� ����*�scalb$ inputD:���� �����scalb$ noneD:���� �����scalb$ outputD:���� �������b$ noneis����������scal�f���T���������b$Ocached values for sort, used to restore sort after permissions repair or delete���<���*����\�����% @�@�������� @eList_SortNamez����0�������"�scal@- @eList_SortFieldPtr����������Ɯ�scal�4���"�������b$you must be an admin to enterhe�,��������scal@ @UAM_Authenticate<���"��������scalb$ setup othertp�\���J����������@�C w�eList�wX2 This menu bar gives the user access to the demos.Tbr�4���"��������@�6 @������w�eList������������������ @myWind�@� #@ Toolbar_Width�@�@��������#@ Toolbar_Width��@�@�������@��P@�@��������$@�"� �w�eJournal Library�w� Generic_Close����� ����b�����@F @B��$��������|@ @myWind��������������������� ����\�����@� ���"�������D�����@� @�������"������������@�/ @����������������TAT �:���(����~�TAT @ @�L @�������@������������.3�2��� ����H�TAT @�1 @������@������� �8���&�����TAT @� @������$@�2��@����11���������TAT @ �B���0�������� @ Alert_Alert @�?��������@�@�������������������������@b$�V���D�����������b$? The close box associated with this window pauses the process. �Z���H��������TAT b$B The window stays ready for use throughout the use of the program.00������������ ?? @ ��������������� ��^���L��������� �W#@eList_ProcessID@������������� $ Reset process ID tracking variable.�D���������l�000100�*�����������EMakb$ End of procedure.H I�������� @ OceanSpacecw�lNA0���(��������������� @ DiagSpacew�lNA0������������������@����������������������*���������������Sclose progress barG���(���������������@I@ progressBar�����������������������������������������������������DFCC4D�,*�`���N��'A��&A��gSHEvaluate the view for tables, maps and verticle where hierarchical listsfn�b���P����������SJare used as flat lists. This code is called for the view button and double���`���N�����������SHclick. I need to complete the names of the files and launch according to���R���@������������S;their types. This version supports Panoply and IE on the PC������ �����������S input �(��������������S ptr to the list��2��� ������������S postprocessor folder name���^���L�����������SF position of the char at which to insert the run number into the namep���*�������l���S string to insert��.�������l���$- @��@ listRefPtrl��_�.�������l��u�t@%@�@�������� @����8���&����l���;@%@�@��������@ folderNamef��t�*�������l�� �@ @��@charPos���.�������l�111@%@�@�������� @�����4���"����l��e�f@%@�@��������@addName��N�0�������l��+�@@selItem�@selRefm���&�������l��s�t@1@selSubEx$��_�6���$����l�� �@%@�@��������@filename$��o�2��� ����l�����@%@�@��������@path�����&�������l�����@ listRefPtrl @����&�������l�O� @ folderNamef @���"�������l�����@charPos @����"�������l�����@addName @������������l��������$�������l�����S get list item���6���$����l����A@selItem@{@ listRefPtrl���P���>����l�����@z@ listRefPtrl��@selItem�@selRefm�@filename$����������l�������4���"����l�����@@filename$�w�l<empty>��� �������l�����S make name���������l����@filename$@� @filename$�@�?��������@charPos�@�?����������@addName��@� @filename$�@charPos���� �������l�����S make path���>���,����l�����@pathP @ PM_FindFolder@ folderNamef����J���8����l�����@pathe @ PM_MakePath@patha�@filename$�@�������������l��������F���4����l�����S.launch is conditional on file type and plaform���2��� ����l�����@strLenm@�@filename$����b���P����l�����@filename$@� @filename$�@strLenm�@�@���������@�@�������������������l�����@���B���0����l�����@@filename$�w�lhtm�wO8 open web page���.�������l� @ PM_WebLaunch_@pathe�DD�0�������l�����@@filename$�w�lxls����2��� ��������@#@ PM_Platform�$@����"����������� @#@Use_EVA�)��<���*�������� )) @PostProcessing_TypeViewEVA�@pathP� ���������������@P�B���0������������@errCode@.�@path�@������������������������������@������������������@���"���������������@#@Use_EVA����<���*������������ @PostProcessing_TypeViewEVA�@pathP�������������������@���F���4���������@errCode@.�)@path)�wO8does this work?�������������0@�����������������@���r���`������������@@filename$�w�l.nc�wO8<open NetCDF files, the PC version passes the path to the jar@���2��� ������������@#@ PM_Platform�$@������"���������������@#@Use_EVA����<���*������������ @PostProcessing_TypeViewEVA�@pathP�������������������@���B���0������������@errCode@.�@path�@������������������������������@������������������@���"���������������@#@Use_EVA�@�<���*������������ @PostProcessing_TypeViewEVA�@pathP�����������������5@��D���2������������@pc_path @ PM_FindFolderw�l Applications����R���@������������@pc_path @ PM_MakePath@pc_path�w�l PanoplyWin��@�����R���@������������@pc_path @ PM_MakePath@pc_path�w�l Panoply.exe�@�����L���:������������@position$@�w�l\Output\���@�����@path�����H���6������������@path�w�l..\..��@� @path��@position$����N���<������������@errCode@.�)@pc_path�@�?��������@path��������������������@������������������@���R���@������������@�� 9launch untyped files, this probably only works on the Mac���B���0������������@errCode@.�@path�@������������������������������@������������������@��������������������������������������DFCC4DM�V�H���6���������d�d/set the input menu to match the current rundecke �D���2���������d�d+if there is no match then set the menu to 0v�������������d�d��$������������d�ditem� �������������d�d��@���.���������d�ditem�� inputFolders�������8���&���������d�ditem��i�ii?����������4���"���������d�d inputFoldersi�����������������������d�d���.������������d�d inputFoldersitemt���������������d�d���������������d�d�*������������d�dsetup other menus�4���"���������d�d Simulation_InputMenuSetOthers��DFCC4D8�C �b���P��'��&��`DJCreate makeNetCDFij.I file to convert slices into NetCDF form for Panoply.um�z���h����������`DQThis code builds on Jean's new PD. Also supports additional metadata for spotligh`D t and longeri����� �����������`Dmonths.����������������8`D�i����� ������������`D#file ���.��������������`D#read by: makeNetCDFij������������������`D����0�����������`D#Example Order of inputs�D��D���2����>��� `D,B8x10_3pdC9 #run ID� �T���B����>��.�.`D<JAN1902-1904.avgB8x10_3pdC9_LonByLat #name of first acc file��9�H���6����>��u�r`D0/u/cmrun/B8x10_3pdC9/ACC/ #input path��g�H���6����������`D1/u/cmrun/B8x10_3pdC9/ACC/ #output path�d�^���L����������$`DGtftt #monthlies;quarters;seasons;annual��|���j����������`DQtttttttTTttttttttttttttttttttttttttttttttttttttttttttttTTTTTTTTTttttttttttttttttt`DTTTTttttttttttt�C�������������.�.`D��.�|���j���������h� `DQ.........1.........2.........3.........4.........5.........6.........7.........8.`D........9......�;�F���4���������m�b`D/#above is the variables to process from 1 to 96��"������������=� @diag���6���$����������@% @�@��������@ diag_path��a�$�������������@ @counter�������������.�.�6�*���������u�r`Dcreate the .I fileH�i�8���&�������@diagt@������@�Z $@��&��f�p���^�������$@diag&@diag&��w�JAN��@�  @�������w�-��@�  @�������w�.avg��V���D�������@diag�@diag���@������w� _LonByLat��@�Z $@��&��a�B���0���������@ #@ PM_Platform�$@���wX Unix pathsT���x���f������h� @diag@diag�� @PostProcessing_SubFolderPath w�average�@���X���@�Z $@��&��e�`���N������m�b@diag&@diag&�� @ PM_FindFolder w�maps��X���@�Z $@��&��a�"���������=�@�� PC paths~��r���`�������@diag&@diag&�� @PostProcessing_SubFolderPath w�average�@����@�Z $@��&��e�Z���H�������@diag&@diag&�� @ PM_FindFolder w�maps���@�Z $@��&���������������@������������������8���&���������`D!monthlies;quarters;seasons;annual��� ������������@ @��������.������������@diag�@diag���w�t���������������@���.������������@diag�@diag���w�f���������������@��� ������������@ @��������.������������@diag�@diag���w�t���������������@���.������������@diag�@diag���w�f���������������@��� ��������@ @������.��������@diag�@diag���w�t))������������@�.�������������@diag�@diag���w�f�����������������@��� ���������������@ @��������.���������������@diag�@diag���w�t������������������@���.���������������@diag�@diag���w�f������������������@���8���&������������@diag�@diag���@�Z $@��&�����������������������T���B������������`D=set the var, these should match those for the last processing�8���&����������&@K @������w�oldAIJselection�� �8���&������������@ @������@�����@��������"���������������@�2 @���������,���������������@counter@��������������@���.������������@ @item��@�?��������@�@�����������"���������������`D add value ��� ��������������@ @�������.��������������@diag�@diag���w�t���:���(��������aaaa@counter@counter��@�?������������������������@���.���������������@diag�@diag���w�f������������������@���&���������������`Dadvance record���"���������������@�3 @������������������������@���8���&������������@diag�@diag���@�Z $@��&�����������������������0���������������`Drestore the old selection���.���������������@L w�oldAIJselection�����������������������,���������������`Dno geometry switch!!!����������������������,���������������`Dwrite out the .I file���H���6������������@ diag_path @ PM_FindFolder w�DiagnosticsApps����N���<������������@ docref_full@  @ diag_path��w�makeNetCDFij.I����2��� ������������@ #@ PM_Platform�$@������|���j������������@�g @ docref_full�@� @� @diage�@�Z $@��&��@�Z @�@����������w�:�w�/��������������������@���:���(������������@�g @ docref_full�@ @diage��������������������@���(���������������@  @ docref_full����J���8������������@ @ diag_path��w�makeNetCDFij.I�w�R*ch�����������������������.���������������`Dwrite out metadata file���X���F������������ @makeNetCDF_mdiz w�Maps�w�makeNetCDFij.I_mdi�@counter�����������������������*���������������`Drun the application���D���2������������ @ PM_Launch @ diag_path��w� makeNetCDFij�����������������������(���������������`Dstart timer here!����������������������������������������������������������DFCC4DcIDmv�^���L�������7dEadd a trend to the rundeck summary, since every line is the same just����Z���H������������7d@use pointers to the fields in the database and place in the text��� ���������������7d input���*���������������7d name for trend��P�,������������t�r�7d ptr to trend type�^�.������������C�a�7d ptr to trend value����*��������������7d units for trend�ma�.������������$�t�7d ptr to trend start����,������������7d ptr to trend end0���� �����������????�7d output�ec�2��� ������o� �7d text to add to rundeck���J���8�������S[%��@�������� ��� ����namex��units�� P�f���T������$�s[- ��� ��� ��� ����typePtr��valuePtr$��startPtr$��endPtr���c�&���������(�[�listRef���*���������h�a[ �����trend��er�"��������[namex ��� (�$��������[typePtr ������&��������[valuePtr$ ���us�"��������[units �����&�����������[startPtr$ ���ti�$��������[endPtr� ���op��������������\���� ����������7dsetup����B���0���������[listRef���Rundeck Summary Trend��o ��������������\�:���(����������7d!put together the trend in english����X���F���������[trend�namex�� �GetListItemStr@�listRef��typePtr}����2��� ����������7dformat the longer string���������������[[k�N���<���������[�typePtr}����?��������no trend no work�������p���������[�typePtr}����@���������� �typePtr}����@��������data file or exponential change��H���6���������[trend���trend���^0��valuePtr$}�������p���������[�typePtr}����@���������� �typePtr}����@��������step function, constant change ��N���<���������[trend�trend���valuePtr$}���� ���units����J���8���������[�typePtr}����@�������� linear changein�^���L���������[trend���trend���^0��valuePtr$}���� ���units�����������������[[���(�������������7dadd year range�fi�������������[[��N���<���������[�typePtr}����?��������no trend no work����V���D���������[�typePtr}����@��������constant changes persist�0�N���<���������[trend�trend���� in ����� �startPtr$}�����������������[[st�v���d���������[trend�trend���� from ���� �startPtr$}����� to ����� �endPtr}��f�������������[[�������������[\� �������������7dcleanup��L�&������������[y�listRef��tc�6���$��������� [���trend����Z$���&����������������������������DFCC4D;�x�^���L��s��s����7dDthe toolbar does a fake close that just moves the toolbar down a lot7����2��� �����������(7(l7(t7(r7(b77�0���������������(7( allWindows�7�7@77��F���4������������(7(i7(�?�������7(7( allWindows�777��P���>�����������(7(7( allWindows�7(i77�7@#(Toolbar_ProcessID77he�J���8��������� ��(7(l7(t7(r7(b7( allWindows�7(i777�4���"��������3333(7(l�7@�7@(�@�������77�n���\������������(7(l�7@(�@ �������7(t7(r�7@(�@ �������7(b7( allWindows�7(i777������������������((st�n���\������������(7(l�7�@(�@ �������7(t7(r�7�@(�@ �������7(b7( allWindows�7(i777������������������((st����������������((�����������������((k����������������(\������������������������������������������������������DFCC4Dd�,�}8�,�����%5��$5��gSstart toolbar process���.�������6���^#�Toolbar_ProcessID��l��������������������d���R�����������SMGeneric_OpenReopen (->Toolbar_ProcessID;"Toolbar_Process";"Toolbar_Process")����������������������>���,��������^#�Toolbar_ProcessID�����������������F���4��������^�J#�Toolbar_ProcessID����@����������<���*�������� ^Restart_Process#�Toolbar_ProcessID�������������????^>>�.�����������^F#�Toolbar_ProcessID���:���(�������� ^ Generic_Close#�Toolbar_ProcessID�����������������^������������111^���h���V��������#^Toolbar_ProcessID�=�Toolbar_Process�#� StackSize��Toolbar_Process����������������^����������������DFCC4D�xB�N���<��'0��&0��gS6disabled for now in favor of new picture editor dialog0�*�������ް���� @��@figNumD����"���������������@figNumD^ @����������������������8���&����ޠ����S open editor only on double click�@���.������������@@�$@����x @�$@������2��� ��������0001Smod math to get the section00�~���l��������EMak@secNum�^@�_@figNum��^`@�?��������� @�@���������@�������������^�@�?�����������������������������(���������������Sopen full editor����@���.������������ @InfoText_FullOpen@secNumx�@figNumx�������������������@������������������������������������������������������DFCC4D'H�,��8���&�� L�� L����8setup information for a trend ����@���.������������8'based on trend type, start, end, value ��:�R���@������������89fixed, now puts full path to trend file (folder for now) ��� ��������(- (�do�(��������(-( trendType�� ������������(- (��&�*������������(-( trendStart�ss� ������������(- (���(��������zzz(-(trendEnd��� ��������zzz(- (���*������������(-( trendValue���� ��������3333( (����$������������((trend��8���&�����3333(%(�@�������(filePath����&������������( trendType (�(�(������������( trendStart� (�(�&������������(trendEnd� (�(��(������������( trendValue� (�(fu�������������([�$�������������8 setup info �d����~���������(( trendType�@(������������ @( trendStart��@(������������ @(trendEnd��@(�����������?�L���:�����D|�820 means no trend, just use the default null trend �n�t���b�����3��(trend�1 ��@ ( LongintToI4(�(������@ ( LongintToI4(�(������D���2��������(trend(trend��@(�Z$(��&��@�� �;������������((���*�������������8do real trends �ma�������������(trend(� ( trendType��@� ��@ ( LongintToI4( trendStart4��@ ( LongintToI4(trendEndo��@(�Z$(��&���:���(���������(( trendType�@(�?����������0������������(trend(trend��@� ��������������((���:���(���������(( trendType�@(�@��������oC�D���2��������(#( PM_Platform�@$(��\ Unix paths 7d�P���>��������(filePath� ( PM_FindFolder�� Input Forcingst�@y�B���0�����4���(filePath�(filePath���@( trendValue�m�$������������(\_t PC paths \en�J���8������������(filePath� ( PM_FindFolder�� Input Forcingst�X���F������������(filePath� ( PM_MakePath(filePatha( trendValueh(� ����������������((>)�6���$�������������8$trend:=$trend+$trendValue-> �im�6���$������������(trend(trend��@(filePath�(�����������������((i����|������������(( trendType�@(�@��������� @( trendType�@(�@�������� @( trendType�@(�@����������T���B������������(trend(trend��@ ( RealToF18.5(� ( trendValue5������������������((���:���(������������(( trendType�@(�@�������oC�|���j����ƚ�����(trend(trend��@ ( RealToF18.5(� ( trendValue5�@(�@���������@(�?���������������ƚ�Vg9((k��������ƚ�V((���6���$����ƚ�� (��(trend��@(�Z$(��&��������������������������������DFCC4DY@Dmv�R���@�� �����7d8Get the field pointer based on the menu choice passed in���X���F�����������J�7d>Menu choice is passed so that it can be used out of the dialog ���� ������������7d input�s �$���������������7d menu item�s � ����������������7d output�o �,�����������ro:U�7d pointer to field0�U�.��������������\ ����menuItem$����� �����������\- ������&�����������\menuItem$ ����������������(������������\\k�8���&��������\�menuItem$�������������������$������������ \��}��������8���&������������\�menuItem$����?������������$��������������� \��}������en�8���&������������\�menuItem$����@�������������$��������������� \��}������e��8���&���������\�menuItem$����@�������������@���.����������7d'$0:=->[Model Variables]Keywords'Keyword��<������������\\��������������DFCC4DI{�2��� ����L������8HACK! HACK! HACK! HACK! ���T���B��������ff�8;I rigged this to work like FileMaker where every keystroke ����R���@������������88changes the text, otherwise I have to search a hard to ���T���B��������L�8:get at local buffer for the text. Please excuse my little ����$���������������8 rant here. �����������������������*������������v��v@$���vv���$������������v�tempvvnt�4���"������������#�PictInfoToolbarChangedvv����,���������������#�PictInfoToolbarv���������������������������������������������������������������������DFCC4Dwu�{����n�� b��b���7dQAuthenticate a user against the database. By default the user is logged in but th�7de one time admins�`�~���l����.������7dQoption allows just a check that the username and password belong to an admin. The�7d one time admin����z���h�������������7dQpassword is passed in UAM_privateOneTimeAuth. In password-less mode this code is�7d bypassed.s��� ���������������7d inputp����$���������������7d username����$�����������GCM.�7d password��am� ����������������7d output���4���"������������7d boolean (true if sucess)0��>���,��������� \%��@�������� ����username$�����>���,������������\%��@�������� �password_plain@�����.������������\\ �password_crypt@����� ������������\1 �����.��&���������������\username$ ���ur�,��������������� \password_plain@ ������������������������.�����������\#�UAM_UsePasswords�����&�������������7d password mode�nd���� ��������� \���������������\�����7d�<���*����\��7d#query database to look for password���8���&����\�\$������ Password Set���in�>���,��������\���������������username$�����$������������NNN\$������������������111�er�,������������7dconfirm user exists�th�F���4��������\���� Password Set��� ��������������d �$�����������RRR�7d set records�up�.��������������\�v�� Password Set������������������3{�V���D������������7d<test password, comparison is done on the encrypted passwords�����P���>����\���� \ UAM_Encrypt( �password_plain@�( �password_crypt@���R���@����\�\ �UAM_ComparePasswords2 �password_crypt@������������<���*����\��7d#passed check, set global user flags�R0�4���"����\�\#�UAM_privateOneTimeAuth������"�������\�\������������ ����\� \���������������\�\\����������\�����\\rr�&�������\�����#\UAM_Auth���Ȑ�*�������\����#\UAM_User������p�*�������\����#\ UAM_Admin������ ���� ����\���� \���������������\����\\��������\����\\la��������\����\���&�������\��7d unset records�e �$�������\�\����������5��������\�\\��������\�\\��,�������\��7dpassword-less mode������� �������� \�������������������\\������������������\���H���6��������MUTX�7d.reset password regardless of sucess or failured����$�������������� \vPswd��������,�������������� \ vActualValuec�������������������������������������������DFCC4D s�>~m�T���B��&m��%m��gS=this code is called by both the toolbar and the image browser���������������������(�������D�����@�$@�����.��������������#@ InfoPict_Ptrn~@���������������������@���6���$���� �0001@ @IBC_SortI�@�?��������00�.�����������EMak#@ InfoPict_Ptrn~@�� ��ta�6���$������������@ @IBC_SortI�@�@������������.������������� #@ InfoPict_Ptrn~@�� ���i�6���$���������o�l@ @IBC_SortI�@�@���������� �.�������������#@ InfoPict_Ptrn~@�� ���o�6���$����~��� @ @IBC_SortI�@�@���������a�.�������~��o�l#@ InfoPict_Ptrn~@�� ����6���$����~���@ @IBC_SortI�@�@����������.�������~�#@ InfoPict_Ptrn~@�� ����������~�@�Z���H����~�#@DragTransferFilename8�@�?�������~ @IBC_SortI� @IBC_SortI�4���"����~�#@InfoPict_Button~@�@��������j���X����~����@@B�#@Toolbar_ProcessID�wO81 if we're in the toolbar this is an external call�0�������~�@I#@InfoPict_ProcessID~����Z���H����~�@�� @if we're in the image browser tell the toolbar to update as well����(�������~����� @Info_iPhoto_Button~���4���"����~�#@CM_UpdateImages~@�@���������.�������~�@I#@Toolbar_ProcessID���������~�@�(�������~�@@�$@����8���&����~�@ w�l dTool Sort�� @IBC_SortI��.�������~���� @IBC_SortI~@�?���������X���F����~�����@@�$@�� ���(#@CM_UpdateImages�~@����������������B���0����~�� S*if CM_UpdateImages = 3 do new menu update���<���*����~�����@#@CM_UpdateImages�@�@������������6���$����~����Supdate menus from external call���\���J����~����@found~@� @IBC_SortI�#@DragTransferFilename;�@�?�����������2��� ����~����@@found�~@���������������(�������~����� @IBC_SortI~@found����������~�����@���b���P����~�����SKmark update as finished, do inside loop to leave space for Toolbar_IBC_View���4���"����~�����#@CM_UpdateImages~@���������������������~�����@����������~�����@����DFCC4Dl�_)�>���,��'&��&&��gS'Handle the popup menu of images folders��P���>��������S8change the visible records in the image browser on click����H���6������������S1setup the menu when called from the outside, this���R���@�����������S;works because CM_ScanImages calls the toolbar for an update��T���B������������S=this code is called by both the toolbar and the image browser������������������p���(������������p@�$@������Z���H��������d#@DragTransferFilename8�@�?�������c @IBC_ViewI� @IBC_ViewIg�P���>����"�����#@ InfoPict_PtrncR#@DragTransferFilename>�@�?����������4���"�����������#@InfoPict_Buttonc@�@����������:���(��������� @IBC_SortIc@�?��������� reset??���j���X�����������@@B�#@Toolbar_ProcessID�wO81 if we're in the toolbar this is an external call���0���������������@I#@InfoPict_ProcessIDc����R���@�����������@�� 8if we're in the image browser need to change the toolbar����(�������������� @Info_iPhoto_Buttonc���4���"��������#@CM_UpdateImagesc@�@��������ke�.���������������@I#@Toolbar_ProcessID����������������� @��p���^���������n�g@@�$@�� ���&#@CM_UpdateImages�c@��������������x @�$@����a�B���0����������)S*if CM_UpdateImages = 1 or 0 do old update���B���0��������� �bS*if CM_UpdateImages = 2 do new menu update�h�������������o�a@� �<���*��������Hd@#@CM_UpdateImages�@�@������������6���$������������Supdate menus from external call���D���2��������@���@foundc@� @IBC_ViewI�#@ InfoPict_PtrnR���2��� ������������@@found�c@���������������(��������������� @IBC_ViewIc@found���.������������� @IBC_SortIc@�?��������������������D4@���b���P������������SKmark update as finished, do inside loop to leave space for Toolbar_IBC_Sort���4���"��������@���#@CM_UpdateImagesc@��������������<���*������������@#@CM_UpdateImages�wl@�@������������*��������������� @Toolbar_IBC_ViewBuild�b���P���������� SKmark update as finished, do inside loop to leave space for Toolbar_IBC_Sort�4���"������������#@CM_UpdateImagesc@�����������������������������@�������������������������������������@������������������������������������DFCC4DKF�ON�H���6������������"0/handle the popup menu for the journal sections "���>���,����3��L�#EJournal_Count$�@�����������������;^N>,"� �������p����i�����������������"������������������*�������/����@$���6���$������������#InfoText_Button�@����������2��� ����<��I#InfoText_ProcessID�*�������<�����@$���@���.����<��`� x� dText Count#EJournal_Count$@�6���$����<����#EJournal_Count$�?�������"��������<(C ��������<����"������������������DFCC4DUy�:���(���������d�d!Update the current date for a run���J���8���������d�d1This is done locally if the sim process is paused�������������d�d����� ���������d�dvar���0������������d�drecNum�state��������������d�d���8���&���������d�dask sim to update current dateD���>���,���������d�dstateJ#Simulation_ProcessID����.������������d�dstate�s$� � ���8���&���������d�d#Simulation_ButtonS@�������}�4���"���������d�dI#Simulation_ProcessID���������������d�d���,������������d�ddo the job myself A�0������������d�drecNum��������$������������d�d������0��$������������d�d���������$������������d�d�4�������4���"���������d�d Simulation_UpdateCurrentDate\��$������������d�d���������$������������d�d�������$������������d�d�4������������������d�dm��������������������������������������DFCC4DK&�p��n���\���������d�d"" "Picture1�" "Picture2�" "Picture3�" "Picture4�" "Picture5�" "Picture6�""���n���\���������d�d"" "Picture7�" "Picture8�" "Picture9�" " Picture10" " Picture11" " Picture12""���R���@���������d�d"" " Picture13" " Picture14" " Picture15" " Picture16""g ����������������������������������������������������������DFCC4D]��Z���H��'��&��b$COHT_Setup creates the output folder for ocean data and performs theME�\���J�����������b$Epreflight check for post-processing ocean fluxes. Now allows for UnixD�.��������������b$style path for MacOS X����� �����������b$ input���X���F������������b$A (optional) if passed then check for deep ocean instead of qflux���<���*��������0001�% @�@��������@output_pathname�12�8���&��������EMak@% @�@�������� @ OutputPathu���6���$������������@% @�@�������� @ InputPath����6���$���������f� @% @�@�������� @PathCharP������ �������� ADO@1 @��� R��������������D�e�e�.�����������TAT @ @�8@������������ S�"����������� ?? @isDeep�@�ch������������@�"�����������)))%@isDeep�@�������������@�������������zzzz�6���$��������@ @ OHT_ValidateT @isDeepl���"�����������b$ path checks��D���2�����������]@output_pathname @ PM_FindFolder w�EdGCM��H�d���R���������� @output_pathname @ PM_MakePath @output_pathname�w� Input Oceans�@���O�h���V���������a�t@output_pathname @ PM_MakePath @output_pathname�@�� ���@��wX was false�d�D���2���������a�g@ @ @output_pathname��@�������������;�,������������y�T@ @output_pathname��-�������������l� @�a��������������o�s��J���8������������b$2PC's get this path, MacOS X gets a Unix style path���2��� ������������@ #@ PM_Platform�8$@���_T�$���������������b$ Mac/Unix pather�P���>������������ @ OutputPathuw�../../Input Oceans/��@�� ����w�/le�H���6������������ @ InputPathw� ../../Output/��@�� ����w�/ef�&��������������� @PathCharPw�/������������������@b$���� ������������b$PC path@�4���"������������ @ OutputPathu@output_pathnameag�D���2������������ @ InputPath @ PM_FindFolder w� CurrentRun�� L�&��������������� @PathCharPw�\t�����������������@i���� ������������ @��@�����������������@i���� ������������ @��@�������������������@b$���� ( OutputPath�(output_pathname(sI�F���4������������ ( InputPath ( PM_FindFolder�� CurrentRun"�(��������������� (PathChar����\�������������������((������ ������������ (��(�(������������������((k���� ������������ (��(�(������������������((��DFCC4D�Z�L���:���������d�d"3H2Change to match the record selected in the toolbar�"�<���*���������d�d "InfoText_SaveRecord""I@��������""���L���:���������d�d"�""�����"#"JournalIDArray"#" JournalArraya"""���*������������d�d "InfoText_LoadRecord"����������������������������������������DFCC4De�;sj�h���V��%��$��g � FinderToPathnw�l diagnostics_�~� @Run_Critical_GetRunN+@�?���������fs������������g ������������������������������������������������DFCC4DU6�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q����@success@������������DFl��3�V"�����`Dsetup db��,�����������ODFl��`�OK*��9� �"���������������@� @��������(DFCC4DIt�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q�������� @Run_Critical_End<���DFl��`K�,v����������������`Dcheck model/grid, pathDFl�� �V���output_pathname @ PM_FindFolder w� CDFCC4D[?�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q��@��� @Rundeck_Createz @��DFCC4D[@�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q��¬�����@success@����:��DFCC4D[A�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q�@�����*�������¬����� @RDFCC4D.}�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q���������¬��������4���"����DFCC4D�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q@ @tempu��$@�����DFCC4Dd�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](qMakePath @output_pathname�@DFbrkp����������������`����������H�� ����������Q�� �@���"���������������@success@����*�����DFCC4DQ6�2������!�� ��,I�(�������L����]���$������$����������� ]Run_ChangedRun@nd�(�����������U]���$�������@���.�����������]} �RunNumberArrayHiers���?�����������$�������������� ]Run_ChangedRun@�����������������](q������@�2��� ������������@DFl��no���essID(����������������i�a@�l��������������� ��4���"��������� �#@Setup_ProcessID@������������DFCC4D}�,�Z���H��%��$��gSBEvaluate the hierarchy for view for plots where hierarchical listsME�Z���H��������wSCare used. This code is called for the view button and double click.���Z���H�����������SBI need to filter out clicks on the top level and only allow clicks���X���F������������S@on the sublists, but pass the higher level name as well. The new����X���F������������SAand improved version supports zonal plots and time series (plots)������������������S������� ��������0001S input00�.�����������EMakS string, folder to useta�*���������������S ptr, list to use���>���,���������� �%@�@�������� @��@ folderNamef��r�*������������ �@- @��@listPtr���b���P���������$�s@@selItem�@selRefm�@ selSublistRef�@ selParent�@ selParentRefe��=�&��������������@1@selSubEx$����F���4�����������@%@�@��������@selName�@ selParentName����2��� ���������h�i@%@�@��������@path���a�&������������s�e@ folderNamef @���"������������n�g@listPtr @��w��������������������$���������������S get list item���2��� �������� �@selItem@{@listPtr�����j���X��������(,@z@listPtr��@selItem�@selRefm�@selName�@ selSublistRef�@selSubEx$�f�D���2��������k@ selParentRefe@y@listPtr��@selRefr�9{�F���4��������p�t@ selParent@u@listPtr��@ selParentRefe�B�������������{-4^�\���J������������@@selName���w�l<empty>���.@ selParent���@����������������,���������������Sget item parent name���X���F���������@z@listPtr��@ selParent�@ selParentRefe�@ selParentName�� ���������������S make path���>���,������������@patha @ PM_FindFolder@ folderNamef����d���R������������@pathe @ PM_MakePath@patha�@������w�l_��@ selParentName�@�����^���L��������@patha @ PM_MakePath@patha�@������w�l_��@selName�@�������� ��������0001Slaunch00�2��� ��������EMak@#@ PM_Platform�$@���Ma�"��������������@#@Use_EVA�i�<���*������������ @PostProcessing_TypeViewEVA�@pathP�������������������@���B���0������������@errCode@.�@path�@������������@������������2@ ������������@�"�����������ww@#@Use_EVA�w�<���*��������wZ @PostProcessing_TypeViewEVA�@pathP�>������������@�F���4��������@errCode@.�)@path)�wO8does this work?����������������@��������������{{@kR������������w@��������DFCC4D0w��l�<���*����������"0#open list window to list eJournals "���j���X���������� Generic_OpenReopen???#eList_ProcessID?x� eList WindowK?x� eList_Process?? z����DFCC4D.�q�h���V�� b��b���7dNreset the user to no user in password mode, can't logout of password-less mode �m�.��������������\#�UAM_UsePasswords�����&�����������GCM.#\UAM_Auth������(�������������#\UAM_User�����C�&������������#\ UAM_Admin���������������\\����DFCC4Di������"��!��,]\�(�����������MUTX]���$�������p���^����„�����7dQdon't close the window unless the save is sucessful, this will bug users but so w�7dhat���0��������������] �UAM_Editor_SaveRecord��"�����������0001 ] Generic_Close00������������EMak] S�(���������������]���$�������^���L�������� ��7dGThere is a bug where when the number of entries in the list box changes���d���R����������7dMit doesn't happen until after the code leaves so it has to be set by a timer.�`���N������������7dIThis requires a stupid workaround where the userColsToSet is the item you���>���,������������7d&want to set after the form is updated.P��8���&�����������] �userColsu� � userColsToSet����(��������������]�������������%������������EMak]����DFCC4D�~PH�d���R��'��&��b$MOpen a path in the Finder/Windows Explorer from the base of the 4D folder and���^���L��������b$Gbring the window to the front. Now uses new 2004.1 command Show On Disk�����������������b$�o����� ���������� b$ input�e�X���F����������)b$A folder to open, a first char of means use the run path + rest�P���� ��������0001b$ output00���� ��������EMakb$ noner��>���,�������������% @�@�������� @��@ pathToOpenp���� ������������� @ @err��n���������������)��&����������� b$Get the folder$ 5�8���&�����������@ @�!9@�?�������"�8w�����h���V��������b$Qcan use usuall Run_Path code since I may not be inside a process with an open run�@���.��������@ pathToOpenp @ PM_FindFolder w�EdGCM��B���0��������@ pathToOpenp @ PM_FindFolder w�OutputP���v���d�����������@ pathToOpenp @ PM_MakePath @ pathToOpenp� @Run_Critical_GetRunN; @�?��������7�@���6���$��������111@ @� @���@�?���������f���T��������@ pathToOpenp @ PM_MakePath @ pathToOpenp�@�  @��@�@����������@�����������������@�����������������@���@���.�����������@ pathToOpenp @ PM_FindFolder w�EdGCM����N���<��������@ pathToOpenp @ PM_MakePath @ pathToOpenp� @��@������������������@����������������R���@��������b$:new 4D command to show a folder, much faster than old code�2��� ������������@ #@ PM_Platform�8$@������.���������������@ @ pathToOpenp���������������������@���6���$������������@ @ pathToOpenp���wX??������������������@���|@�6���$���������@ @ pathToOpenp���wX??���������������@mxtraHeight]]�2��� ����h����[]�]@]x�Tab_@]]�]]�4���"������������[]�]@]x�List_@P]]�]]�4���"������������[]�]@]x�Info_@P]]�]]�4���"������������[]�]@]x�Size_@P]]�]]�4���"�����������[]�]@]x�Disk_@P]]�]]y�$���������������zTX hide all zy�J���8����������� ExtraHeight] ]WBot�]@ ]WTop-�]@]�@�������]�V���D������������] WLeft] WTopt] WRight]] WBoth�]@ ] ExtraHeight]]���2��� �����������[]�]@]x�Tab_@]]�]]BA�4���"�����������[]�]@]x�List_@P]]�]] ��4���"������������[]�]@]x�Info_@P]]�]]y�4���"������������[]�]@]x�Size_@P]]�]]���4���"�����������[]�]@]x�Disk_@P]]�]]�.���������������������������������������������������������������������������������������DFCC4DP��,�R���@������((%(�@������� (�3 this contains the group name ���V���D�����������(1 (�2$0super mode, change boxes regardless of settings {et�*�������������((( Group_Index�8���&��������3333(1 (��2$was the box opened ������ �������� (��(�(������������������(�^���L��������zzz�7dDdon't use disclosure triangles if the run is a scenario or archived ����h���V��������www((�"(�����@(�m����@(�@��������� @ (��@(�@P����r�����������( Group_Index(� ( Group_Namex (�(�?�������4/this finds and reverses the state of the Group is�"����������������7dEnd if l�z�j���X������������((�@(�@��������� @ ( Group_Visible( Group_Index�@ (ShownW�J���8������������( ( Group_State( Group_Index�@ (Openp�@���.������������ ( Group_State( Group_Index (ClosedI(�4����������������((�>���,������������ ( Group_State( Group_Index (Openp(������ ������������ (��(�(������������������((���0����������������7dThis updates the group ���:���(������������ (Twist_Down_Update( Group_IndexW�4���"�������������7dmark change to enable save �e �8���&������������#(Simulation_TwistDownChanged(�(A����������������((������������������((����������������(�(ul����������������((v����������������������������������������DFCC4Dfs�8 �R���@��%��$��gS;Setup the menus in PowerTools, which are the model and gridDE�@���.������������^ � Model Names� �Dev_ModelNameMenu����@���.��������^ � Model Grids� �Dev_ModelGridMenu�tr����������������������DFCC4D�P�D���2����hP��"0* Typically used as a close box procedure. �"�F���4����hP����"0,Adds in support for proper record handling. z"��� �������hP����"0 input "��b���P����hPerm"0I optional process to effect, if nothing is passed uses current process "���.�������iP��Q �Q processIDQQ����������iPtQ�0�������iP~Q�Q@�?�������QQ��&�����������y processIDQ Q�Q�(�������hnDQ processIDQQ$�(�������hn?Q processIDQQ����������hn��� �������hnDQBQQer� �������hn����?QBQQnk��������hn��������������hnlugi����������������������������DFCC4DBX�T���B��x��x���7d:this is special case code to deal with the ocean mode menuP��J���8���������7d1this replaces Matt's old code, the new version no��>���,����Z�$�7d%longer moves things to show/hide them����*������������[� group_index�����B���0������������7d(incoming data is a hack to force updates��� �������V����O[1 ����er�0�����������[1�load_from_record@����0��������������R[ �OceanModelistRef@��e �*������������t[� listItemRef��\�.��������������[load_from_record@ ������������������[�M��(���������������7dload menu items���*�������������[���$��������B���0���������_�@[ �� Ocean modes� �Ocen_M_Mode_Menu@���H���6���������� [OceanModelistRef@���Ocean modes short��d �������������I�S[[��"�������������`�7dset item��ID��������������[[���J���8����������[���$����� �load_from_record@��� T�D���2���������_�@ [Ocen_M_Mode_Menu@�������`��?���������*�������������[���$�����se�b���P���������I�S�7dIset associated info to match observed ocean the first time it is selected�ec�t���b������������[ �Ocen_M_Mode_Menu@����@�������������������@����������observed���<���*���������[������O8X10.B.1871.M02.Hadl1.1����V���D������������[������@ ������uh$have to align the file and the iyearu��4���"���������� [������uh no collectionuie�4���"���������[�M[������uh no collectionus�T���B���������1�2[������� �� O�uhif before the start of the fileu�Q�(������������m�a[����� �� O�ru��������������[[�V���D���������S�I[������P� �� �!if after the end date of the fileTa�(�������������;[����� �� �al�������������� [[���������������[�M[[\�D���2������������[���� �Ocen_M_Mode_Menu@�P��?����������B���0�������������7d($listRef:=Load list("Ocean modes short")��\�^���L������������[���� �GetListItemStr@ �OceanModelistRef@� �Ocen_M_Mode_Menu@��������������������[[v����������������[\�^���L�������������7dEcheck if the ocean box is visible before I try to show or hide things����V���D������������[ group_index�� � Group_Namer���Ocen����?������������L���:�������������7d2ocean modes are addative so I handle each in order���F���4������������[ � Group_State� group_index�� �Open��������������������[[���@���.������������[ �Ocen_M_Mode_Menu@����?������������D���2������������[[�P���Ocen_S_@����� fixed sst5{�f���T�������������7dLspecial case for max mixed layer which is required for ocean flux collection@�Ta�"���������������[���������6���$������������[[�P���Ocen_R_@������Ta����������������[[ �6���$������������[[�P���Ocen_R_@������s����������������[[s�6���$������������[[�P���Ocen_Q_@������CR�6���$������������[[�P���Ocen_D_@�������6���$������������[[�P���Ocen_O_@������P�6���$������������[[�P���Ocen_C_@��������J���8������������[ �Ocen_M_Mode_Menu@����@���������qfluxe��6���$������������[[�P���Ocen_S_@������F�6���$������������[[�P���Ocen_R_@������Ta�6���$������������[[�P���Ocen_Q_@������in�6���$������������[[�P���Ocen_D_@������Ta�6���$������������[[�P���Ocen_O_@������ng�6���$������������[[�P���Ocen_C_@������Tr�V���D������������[ �Ocen_M_Mode_Menu@����@���������qflux deep ocean�I�6���$������������[[�P���Ocen_S_@������s�6���$������������[[�P���Ocen_R_@������D�6���$������������[[�P���Ocen_Q_@������ S�6���$������������[[�P���Ocen_D_@���������6���$������������[[�P���Ocen_O_@������pe�6���$������������[[�P���Ocen_C_@���������N���<������������[ �Ocen_M_Mode_Menu@����@��������observed����6���$������������[[�P���Ocen_S_@������S�6���$������������[[�P���Ocen_R_@���������6���$������������[[�P���Ocen_Q_@������d��6���$������������[[�P���Ocen_D_@���������6���$������������[[�P���Ocen_O_@���������6���$������������[[�P���Ocen_C_@��������L���:������������[ �Ocen_M_Mode_Menu@����@��������dynamic�6���$������������[[�P���Ocen_S_@�������6���$������������[[�P���Ocen_R_@�������6���$������������[[�P���Ocen_Q_@������p�6���$������������[[�P���Ocen_D_@��������6���$������������[[�P���Ocen_O_@���������6���$������������[[�P���Ocen_C_@����������������������[[s����������������[[������DFCC4DJ��`���N��&m��%m��gSICreate a new record for edit simulations. Many fields need default valuesfn�(��������������S input (optional)����� �����������S run #�������������������������������������Svar������ ��������0001�@i�00�.�����������EMak@@�@�?��������ta�:���(������������@%@�@�������� @��@runName����"���������������@runName @�@��������������@���������������a�b�l�.������������e�lSplace into create mode�M�*������������� @Simulation_Newz@����8���&������������S add a new record to the database��*��������������� @Simulation_SaveRecordra�"��������������@�D@��������2��� ��������4Screate a unique run number���.���������������@@�@�?�����������&�����������@���@����@runName������������������@���L���:������������@����w�lUntitled���@� @�d�@�@O��������������������-� @���0���������������Sgive it the current date���� ���������������@�v���@�!���8���&������������S give it meaningful default dates���&���������������@������� l���&��������������A@������� w���*���������������@����@�@ ���������4���"�����������Sset default ocean collection���*���������������@����@�@�������"�*���������������Sset special regions�H�(��������������@����w�lREG8X10��*���������������Ssetup default path ���(���������������@����w�lDefault���,���������������Ssetup default oceans���*���������������@����@��������������V���D������������@���� @GetListItemStr @OceanModelistRef8�@�?�����������0���������������Ssetup default trend info����*���������������@�j���@�@ ���������*���������������@����@�@ ���������*���������������@����@�@ ���������*�����������aaaa@����@�@ ��������*���������������@����@�@ ��������*�����������@����@�@ �������8���&�������� @Simulation_TrendData8@�j�����*������������@����@�@ �������D���2����������� @Simulation_SolarData8@�fw�l1/1/1958������&���������������Screate keywords���P���>������������S9Simulation_CreateSubrecords (->[Model Variables]Keywords)���(���������������Sset model & grid����f���T������������@���� @GetListItemStr#@ ModelNamesRef�@�@���������wO8Model II 1.0.5���\���J������������@���� @GetListItemStr#@ ModelGridsRef�@�@���������wO88x10����������������������"���������������@�5@���������(�������������&Sleave create mode��*��������������� @Simulation_Newz@����.���������������Supdate list & interface���2��� ������������ @Simulation_LockUnlock@�����(���������������SRunArray_Update ����F���4������������@�w�lSetup Simulation, Run ID: 8��@��������,���������������@I�`@�?������������������������������������������DFCC4D2�r�T���B��'��&��b$=Create TimeSeries.I file to post process the aj (time series)���"�������������� @diagD����6���$������������@% @�@��������@ diag_path����(��������������@2 @ docref_full���:���(�����������@% @�@��������@ output_folder���"���������������@ @itemu����6���$���������� @� @ modelgrid�@�@������������������������l�e� �&�������������b$path to output$�u�d���R���� ��� @ output_folderw� ../../Output/��@������w� /diagnostics/��@�����e�z���h���������"�8@ output_folder@ output_folder��w�_��@�  @�������w�-��@�  @�������w�/���������������� ��(�����������olldb$check model/gridz0.�6���$���������P�o @GetModelAndGrid 7 @ modelgrid�� �����������������*������������� b$create the .I fileH�i�H���6���������"�8@ @ modelgrid�@�@���������8@�@����������)�@���.���������Y�e@diag�w�8x103��@�Z @�@���������g�������������s�.@�"�D���2���������e� @diag�w�7.826x10���@�Z @�@���������e�������������u�t@�u�n���\������������@diag�@diag���w� ../../Output/��@������w�/acc/��@�Z @�@��������C�x���f������������@diag�@diag���w�JAN��@�  @�������w�.acc9��@������@�Z @�@�����������R���@������������@diag�@diag���@ output_folder��@�Z @�@����������J���8������������@diag�@diag���@������@�Z @�@��������Li�R���@������������@diag�@diag���@�  @�������@�Z @�@����������R���@������������@diag�@diag���@�  @�������@�Z @�@�����������p���^������������@diag�@diag���@�  @�����P@������@�?����������@�Z @�@�������������� ������������b$8x10ey�P���>�����������b$9Mana2:Pascallion:EdGCM Folder:Output:TestVar.A10.pC9:acc:���2��� ������������b$JAN1901.accTestVar.A10.pC9���^���L������������b$GFolder:Output:TestVar.A10.pC9:postprocessed:TestVar.A10.pC9_TimeSeries:���&���������������b$TestVar.A10.pC9n ���� ������������b$1901$i���� ������������b$1901rt����������������b$1EX������������������,���������������b$write out the .I fileTa�$���������������@ diag_path@���@���.������������@ diag_path @ PM_UpOneLevel @ diag_path����@���.������������@ diag_path @ PM_UpOneLevel @ diag_path�@�N���<������������@ diag_path@ diag_path��w�Applications:Diagnostics:���L���:������������@ docref_full@  @ diag_path��w� TimeSeries.I����2��� ������������@�g @ docref_full�@diage� A�(���������������@  @ docref_full�th�H���6������������@ @ diag_path��w� TimeSeries.I�w�R*ch8�����������������������2��� ������������b$create the .I scalling file���"���������������@diag_w��e_�"���������������@�2 @���������B���0������������@ @item��@�?��������@�L @���������� ���������������@ @�����@�.���������������@diag�@diag���w�T������������������@p�.���������������@diag�@diag���w�F������������������@l�:���(������������b$"scaling factors aren't really used���@���.������������@diag�@diag���w� 0.00000000E+01 ���h���V������������@diag�@diag���@������  @�@��������P@� @�������w� ����h���V������������@diag�@diag���@������  @�@��������P@� @�������w� ����J���8������������@diag�@diag���@������@�Z @�@�����������"���������������@�3 @������������������������@b$�"���������������@�2 @������������������������@�6���$������������b$write out the .I scalling file���T���B������������@ docref_full@  @ diag_path��w�TimeSeries.I Scalling����2��� ������������@�g @ docref_full�@diage����(���������������@  @ docref_full����P���>������������@ @ diag_path��w�TimeSeries.I Scalling�w�R*ch:��������������������@�B���0�����������b$+copy over the land file from the run folder������������������ @PM_CopyFortranz @�@���������w��� @ PM_FindFolder w� CurrentRun���@�@��������@ diag_path�@�@��������@������������������������&���������������b$path to output$���p���^������������@ output_folder @Run_PathR��w� :diagnostics:��@������w�_��@�  @��������\���J������������@ output_folder@ output_folder��w�-��@�  @�������w�:����������������������0���������������b$create the output folder����<���*������������@ @ @ output_folder��$@������*���������������@ @ output_folder�������������������@��������������������*���������������b$run the application���^���L������������@errCode@.� @ diag_path��w�TimeSeries.app�@���������������������������������������DFCC4DQW�s�X���F����n�����F>This terminates XML tags correctly and fixes the input string ,>�r���`����@�Z^FQto match the rules for XML tags. If the level is 0 then nothing is done at the enFd � �������F�����F input ct�0���������������F string, XML tag name ��,��������������F level of the tag 9�<���*�����������%�@������� �tagNameq�.����������� �tagLevel@���0�����������Yj%�@������� ���,�$�����������tagName �_R�&�����������,GetagLevel@ �tr������������Yj�(�����������Ffix characters in�B���0��������,GetagName�tagNameY�p Y�p_LO�B���0��������tagName�tagNameY�p?Y�p������������������&�.���������������Fcreate output string ���v���d�������� ��tagLevel@�@�Z$��%��@Y�p</��@tagName��@Y�p>��@�Z$��&lo������������������������������������������DFCC4D�|�`���N��&��%��gSHYou can only extend runs that you can start, that aren't already runningfn������������������(�������������� Run_Critical_Begin���<���*�����������#@RunNumberArrayz�@������������������������0001@@�"#@Run_RunNumScenMast�#@RunNumberArrayM����#@Run_RunNumStatus �#@RunNumberArrayu� �@�@���������34�H���6����������@�@������#@ RunIDArrayR�#@RunNumberArrayz��u�&��������������� @Run_Critical_End���`���N���������SIcheck that neither the model nor the shell is running (be extra paranoid)�����r��������@ @Run_FindOneProcess @ GetModelNamet��x @Run_FindOneProcess� @ GetModelNamet����wO8running���N���<������� @Alert_ParamText@�����w�lextend�w�l��w�l����R���@��������� @ Alert_Alert@�?��������@�@��������@�@������������ ������������@��stopped���&������������ @Setup_FastForward��������������@w �������������@�n���\������ @Alert_ParamText#@RunNumberArrayt�#@RunNumberArrayt�w�lextend0�w�l��w�l�����&������������ @Run_Critical_End���R���@�����d @ Alert_Alert@�?��������@�@��������@�@���������Li�������������@���������������@�������������������������������������������DFCC4Ds��Z���H��&\��%\��gSCExchanges two sections in the list, all parts are exchanged so thatME�P���>��������6��S8nothing is lost. Also exchanges database fields for text�d���� ����~����S input���.��������scalS first section numberPr�.��������TAT S second section number S�4���"����Ɋ�TAT S pointer to first text field �6���$����.����S pointer to second text fieldse�(�������8����� @��@first����*�������J�@ @��@secondD�ay�,��������TAT @- @��@text1Ptr$�? �,��������TAT @- @��@text2Ptr$����<���*�����������@@ItemList$�@i�@iie�@iii�Po�6���$����H����@�@ItemName$�@�@���������8���&���������@�@ ItemCaption�@�@�����������6���$���������@@ItemPict$�@�@�����������:���(����Ŭ�����@�@ ItemPictLabel�@�@�����������"�������V�����@@Text���� ������������@first~ @���"�����������aaaa@second�~ @���$�������>�����@text1Ptr$~ @���$��������������@text2Ptr$~ @�������������aaaa��8���&������������S load things into the temp values���8���&����h�aaaa@ItemList$~ @ItemListI�@first||�<���*������������@@i�@�?��������@�@��������Nu�R���@����X�aaaa@ii~@first�~`@�?���������@�@��������~�@i��>���,������������@ItemName$�@i~ @ItemNameI�@iiegu�B���0���������@ ItemCaption�@i~ @ ItemCaption�@iie���@���.�����������@ItemPict$�@i~ @ItemPictI�@iie� i�H���6�����aaaa@ ItemPictLabel�@i~ @ ItemPictLabel�@iie�����������������@���*������������� @TextP~@text1Ptr$����������������$�m@�0��������0001Sexchange first and second09�F���4��������EMak @ItemListI�@first~ @ItemListI�@seconds4D�<���*����,�0001@@i�@�?��������@�@��������12�R���@��������EMak@ii~@first�~`@�?���������@�@��������~�@i�T���B��������0001@iii~@second��~`@�?���������@�@��������~�@i18�@���.����������� @ItemNameI�@iie~ @ItemNameI�@iii���D���2��������TAT @ ItemCaption�@iie~ @ ItemCaption�@iiid �D���2��������496 @ItemPictI�@iie�~ @ItemPictI�@iii�.3�L���:��������qRT @ ItemPictLabel�@iie�~ @ ItemPictLabel�@iii�Rl�������������� @��0�������������:@text1Ptr$�~@text2Ptr$��2���������������}��2��� ���������� Srestore values into second�o�:���(����������: @ItemListI�@seconds~@ItemList$��<���*����������}@@i�@�?��������@�@��������� �T���B���������t�e@ii~@second��~`@�?���������@�@��������~�@i�s�>���,�������� @ItemNameI�@iie~@ItemName$�@i�B���0�������� @ ItemCaption�@iie~@ ItemCaption�@iq�@���.������� @ItemPictI�@iie�~@ItemPict$�@i�o�H���6�������: @ ItemPictLabel�@iie�~@ ItemPictLabel�@i�$�����������}@��*���������t�e@text2Ptr$�~@Text2�e�����������������$�����������>� S update labels���.��������������� @InfoText_UpdateFigLabels����������������������$���������������S update window���B���0������������ @InfoText_ShowHide@first�@�?�����������D���2�����������A @InfoText_ShowHide@secondx�@�?��������[@����������������������������������������DFCC4Dp �4���"�����������"0 RESTART_PROCESS (Longint) "�8���&������"0 RESTART_PROCESS (Process ID) `"������ ������"0 8"���T���B��������"0; This routine resumes, shows and brings forward a process. "���T���B��������"0; This routine assumes the process already exists. You can "X�Z���H��������"0@ determine if the process exists with a call to Process_exists. "������ ��������"0 8"\�.����������� � ProcessID���������������&����������� ProcessID ����������������(�����������@ ProcessID$�(�����������E ProcessID���(���������F ProcessID�� �������w�������������*�����������"0 End of routine."����������������������DFCC4DV0R]� �����������^N>,ise������������������������������en�*�������A ��M�@$�� �0�������������������#EJournal_Count"��>���,�����������i�?��������@����������4���"������������i�@#EJournal_Count"�@���.�������� InfoText_ShowHidei�@�������������������������os�@���.����������M InfoText_ShowHidei�?�������Ar��������������MBT��������������Mig������������M��ur��������������������������������������DFCC4D^-�Xk�J���8������������F1Based on a table and a field name find the field �;�V���D��������F<and return a field pointer. This is because the XML records \�V���D���������F<will return field names but not numbers so I need to search \���X���F�����}F>the database structure for them. If the field cannot be found ,�V���D�������� $F=then a nil pointer is returned. Updated so that the database ��\���J��������5FCis searched for "Field_Name" and "Field Name" since both are valid ���^���L��������FDfield names and XML converts both to "Field_Name". Don't differ two ���R���@��������ffF8fields by only _ or this search will do strange things. �Bs� ���������������F input po�*���������������F table pointer ���&���������������F field name Re�"���������������F output l�2��� ������������F field pointer or Nil ��.�����������Yj- �tablePtr@���(�����������tableNum@���P���>��������,Ge%�@������� � fieldName altfieldName��L�.������������g�e- ��fieldPtr@���*������������m�ocounti�&������������<�ktablePtr@ ��&������������S�. fieldName ��������������k�e&�,������������e�<Fget the table size ��2��� ������������count�tablePtr@�6���$������������tableNum@�tablePtr@�����������������6���$������������Fname with space instead of _ ���J���8������������ altfieldName�� fieldNameY�p_Y�p ������������������&�(���������������Ffind the field �8���&������������i�?�������countos�D���2������������ fieldName�@tableNum@i&�<���*������������fieldPtr@�tableNum@iP�4���"������������icount��@�?�������m�����������������H���6������������ altfieldName��@tableNum@i+�<���*������������fieldPtr@�tableNum@i�4���"������������icount��@�?�������s@�����������������<������������������������������������������������&�*��������������Fset return value s �&��������������� ��fieldPtr@en��DFCC4DA+���`���N��'��&��b$HGeneric code to do open and reopen for processes, DOES NOT CLOSE WINDOWSfn�X���F�����scalb$@replaces almost all the code in xxx_Open with a generic version.� @�J���8�����b$3If the process window is closed then it is opened. ���f���T������� b$OIf the process window is not in front and open then it is brought to the front.� ���� ���������b$ inputro�(������������b$ process id ptrz@�&�������Ɯ�����b$ process name$���8���&����"�����b$ process startup procedure name������ ����\�����b$ outputdP���� ���������b$ nonedP�0������������- @��@ processIDPtrr����&������������@ @ processID����>���,���������@% @�@�������� @��@ processName��#�>���,����*�scal@% @�@�������� @��@ processProc�up�(����������@ processIDPtrr @��n�&��������@ processID @�7���&�������^���@ processName @�w �&�������������@ processProc @� a�����������������������Ǩ�����@���6���$����4�����@ @ processID�@���������������>���,��������@ @J @ processID��@�@�����������4���"������� @Restart_Process @ processID���������������@���B���0�������b$+close front window or bring window to frontpt�4���"��������(@ @ @��8@ processID�pe�B���0����b�|b$*Generic_Close ($processID) do nothing hereR��������������@b$�&�������~�����@F @ processID�������������@b$��������\���@��������D�^@b$�Z���H����H�����@ processIDPtrr7@= @ processProc�#@ StackSize�@ processName����������������@b$up_State  Group_Visiblej�P���>����<������DFCC4DF�C�I 7�8���&$ ������� Converts a journal entry to htmlC���x���f$`�������Qcan pick a path now in addition to using the default location, if nothing is pass� ed then use���,���*loh:User�the default location6:O���� $g&����� inputp�8���&$ o!̕P�! optional parameter (pick path) ��V���DX� ���% @�@�������@output_pathname@apppath@ imagepath6!�:���(Z�X@% @�@�������@ newFolderName6@��6���$,n!��@ @ folderStatuso@i@j6�|�$���g�!��� C_TEXT(html)���&���ِ����z�H@\ @htmlBlobh6��$���$ ����p@�W@ @listRef6tP�.���4����$*@ @crPos@maxPos6��0���loh:����@% @�@�������@cr64 �@���.�Y�o@ @fieldNum$@tableNum$@pictNum6�p�$�����6�R�o@2 @docref6� �(��� �����@ @ imageCounti6@�.������z�H@1 @doneH@create6��l���Z, ��������@% @�@������� @ HTML_BrowserM6wX,browser that owns the html files under MacOS@���0��� @ imageCounti6@���������������� ���z�H��D���2$0����p@�W�-set the browser (this should be a preference)��2��� ��� �D�Browsers and signatures areew�&���Jloh:User� Safari: sfring�0���R� Internet Explorer: MSIEes�(���$(loh:User� Netscape: MOSS�s �&������ ������� Firefox: MOZBhe�2��� ?������� default web browser: ?????v�.���$�������� @ HTML_BrowserM6w�????�������8 �������"������ ��������� setup blob���6���$$f ~���@^ @htmlBlobh@�����������6�����$����4���" ��� � ���create the folder if possible���.���$ ��������@ @�6@�����������6���X���F��� ��� � ��@output_pathname6@ w�%Choose a place to save your eJournal:6����$tTT STAT@ �H���6��� 0:@output_pathname6 @ PM_FindFolder w� eJournals6si����$@ TT STAT@ �������� 0:33�D���2$ TT STAT@ @� @output_pathname6�6@�?�������6ch�$������ 0:@����6@����22�D���2�TT STAT@ newFolderName6@� @����w�:w���6ch�L���:��� 0:@ newFolderName6@� @ newFolderNamew� w�_6er�V���D��� TT STAT@ newFolderName6@� @ newFolderName@�Z $@��&6w�_6 �<���*��� 0:@ newFolderName6@ @ newFolderName6Sp�����N�����������B���0��� ���������+check that there is enough of a name to use���B���0Ԥ ���?�� @ @� @ newFolderName6��@�@�������6���P���>��� �������� @Alert_ParamText @ newFolderNamew���w���w���6���B���0$.���� @ Alert_Alert @�@��������@�@�������6��������� @�����nLino��mn�~���l���  '�Qcleanup the old folder or make a new one, if this is for a preview create a cheap� `o uninque name�.��� TT STAT@ @��@�?�������6? �0������ 0:�make a cheapo unique name �D���2$TT STAT@ newFolderName6@ newFolderName�6�@�  @6ch�b���P��� 0:@output_pathname6 @ PM_MakePath @output_pathname@ newFolderName@�6 ������� TT STAT@ �2��� ��� 0:�save to user requested path �b���P��� ����@output_pathname6 @ PM_MakePath @output_pathname@ newFolderName@�6?������� ��f7@>�����$P� ������ @doneH6@��"������ @create6@��>���,��� @ @ @output_pathname6�L$@��6�>���,��� @PM_RecursiveDelete6 @output_pathname6������� @�8���&��� � PM_MakeFolder ($output_pathname)��T���B��� �<PM_MakeFolder (PM_MakePath ($output_pathname;"Images";True))z�,������ ������7@ @output_pathname6��R���@��� �� ��� �@ @ PM_MakePath @output_pathnamew�Imagesp@�66h��&������ n�d�l�e��create the htmll��(������ l�e�s�c�@ @doneH�L@�6uR�������� �����������&������ ���������create folders���*������ ��������@ @create�L@�6���<���*��� ��������@ @output_pathname6wX html folder���d���R@ @ PM_MakePath @output_pathnamew�Imagesp@�66wX image folder6��������� @�������� �0������ �get the html definitions����0������ @listRef6@ w�html6�������� �(������ �create html file��*������ �title & top of page�Z���H��� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@��������66�T���B��� ���� @InfoText_HTMLAdd< @� @����@�Z $@��&6w� 66�t�Z���H��� �s�e�r� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@��������66�f�X���F��� ���:�= @InfoText_HTMLAdd< @� @����@�Z $@��&6w�<br>66�J�Z���H��� �w�F�o�l @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66��Z���H��� �p�u�t�_ @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66�A�X���F��� � ��� @InfoText_HTMLAdd< @� @����@�Z $@��&6w�<br>66��Z���H��� �T�e�x�t @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66� �Z���H��� �� ��$ @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66��X���F��� �R�e�f� @InfoText_HTMLAdd< @� @����@�Z $@��&6w�<br>66�d�Z���H^ @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66�������� � ������ ������abstract� �X���F���   @InfoText_HTMLAdd< @InfoText_HTMLText �@� ���@listRef66�������� �����������&������ ���������get field ptrs���2��� ��� ��������@tableNum$6@� �@�����6���2��� ��� ��������@fieldNum$6@� �@����6���@���.��� ���������)loop over all the fields in the table ���6���$��� ������@ @i@�?�������@����6�������� ������@�H���6��� Y .��@ @ItemListI@i�L@�����������6wXtext6������x���  qOJ @InfoText_HTMLAdd< @InfoText_HTMLText @� @tableNum$@fieldNum$�6P@�?��������6�@i6@listRef66�J���8��� @ @ItemListI@i�L@�?�������6wX1 image�(������ �������fill in pictures����j���X��� K��K�� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66wX start tableQ�`���N��� @pictNum6 @�@���������� @i�6P@�?�������66�6�@�?��������B���0��� �P���W@ imageCounti6@ imageCounti�6�@�?�������cu�j���X^ �� �� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66wX start cellT�a���� ��� �s�e�r��picture�������� ���:�= @InfoText_HTMLAdd< @InfoText_HTMLPict � @ItemNameI@pictNum@output_pathname@listRef@ imageCounti@pictNum @ItemListI@i66�d���� ��� �w�F�o�l�caption�e�Z���H��� �p�u�t�_ @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66�A�Z���H��� � ��� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66��Z���H��� �T�e�x�t @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66� �d���R��� �� ��$ @InfoText_HTMLAdd< w� <b>Figure T�6�@�  @ imageCounti6�6�w�:</b> P6�$����~��� �R�e�f�@ imagepath6 @ WordBreak � @ ItemCaption@pictNum@�@�������6wX-trucate string for a single image to 255 char��t���b��� �;�� � @InfoText_HTMLAdd< @�  @InfoText_HTMLText �@ imagepath@listRef6@�@�������66�t�Z���H��� ��(�� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66�x�h���V��� �������� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66wX end table���(������ ��������@�� multiple images���(������ ���������fill in pictures����j���X��� �������� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66wX start table���B���0��� ��������@ @j@�?������� @ItemListI@i6@�V���D��� ��������@pictNum6 @�@���������� @i�6P@�?�������66�6�@j���B���0��� ��������@ imageCounti6@ imageCounti�6�@�?�������@�.������ ��������@ @j�6@�?�������6���n���\��� �������� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66wXspacer in table��������� ��������@���j���X��� �����H @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66wX start cellT������  �picture������� � @InfoText_HTMLAdd< @InfoText_HTMLPict � @ItemNameI@pictNum@output_pathname@listRef@ imageCounti@pictNum @ItemListI@i66��h���V��� �� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66wXend cell6������� ��@�,������ �fill in the captions6�Z���H��� �� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66�J���8��� ��@ imageCounti6@ imageCounti�6P@j�6�@�?��������B���0��� ��@ @j@�?������� @ItemListI@i6�V���D��� @pictNum6 @�@���������� @i�6P@�?�������66�6�@j�B���0��� ��@ imageCounti6@ imageCounti�6�@�?����������.������ ��@ @j�6@�?�������6�n���\��� �������� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66wXspacer in table��������� ��������@���j���X��� �������� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66wX start cellT���Z���H��� �������� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66���Z���H��� �������� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66���d���R��� �������� @InfoText_HTMLAdd< w� <b>Figure T�6�@�  @ imageCounti6�6�w�:</b> P6��P���>��� ���������8trucate string to a length based on the number of images���>���,��� ��������@ @ItemListI@i�L@�@��������6���^���L��� ��������@ imagepath6 @ WordBreak � @ ItemCaption@pictNum@�@�������6��������� ��������@���^���L��� ��@ imagepath6 @ WordBreak � @ ItemCaption@pictNum@�@�������6����$4�@�t���b��� ������ @InfoText_HTMLAdd< @�  @InfoText_HTMLText �@ imagepath@listRef6@�@�������66���Z���H��� ������ @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66��������� @�h���V��� ������ @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66wX end table��������� ������@��������� @�������� ���������� ��� �������logo6���Z���H��� @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66�D���2��� ������@apppath6 @ PM_FindFolder w� Applications66���T���B��� ������@ imagepath6 @ PM_MakePath w�Imagespw�Logo.jpg6@�6������t��� ������@ @ PM_MakePath @apppathw�Logo.jpg6@�6 @ PM_MakePath @output_pathname@ imagepath@�66���������� �� ������ �end page��Z���H��� ������ @InfoText_HTMLAdd< @GetListItemStrd @listRef@�@�������66��������� ��"������ � write file�`���N��� ������@output_pathname6 @ PM_MakePath @output_pathnamew� index.htm@�6���8���&��� @docref6@  @output_pathname6���4���"��� @ @docref��@�?�������6�8���&��� ������@docref6@ @output_pathname6��������� @���H���6��� @  @docref6wX We don't need to keep it open���:���(n@ @output_pathname @htmlBlobh6�2��� ��� @ #@ PM_Platform�L$@��6�X���F��� @ @output_pathname @ HTML_BrowserM6wXsafari sfri, IE MSIE6�R���@��� @ @output_pathnamew�TEXT6wXsafari sfri, IE MSIE6������� @�������� �.������ �open webpage if preview�.������ @ @�L@�����������6�$������ � open webpage�8���&��� @ PM_WebLaunch_ @output_pathname6������� @�������� ���� ��� �cleanup�*������ @y @listRef���6������� @������� @������� @�������� �$������ � cleanup blob陙�6���$��� @^ @htmlBlobh@�����������6InfoText_HTMLAdd< @GetListItemStrd @listRef�@�@������������������r������"�������r����`D write file<��`���N����r����@output_pathname @ PM_MakePath @output_pathname�w� index.htm�@�����8���&����r����@docref_@  @output_pathname�dd�4���"����r����@ @docref_��@�?���������8���&����r����@docref�@ @output_pathname�����������r����@���H���6����r����@  @docref_�wX We don't need to keep it open���:���(����r�@ @output_pathname� @htmlBlobh���2��� ����r�@ #@ PM_Platform�$@�����X���F����r�@ @output_pathname� @ HTML_BrowserM�wXsafari sfri, IE MSIE�R���@����r�@ @output_pathname�w�TEXT�wXsafari sfri, IE MSIEl��������r�@���������r��.�������r�`Dopen webpage if preview��.�������r�@ @�@�������������$�������r�`D open webpage�8���&����r����� @ PM_WebLaunch_ @output_pathname�����������r����@�����������r��������� ����r����`Dcleanup��*�������r����@y @listRef��X�D��������r����@����������r����@����������r����@�����������r������$�������r����`D cleanup blob�6���$��������@^ @htmlBlobh�@����������������������������������������������������������������������DFCC4DJ�,��V���D���� ����8=count true booleans in an array, simple, uses 0 based arrays � �*�������������8-> ptr to array �s�,���������������8<- number of trues �������������������(�.��������������(- (�(arrayPtr����0�����������( (��(count(i��&�����������(arrayPtr� (�(���,�������f�(count(�����������(���������f�(�F���4��������d((i(�����������((arrayPtr��0�����������///((arrayPtr�(i��8���&��������(count(count��@(�?�������(��������������g((�������������((s������������(\�"�����������TH. (��(count(����������������������������������������������������������DFCC4D.r��Z���H��!�� ��,�7dCUpdate the current dates based on the folders in the output folder.ME�������������������<���*�����������]%��@���������output_pathname�� ��������������"����������������7d get folder����^���L��������{{]output_pathname � PM_MakePath �Run_PathR��� CURRENT.DATE�����{��������������������<���*��������0001�7d$check folders for current.date files12�>���,��������EMak]��output_pathname���$�������8���&������������]���� � Run_To_Date����������"�����������]�5�����������������]������������������������������������DFCC4D9�1�$����� �� ����8 run nov30 <�ay�$��������������((diag����8���&�����������(%(�@�������( diag_path���*������������ ��(2( docref_full�"��������������((pos_T�$���������������((iteme�����������������[� �����������<�8setup ��a�.���������������( diag_path ( InputPath(������������������((�*�������˞�7���8set nov30.I file ��V���D����˞������8=dunno what the land file is called, need to check this first ����N���<����˞�����((( diag_path��@� FOR026.DAT,�@$(�����R���@����˞�����(diag( diag_path��@� FOR015.DAT��@(�Z$(��& f�^���L����˞�����(diag&(diag&��@( diag_path��@� FOR025.DAT&��@(�Z$(��&���^���L����˞�����(diag&(diag&��@( diag_path��@� FOR026.DAT&��@(�Z$(��&����������˞�����((�N���<����˞�����(diag&( diag_path��@�fort.15��@(�Z$(��&���Z���H������������(diag&(diag&��@( diag_path��@�fort.25��@(�Z$(��&ew�Z���H������������(diag&(diag&��@( diag_path��@�fort.26��@(�Z$(��&ur����������������((s�^���L������������(diag&(diag&��@ ( OutputPath���@� tg_arrays��@(�Z$(��&���^���L�����������(diag&(diag&��@ ( OutputPath���@� nov30.prt��@(�Z$(��&�����������������\�:���(�������������8!write out the .I file and launch �if�N���<������������ (OHT_SaveAndLaunch(diagS�nov30.I�nov30����������������������������������������������������DFCC4Dd�.���P���>��^�� ^����87Save the set into a text variable and then into a file �rs�(��������������( (saveData�����������������\�8���&��������H(#(SetArray��@(�������������������������(�&������������8 combine data �Pt�T���B����������� (saveData�(������@(�Z$(��&�@(�@������������x����������� (saveData� (saveData���@���Summary:���@(�Z$(��&��@(������@(�Z$(��&�@(�@��������av�r���`����������� (saveData� (saveData���@���Detail:��@(�Z$(��&��@(������@(�Z$(��&(������������ff(�(����������������8save and clear �30�B���0������������ (RundeckViewer_WriteToFile (saveDatai�(���������������(�Y (saveData������������������((��������DFCC4DsH�o'�:���(����������": call search based on name typed "���@���.������������ IBC_Query�@������������4�L���:�����������#DragTransferFilename�?������� IBC_Query_�R���@������������# InfoPict_Ptr�#DragTransferFilename�?�������� �6���$���������d�d#InfoPict_Button�@����������2��� ���������d�dI#InfoPict_ProcessID����������������������������DFCC4D@�8 �$�����"R��!R��,�2 run vertflux���"������������]�diagx��h�6���$�����������]%��@��������� diag_path����(��������������]2� docref_full��� �����������]�pos���"��������������]�itemx�@!�6���$��������EMak]� � modelgrid���@�������������������������� ����� ���������a�r�2setup��,�������������] diag_path � InputPath�r�6���$����������� ]GetModelAndGrid � modelgrid�����������������*������������2set vertflux.I file1�^���L��������]diagx�� ��� �������� ������?������������Z$���&��H���6���������] � modelgrid��@����������|��@���������JJ�F���4��������111]diagx�diagx����8x10�����Z$���&�������������]�H���6��������]diagx�diagx����7.8x10����Z$���&�����������T����]���x���f����T�]diagx�diagx��� diag_path����ocean�� �PathCharP���� OceanFlux����Z$���&��L���:����T�]�� diag_path���� FOR026.DAT���|$�����\���J����T�]diagx�diagx��� diag_path���� FOR015.DAT����Z$���&����\���J����T�]diagx�diagx��� diag_path���� FOR026.DAT����Z$���&���������T�]�X���F����T��o�c]diagx�diagx��� diag_path����fort.15����Z$���&��g�X���F����T�]diagx�diagx��� diag_path����fort.26����Z$���&���������T�� �9]�9�V���D����T��L�a]diagx�diagx�� � OutputPathu����VFX����Z$���&��l�X���F����T�����]diagx�diagx�� � OutputPathu����AVFX�����Z$���&����X���F����T��o�n]diagx�diagx�� � OutputPathu����XCORR����Z$���&�� �^���L����T�� �B]diagx�diagx�� � OutputPathu���� SRCOR.value����Z$���&��e�`���N����T�� � ]diagx�diagx�� � OutputPathu���� vertflux.prt�����Z$���&�� ���������T��t�i]�8���&����T����2 write out the .I file and launch�.h�T���B����T��f�" ]OHT_SaveAndLaunch�diagx��� vertflux.I���vertflux���c����������������������������������������������DFCC4D+?��H���6��%��$��gS1Validate ensures that the fluxes can be processedDO���� ��������S input���b���P���������SJ isDeep, should the deep ocean checks be used instead of the qflux checks���*�������*�����p1 @��@isDeepD����� ����H�����@1 @������@���.���������@%@�@��������@path��@temppath$��>���,���������@@listRef�@ error_num�@curYear��#�J���8����^�����@�@�@�������� @ RundeckErrors�@�@�����������"������������@isDeep�~ @����(�������l�����@pathe~ @Run_PathR�������������������.�������l�����Ssave record if modified���(��������T@@:@��� �����"�����������X@�5@��� �����������2����@on���������²�)))%� ��������)))%S load list�6���$����0�lj@listRef~@w�l Flux Errors���T���B��������# @ RundeckTitlen~ @GetListItemStr~@listRef�@�?���������S�R���@������� @ RundeckDesc~ @GetListItemStr~@listRef�@�@����������t��������������E�r�r�(�����������Saccumulate errors���.���������������@ error_num~@��������������:���(���� ���g@@@path�����@������������NT�>���,��������????@ error_num~@ error_num�~�@�?�������99�|���j����������� @ RundeckErrors�@ error_num~@� @ error_num��~� @GetListItemStr~@listRef�@�@������������������������@���6���$�����������@@ error_num�@���������������L���:�����������@temppath$~ @ PM_MakePath@patha�w�locean�@����8���&�����������@@isDeepe�wO8deep ocean check~�<���*��������EMakS%sample file DEC1936.odaControl2_02pC9`�|���j������������@temppath$~ @ PM_MakePath@temppath$�w�lDEC�~�@� @�� ����~�w�l.oda.�~�@�����@�����8���&������������@@@temppath$����$@������>���,����������@ error_num~@ error_num�~�@�?����������|���j����z�lj @ RundeckErrors�@ error_num~@� @ error_num��~� @GetListItemStr~@listRef�@�@��������j������������ll@���$�����������ln@�� qflux check�T���B��������lj@temppath$~ @ PM_MakePath@temppath$�w�l OceanFlux�@���8���&��������ll@@@temppath$����$@������>���,��������ln@ error_num~@ error_num�~�@�?�������l�|���j��������lj @ RundeckErrors�@ error_num~@� @ error_num��~� @GetListItemStr~@listRef�@�@��������j������������ll@��������������ln@�����������n�$��,�����������pSdon't require kbasin~���D���2��������(S,If (Test path name($path+":ocean:kBasin")#1)���0�����������S$error_num:=$error_num+1��`���N��������SIRundeckErrors{$error_num}:=String($error_num)+GetListItemStr ($listRef;5)���� ��������SEnd if �����������������J���8��������`@temppath$~ @ PM_MakePath@patha�w�lrsf�@���r���`������l��@@@temppath$�~�w�lNOV�~�@� @�� ����~�w�l.rsf.�~�@��������$@�����>���,��������ll@ error_num~@ error_num�~�@�?�������l�|���j��������ln @ RundeckErrors�@ error_num~@� @ error_num��~� @GetListItemStr~@listRef�@�@��������n������������lq@���:���(����X�lj@@ @Start��@�������������>���,��������ll@ error_num~@ error_num�~�@�?�������l�|���j��������ln @ RundeckErrors�@ error_num~@� @ error_num��~� @GetListItemStr~@listRef�@�@��������n������������lq@���(��������$ @Run_Critical_Begin~�X���F��������p@@�#@ RunDateArrayu�#@RunNumberArrayz��~@�@���������L���:��������(@curYear~@�#@ RunDateArrayu�#@RunNumberArray~�������������@���^���L��������@curYear~@�#@ RunDateArrayu�#@RunNumberArray~��~`@�?�������������������@���&����������� @Run_Critical_End�.�����������`@@curYear�wl@�� ����>���,���������� @ error_num~@ error_num�~�@�?��������h�|���j��������� � @ RundeckErrors�@ error_num~@� @ error_num��~� @GetListItemStr~@listRef�@�@����������������������E�r@�o��������������I@� ��������������� ����� ��������� � Scleanup�a�6���$���������E�r@@ error_num�@�������������n���� ����������I @��~@��(�������������� @�$�*������������� Scleanup array listL� �j���X��������� � @� @ RundeckErrors�@ error_num�~�@�?��������@�@��������~`@ error_num���&������������E�rSerror dialog ��>���,����������I@�7@������w�lRundeck Errors����e�������������� @�@��~`@�@���������@�@���������@��~`@�@���������@�@����������~`@�?���������~`@�?��������$@�'��w�l�~���8���&�����������@�(@������w�lRundeck Errors���������������@����� �������� @��~@���������������@�$�����������@y@listRef��*�����������@�Y @ RundeckErrors��*������������� @�Y @ RundeckTitlen�� �(������������ � @�Y @ RundeckDesc��u��������������������������������������������������������������DFCC4D ]Lw�@���.����������"0'convert a text field to the final text "�<�<���*�����������"0#pass in the field to use & listRef "���(���������������-Z �ZsrcZZ�,������������d�dZ �ZlistRefZZ���*�������V`�d�dZ ��ZlocalZZna�$������������d�dZcrPosZZ�2��� ������������%Z�@�������ZcrZZ� ������������d�dsrcZ Z�Z �$������������d�dlistRefZ Z�Z��������LD�d�dZ�<���*�����������QZ�ZsrcZZ�Z@Z�����������ZZ���&�������^P����localZZsrcZZ�,�������c����cr"ZZ�ZZ$Z��&ZZ��6���$����s4`����crPosZZ�ZZcr�ZZlocalZZ���4���"������������ZcrPos�Z@Z�����������ZZ �>���,����Su K�"0%$local{$crPos}:=String(Char(Space )) "���@���.���������GlocalZZ�ZZlocalZx� ZZcrPosZZ o�F���4���������GlocalZZ�ZZlocalZx�</p><p>ZZcrPosZZ���6���$����y1 �GcrPosZZ�ZZcr�ZZlocalZZSt���������������������������������J���8���������G ��Z ZGetListItemStrNZZlistRefZZ�@�������ZZ��^���L����r@���� ��Z Z���Z�@Zlocal�Z�@ ZGetListItemStrNZZlistRefZZ�@�������ZZ����������y����� ��������������� ��Zx��Zxf�������������G_I��������te��������������������������������������������������DFCC4D3���:���(��&\��%\��gS#open simulation window to edit runsNT�f���T��������S SOthis first call to this does some housekeeping instead of launching the process A������������V��S������ ��������TAT S inputMM�F���4��������S S. optional (if passed do not close the window)iT�2��� ������������#@Simulation_ProcessID(����X���F�����������#@Simulation_ProcessID8~ @Process_Number~w�lSimulation Window��������������������������������������@���B���0��������@#@Simulation_ProcCount(�@������������ix�r���`������������#@Simulation_ProcessID8~@=w�lSimulation_Process�#@ StackSize�w�lSimulation Window����B���0������������@#@Simulation_ProcCount(�@�?��������� �@���.������������ @Restart_Process#@Simulation_ProcessID(���6���$����������@I#@PostProcessing_ProcessID� �2��� ������������@I#@Simulation_ProcessID(����B���0������������@#@Simulation_ProcCount(�~@�?���������J���8��������d@@J#@Simulation_ProcessID(��~@�@���������@���.������������ @Restart_Process#@Simulation_ProcessID(�������������������@��B���0������������S+close front window or bring window to front� �@���.������������@@@��#@Simulation_ProcessID=�� �.������������L@@�@���������������>���,������������ @ Generic_Close#@Simulation_ProcessID(������������������@������������������@���2��� ������������@F#@Simulation_ProcessID(�������������������@��������������� @������������������@����������������������������������������DFCC4D K�>,�`���N������������8FAdd records to the database for files that are not already contained. ����L���:������������82Remove records in database where there is no file �L�d���R���������8KSince the output folders assume type the files get an automatic type based ��*������������8on what they are �� ����������������8 input �rc�0���������������8 folder type (longint) ���.�����������ff�8 ptr to run number ����.����������������8 ptr to file names ����J���8������������80 ptr to folder path # folder name in this case ��0��������������� ��� folderTypef��^���L���������- �� �� ��� runNumberPtru�filesPtr$� folderPathPtr���F���4��������������cmCount� fileCount�fPosC�pos�J���8����������������@�������� cmFilenames�������������(���������������� folderTypef ������*���������������� runNumberPtru ���na�&����������������filesPtr$ ���Z�*���������������� folderPathPtr ���Z�����������������&�$����������������8 do queries �L{�@���.����������������� ����� ���@� folderTypef&�D���2�������������U���� ����� ���@� runNumberPtruK�0����������������cmCount��L���� �� e�8���&������������� fileCount��filesPtr$sI����������������&�.����������������8scan for duplicates ����6���$��������������cmCount�@�������������&����������������&�(����������������8build and sort ����R���@���������������� ��� cmFilenames���� ���cmRecordNumbersnd�>���,��������������� cmFilenames�cmRecordNumbers���*������������������ cmFilenamesZ�*������������������filesPtr$���,����������������fPos��?���������������������������&�^���L�������������8Escan both arrays, move the mark down as files are matched to records ����:���(��������������i��?��������cmCount� �T���B�������������pos���filesPtr$� cmFilenames�i�fPosl���2��� ��������������pos�@���������������4���"�������������filesPtr$�pos\�:\���6���$�������������fPos�pos��@��?�����������2��� ������������� cmFilenames�i\�:\(�2��� ��������������fPos�@� fileCount���6���$�������������i�cmCount��@��?��������������������������ut������������������1������������������ba�����������������������������������(�&����������������8 add records ��ma�<���*��������������i��?�������� fileCount���:���(��������������filesPtr$�i�@\�:���$�����������������D���� ��sc�,������������������ ��� folderTypef����0������������������ ��� runNumberPtru��4���"��������������� ���filesPtr$�i���>���,��������������� ��#� CM_FoldersC� folderTypef���$�����������������5���� ��ro������������������8������������������E�����������������(�2��� �������������8delete unmatched records ���:���(��������������i��?��������cmCount(�:���(�������������� cmFilenames�i�@\�:�@���.������������������ ���cmRecordNumbers�i���$����������������:���� �� k�������������������������������������� s������DFCC4D�M�$�����'��&��b$ open cleanup��n���\���������� Generic_OpenReopen �#@Cleanup_ProcessID�w�Cleanup Window�w�Cleanup_Process���������������������������DFCC4D}'�,z��b���P�� ]�� ]���8HThis is a replacement for CopyFiles that handles multiple input folders ��am�d���R������������8Jmuch better. Basicly it searches a list of folders and the first one that @���2��� �������8contains a file is used. �� �����������n:Ed�8 input ��.����������������8 ptr to folder list ����0������������8 ptr to input folder ���0������������8 ptr to output folder ���&��������RR�8 input name ��.��������wfN�8 output unit number ����B���0���������8( output name (used if unit number = 0) ��"�������������8 output l�or�8���&������d�8 boolean (suceeded or failed) �ns�V���D�����(- (� (� (�( folderPtr( intputPtr( outputPtr&�J���8��������RR(%(�@������� (�(filename�(outname�0�����������lll}( (�( unitNumber� f�0���������������( (��@(�����������en�<���*������������(%(�@������� (�(outname�����������������(( s�B���0��������[R(%(�@�������(inpath�(outpathca�,���������������((len(foundy�� ���������������(1 (��tr�&��������������( folderPtr (�(Z�&��������������(inputPtr� (�(��&���������������( outputPtr (�(��&������������ ��(filename� (�(�(���������������( unitNumber� (�(��:���(��������3333(( unitNumber��@(�����������er�$��������������(outname (�(rT����������������((������������������((�^���L�������������8Dcheck that there is a file to copy, length 6 is 1 + 5 = .grnd + " " ����@���.�����������((�(filename��@(�@�������il�������������������6���$��������2����8find folder with source file � t�2��� ������������(len(( folderPtr f�(���������������(i(�?�������(���"�����������(done�(�(����������������((E�^���L�����������(inpath� ( PM_MakePath(inputPtra( folderPtr(i(����V���D�����������(found( ( PM_MakePath(inpathe(filenamea(�Q�0���������������(i(i��@(�?�������(le�H���6������������ ((i�@(len� @(found�@$(��������������������8�:���(�������������8 copy file if source file exists l��.���������������((found�@$(�����R���@������������(( unitNumber��@(�����������⌌copy fortran style ������v������������ (PM_CopyFortran�(�?�������(filename�(inpathm(�����������( outputPtr( unitNumbert(����(���������������(\_t normal copy Z\������t������������( ( PM_MakePath(inpathe(filenamea(� ( PM_MakePath( outputPtr(outname(��@������������������((ss����������������((8����������������((� ����������������8return �du�.���������������((found�@$(�������� ������������ (��(�(������������������((ba���� ������������ (��(�(������������������((������������������((������ ������������ (��(�(������������������(('t������������DFCC4D��4���"����������� � FinderToPathn \�Images  ���������������� (����������������������������������DFCC4Dk6h �8���&��'��&�� FinderToPathn w� Applications�ZR����������������������������������������������������DFCC4D�:�`+�(�����!�� ��,�7dUAM_AuthenticateTX����n���������7dQThis checks if the user has admin privlidges for an action. If they do not they a�7dre given the option���\���J����8��� �7dEto enter the admin password for onetime permission to take an action.�s��������6��7d�z���� ��������MUTX�7d input0������ ������������7d none0���� �������������7d output���J���8���������7d2 boolean (did they get the authentication needed)������ �����������]1 ���������� ��������EMak ]����ze��������������������,�����������]#� UAM_Admin��������� ������������ ]����������������111]��������������]������@������������@��������������@������������@���������������@������������@���������������@������������@���������$��"���>���,��������]� �UAM_GetListItem��@����������F���4��������RRR#] UAM_Message �UAM_GetListItem��@����������2��� �����������#]UAM_privateOneTimeAuth����.�����������]�(���������Login����������������]���2��� ��������#]UAM_privateOneTimeAuth����0�����������] �OK����?������������ ������������ ]������������������]����������������]����������������������������DFCC4DG��6���$��!6�� 6��,�7dScript to Write_Input_Forcings���f���T�����������7dNThis script creates the forcings namelist for a modified Model II rundeck. Thel�{�f���T������������7dNindidivual trends record the base value, the data file (if any) and the lengthl���f���T���������7dNof the data file. This is done for every trend, but the data file is generatedl�d���R�����ds:H�7dLelsewhere. So if the person changes the trends after the start of a run the @ B�d���R����������7dMresults will be inconsistent. This requires the new namelist used in modified���*���������g� �7dcopies of Model II.�i�����������:�7d�z��b���P������m�a�7dKAfter many tries the new forcings code in the model finally works right. I s@�d���R����������7dLreplaced Jim's A Trend with DataFileTrend which uses data files or constants@en�h���V����������7dPin memory to replace the old hardcoded trend files. Solar uses a different trend���f���T������� �7dNcalled SolarForcing because S0X is not in the fulgas array. S0X and CO2 can bel��d���R����������7dLset without using any trends. So the trends are only triggered for trends or@ l�f���T����������7dNchanges to SO4, N2O, CFC11 or CFC12. Changes are registered versus PPMV58 not ltR�d���R����������7dMversus the 1958 values returned from the interface, which are newer than the hu�.�������������7d1983 version of PPMV58.g,��������������7d�zix�X���F��������7dAFixed bug with solar trend where it wasn't written out correctly.�o�6���$������� �7d*******************************th����������������6���$����������7dload list for reference values�� �"������������]1�trend���$������������]�listRef����6���$���������]%��@���������valueStr$�21� ������������]trendY���2��� �������]listRefY���PPMV58��s����������������P���>��������7d9check if there is a trend based on the following criteriaor�0�����������7d1, trend value is checked58�f���T����������7dN2, value deviates from 1958 value and the gas is adjusted by DTDX1D, DTDX3D inl���8���&���������7d Forget in RFRC code in the model����\���J�������]��U���� p������ p������ p��'���� p��1���� p��C�����m� ����������]trendY���(�������������]v�P���>���������]valueStr$Y �GetListItemStr@�listRef���@���������������������������<���*����������7d%temp disable check for altered values���8���&���������]������,��� �valueStr$����� ������������]trendY�����������������]v�P���>���������]valueStr$Y �GetListItemStr@�listRef���@������������8���&���������]��&����,��� �valueStr$����� ������������]trendY�����������������]v�P���>���������]valueStr$Y �GetListItemStr@�listRef���@�����������8���&���������]��0����,��� �valueStr$����� ������������]trendY�����������������]v�P���>���������]valueStr$Y �GetListItemStr@�listRef���@�����������8���&���������]��B����,��� �valueStr$����� ������������]trendY�����������������]y�$������������]y�listRef�������������������h���V����������7dPheader and trend setting, complicated logic to check if values match what I need����`���N�������]����Y������Y���Z$���&��Y��� &FORCINGS �Y���Z$���&�� � ����������]�trend�� �B���0����������7d*enable trend, I use trend 1 at the moment �Z�P���>���������]����Y������Y��� KTRENDEXT=1, �Y���Z$���&����������������]�������������������������������7dCO2�� ������������]��������J���8�������]����Y������Y��� ICO2DATA=200,ICO2DATASTART=�:����z�������]����Y������Y���  �Rundeck_ForcingsLength��������������������� �����������������������������]����Y������Y��� ,ICO2DATAEND=�Y���  �Rundeck_ForcingsLength�������������Y���@���������������� ������������������Y���,�o�����������]�[��������������*�������������7dNitrous Oxide(ZN2O)�Z�H���6���������]����Y������Y���Z$���&��Y��� ZN2O=���L���:�������]����Y������Y� �Rundeck_DecimalFormat�������=� ����������]������� �H���6�������]����Y������Y���IN2ODATA=201,IN2ODATASTART=�����z�������]����Y������Y���  �Rundeck_ForcingsLength��������������������������� ������$�����������������]����Y������Y��� ,IN2ODATAEND=�Y���  �Rundeck_ForcingsLength�������������Y���@����������������������!������%������Y���,�o�����������]�[��������������$�������������7d Methane(CH4)��Y�H���6���������]����Y������Y���Z$���&��Y��� CH4=���L���:���������]����Y������Y� �Rundeck_DecimalFormat��&������� ������������]��'������H���6�������]����Y������Y���ICH4DATA=202,ICH4DATASTART=�����z�������]����Y������Y���  �Rundeck_ForcingsLength���������������*������������������������+�����������]����Y������Y��� ,ICH4DATAEND=�Y���  �Rundeck_ForcingsLength�������������Y���@����������+������������������������Y���,�o�����������]�[�������������� �������������7dCFC(F11)���H���6���������]����Y������Y���Z$���&��Y��� F11=���L���:���������]����Y������Y� �Rundeck_DecimalFormat��0������� ������������]��1������H���6�������]����Y������Y���IF11DATA=203,IF11DATASTART=�����z�������]����Y������Y���  �Rundeck_ForcingsLength���������������4������8������<������@������5�����������]����Y������Y��� ,IF11DATAEND=�Y���  �Rundeck_ForcingsLength�������������Y���@����������5������9������=������A������Y���,�o������w�����]�[�������������� �������������7dCFC(F12)���H���6���������]����Y������Y���Z$���&��Y��� F12=���L���:���������]����Y������Y� �Rundeck_DecimalFormat��B������� ������������]��C������H���6�������]����Y������Y���IF12DATA=204,IF12DATASTART=�����z�������]����Y������Y���  �Rundeck_ForcingsLength���������������F������J������N������R������G�����������]����Y������Y��� ,IF12DATAEND=�Y���  �Rundeck_ForcingsLength�������������Y���@����������G������K������O������S������Y���,�o������w�����]�[��������������"�������������7d Solar(S0X)���� ������������]��U������^���L�������]����Y������Y���Z$���&��Y��� IS0XDATA=205,IS0XDATASTART=�l����z�������]����Y������Y���  �Rundeck_ForcingsLength���������������X������\������`������d������Y�����������]����Y������Y��� ,IS0XDATAEND=�Y���  �Rundeck_ForcingsLength�������������Y���@����������Y������]������a������e������Y���,�o������w�����]�[��������������p���^��������]����Y������Y���Z$���&��Y��� &END�Y���Z$���&��(l��@�����������������������������������������������������DFCC4Dd��^���L��%��$��gSFdelete current record, will not delete the last record in the database0N�\���J��������Q��SDalso will not delete admin user account because that one is required*��������������������:���(������������@�S@�������*@�?�����������&��������������Scheck for admin���.��������������@@�������w�lAdmin���:���(��������o{kZS#check if they want to delete a userkZ�H���6����������� @Alert_ParamText@�����w�l�*�w�l�*�w�l�*��j���X������������@ @ Alert_Alert@�?��������@�@��������@�?���������@�?������������� ��������Sdelete �"�����������@�:@������������������������&�����������Sclear password�"����������� @vPswd*w�l�*�*����������� @ vActualValuec*w�l�*�2��� �������� @ vlastPosition*@������������$�����������111 @vPswd2�*w�l�*���*����������� @ vActualValue2*w�l�*�4���"�������� @vlastPosition2z*@������������������������RRR1�"��������������S remake list�"�����������@�/@�������F���4�����������@@����� @ arrColVarsr�@�?���������R�<���*��������@ @userColsu�@�?���������*��6���$��������@ @userColsu�@�?���������6���$�������� @UAM_Editor_MatchSelection��w������������@����������������@���R���@������������ @ Alert_Alert@�@���������@�@��������@�?��������������������������@������������������@���R���@������������ @ Alert_Alert@�@���������@�@��������@�?��������������������������@������������������������������������DFCC4DA�U1�X���F��������5F>This code converts an XML list into an array based on what is ,&�$��������������F passed in \�� �����������LF input �(��������������F ptr to array g �.���������������F string, ref to XML ���.�����������- �arrayPtr@���V���D��������%�@������� � xml_Array_Refxml_Element_Ref��(����������� xml_Valuein�$���������������counts �&���������������arrayPtr@ �ns�*��������������� xml_Array_Ref ����,���������������count�?��������������������������<���*������������F"get the first element of the list p- �@���.������������xml_Element_Ref xml_Array_Ref_T�2��� ������������ OK�@�?��������<���*������������xml_Element_Ref xml_Value[�D���2������������F*append to array if necessary to add value �t@�<���*������������arrayPtr@�@count���4���"�������������arrayPtr@count�������������������0���������������Fadd value and move on �,�L���:������������ XML_TextTo4D�arrayPtr@ xml_Valuecount���8���&������������countcount��@�?��������B���0������������xml_Element_Refxml_Element_Ref r����������������������������������������������������������DFCC4D�W7�8���&��^�� ^����8delete a record from infotext ����"��������((pos������������X�J���8����6� (Alert_ParamText(��������������D���2����@�8 ( Alert_Alert(�@��������(�@���������2��� ����ƞ�����( (OKL�@(�?��������0�������^����D�8set get info & delete ���H���6�����������L(pos(�#(JournalIDArray�(�(�����?P�$�����������(�:(������*�������j�����8remove from list �t �2��� ��������((pos�@(������������6���$�����������X(�#(JournalIDArray�(posue�4���"���������s(�#( JournalArray�(posli������������((��������������EEE(�F���4��������#�8-check how many records, close if last record ��$�����������4(�/(������<���*��������:((�S(������@(�����������al�>���,������������(�\_t kill process if no records left \������������������((���4���"������������#( JournalArray�(�?�������(��6���$������������#(JournalIDArray�(�?�������(ml�J���8������������(�(�����#(JournalIDArray�(�?�������me�*��������������� (InfoText_LoadRecord(������������������((����������������((y������������������������������������������������������������DFCC4D;x�2��Z���H���� ����7d@delete subrecords just to be safe, not required but might help ��� ����������������7d input �ad�2��� ������������7d ptr to subrecord table ��,��������������(- (�(subPtr�f �,������������ ��((i(numSub����$�����������(subPtr� (�(������������((�(��������Z^(�m(subPtr��4���"���������(numSub�(�(subPtr��6���$��������c((numSub��@(��������������:���(��������((i(�?�������(numSub����(�����������(�m(subPtr����(�����������(�=(subPtr����(���������������(�`(subPtr�������������������((����������������((������������������(������������DFCC4D2(��.�����n��n��(�7dsends email to Mark ����<���*����2���� (WebAndMailLauncher�(�@���������DFCC4D�@< k�P���>��%��$��gS9this manager keeps the sections up to date in the toolbarXT�&�������������� @ windowRef����(�����������@ @ windowProci����*��������������@ @ oldWindowProc��������������000100������������EMak@ S�(���������������@@�$@������"��������������� @ Toolbar_Loado���2��� ���������� @ oldWindowProc%@������������ �(������������r�n@@�@����������(������������ � @@�$@�� ��D�l���Z����������@#@RunListReinitToolbar(�%@������������wO8%re init run array if runs are deleted��&�������������FSRunArray_Init ��@���.���������� @Run_UpdateListz) @RunNumberArrayHier%��t�:���(���������n�_#@RunListReinitToolbar8%@��������������������������@�n�$������������� @Toolbar_Updatez�i�(���������������@@�$@�����b���P������������SJupdate run list every two seconds, recheck running runs every five seconds���F���4������������ @ RunAlternaten% @ RunAlternaten�%�@�?����������R���@������������@@�b @ RunAlternaten�@�@���������@���������������*�����������#@Run_Run_Recheck%@�֡����������������@ R�R���@������������@@�b @ RunAlternaten�@�@����������@���������������@���.������������ @Run_UpdateListz) @RunNumberArrayHier%�������������������@ w�<���*������������S$show/hide sections linked to windows%he�$��������������� @ windowRef%@�@���.������������@� @ ToolbarStateo�@ToolbarStateCache����6���$������������@ @ windowRef�%@������������n_�6���$������������ @ windowProci%@ @ windowRef�@�t���b������������@ @ windowProci�#@Simulation_ProcessID=��x  @ windowProci�#@Rundeck_ProcessID�����F���4������������ @Toolbar_Disclosure%w�lESim7�@�?��������������������������@���F���4������������ @Toolbar_Disclosure%w�lESim7�@�@���������������������������@T�>���,������������@ @ windowProci�#@Control_ProcessID����D���2������������ @Toolbar_Disclosure%w�lSim�@�@���������������������������@���D���2������������ @Toolbar_Disclosure%w�lSim�@�?��������D����������������@T�v���d������������@ @ windowProci�#@PostProcessing_ProcessID��x  @ windowProci�#@Sets_ProcessID������F���4������������ @Toolbar_Disclosure%w�lSets7�@�?��������������������������@���F���4������������ @Toolbar_Disclosure%w�lSets7�@�@���������������������������@T�@���.������������@ @ windowProci�#@InfoPict_ProcessID%����D���2������������ @Toolbar_Disclosure%w�lIBC�@�?�����������F���4������������ @Toolbar_Disclosure%w�lIBPI7�@�?��������������������������@T�D���2������������ @Toolbar_Disclosure%w�lIBC�@�@������������F���4������������ @Toolbar_Disclosure%w�lIBPI7�@�@���������������������������@T�@���.������������@ @ windowProci�#@InfoText_ProcessID%����J���8������������ @Toolbar_Disclosure%w�lEJournal��@�?�����������F���4������������ @Toolbar_Disclosure%w�lJList�@�?��������������������������@T�J���8������������ @Toolbar_Disclosure%w�lEJournal��@�@������������F���4������������ @Toolbar_Disclosure%w�lJList�@�@���������������������������@T����������������@T�F���4������������ @Toolbar_Disclosure%w�lESim7�@�@������������F���4������������ @Toolbar_Disclosure%w�lSets7�@�@���������nt����������������@�P���>������������S8if the front process has changed redraw the front window����:���(������������@ @ oldWindowProc��� @ windowProci�������������������@���2��� ������������ @ oldWindowProc% @ windowProci������������������@T�(���������������@@�$@������*��������������� @Toolbar_ResizeRunListet�(���������������@@�$@���ec�@���.������������S(this is a hack, reset the selection once���0���������������@ @ToolbarResetSelection����.���������������@���w�l List_List����0��������������� @ToolbarResetSelection%@������������������@������������������@������������������������������������������������������DFCC4D)r+X������ b��b�������n������������7dQhandles the list box in the user manager window, both loads the list and handles �7dchanging records �����������������7d �� ����������������7d inputp��� ������������ ��7d nonep��� ����������������7d output�� ������������7d nonep�� ������������\\���*�����������\���$�����B�F���4����������7d,load in the whole table used to list things ���6���$��������111\� �userID������������������J���8��������\���@�������� � arrColNames������������������N���<������������\���@�������� �arrHeaderNames@������������������:���(�����������\ � arrColVarsr������������������<���*��������\ � arrHeaderVars������������������:���(��������\� � arrVisibler������������������8���&��������\ � arrStyles�����������������,�����������\ � userColsToSet������������������.���������������7dload in data to table�������z��������\@ �userColsu� � arrColNames� �arrHeaderNames@� � arrColVarsr� � arrHeaderVars� � arrVisibler� � arrStyles���{�$�����������\�/����������H���6��������\������ � arrColVarsrO��?�������M�����>���,��������\ �userColsu���?��������� �������������������j���X�������������7dPselection cannot occure here becuase this is too early and the load code for the�����f���T�������������7dLpassword fields has not happened yet, so setup a timer to perform the action@����4���"������������ \ userColsToSet��?���������X�*���������������\��@������������*���������������\���$��������0��������������� \UAM_Editor_MatchSelection\ ����������������\\������������������������������������������������DFCC4DBC�2�>���,��'��&��b$&calculate the amount of space avalible����������������b$������� �����������b$ input�.��������������b$ space in bytes (real)����� ������������b$ output���4���"�����������b$ string of space as MB or GB���������������n��(����������� @��@space�@�.�����������@% @�@�������� @���� �����������@space @�����������������6���$��������@space@space�@�@��������2��� �����������@ @space�@�@ �������������������� @��@�  @� @space�@�@ �����������w�.��@�  @� @�  @space�@�@ ���������@�@�����������w� GB���������������� @�$�<���*����������� @��@�  @� @space����w� MB��������������@JJ""v������������DFCC4D5�,z��^���L�� �� ���( (�}9this contains the type of rundeck that should be written ���b���P���������8Iif User_Modified_Rundeck is true then it will not over write the rundeck �"�@���.����p�����8'this finds the path to the runs folder �"�>���,������������(%(�@�������(output_pathname���.��������������((temp_name_list����&�����������H(2(docref�"����������������"�4���"������������(output_pathname (Run_Patha(�b���P������������(output_pathname ( PM_MakePath(output_pathname�fort.110�(������������������"�F���4������������(((output_pathname�@(�?����������.���������������(�(output_pathname������������������((s�:���(������������(docref�( (output_pathname���:���(������������((output_pathname�R*ch���4���"������������(#( PM_Platform�@$(�����b���P������������(�g(docref�(�(����(�Z$(��&(�Z(�@������������������������((���8���&������������(�g(docref�((����li����������������((wP�&���������������( (docref������������������������DFCC4D4:�D���2����N[��"0+create a link by saving the necessary info "_�"�������| |celmcc��������|CPL%c�B���0����������cc SearchList�c�c@c�����������cc���$�������kF����"0 size array "��B���0����������elmccc c LinksListc�c�@c�?�������c��0�������R�����c LinksListcelmcc��4���"��������|D�c LinksListTypecelmcc�6���$������������c LinksListFieldJcelmcc���4���"���������d�d�c LinksListWordcelmcc\�(�����������B@"0get field info "���>���,����kC5 LinksListFieldJcelmcc c FieldListc���>���,��������N LinksListTypecelmcc c SearchType�c���>���,��������k LinksListWordcelmcc c SearchWord�c���,�����������B"0create info field ^"h+��������P=������8���&������������cc cLinkMode@�c@c�?�������cc"�H���6������������ LinksListcelmcc c FieldListc c FieldListcc�8���&��������{ cc cLinkMode@�c@c�@��������ccs�:���(����zM���� LinksListcelmccx�eJournal�x?������������Ctm�����������������X���F��������l cc c LinksListTypeccelmcc�c@c�?�������zTX starts with �zB@�X���F��������D� LinksListcelmcc c LinksListccelmc�c�@x� starts with x���N���<������������cc c LinksListTypeccelmcc�c@c�@��������zTXis z���P���>������������ LinksListcelmcc c LinksListccelmc�c�@x� is cx�L�T���B�����������cc c LinksListTypeccelmcc�c@c�@��������zTX contains z���V���D������������ LinksListcelmcc c LinksListccelmc�c�@x� contains ;x���V���D����������cc c LinksListTypeccelmcc�c@c�@�������zTX ends with �z���V���D��������s` LinksListcelmcc c LinksListccelmc�c�@x� ends with xl������������hiob�`���N������������ LinksListcelmcc c LinksListccelmc�c�@ c LinksListWordccelmccis��������z8P��������������DFCC4D o�6R�J���8����������"01This clears the list of variables used for links "�(���������������Y? LinksList??���,����������������Y? LinksListType??h+�.����������������Y? LinksListField??���,�����������l wm�Y? LinksListWord??��H���6��������?�@�������? LinksList?�����������??�<���*���������? LinksListType?�����������??���>���,���� ~�? LinksListField?�����������??���L���:����Q�?�@�������? LinksListWord?�����������??�����������������������DFCC4Dm=�, �@���.�������������8&save a record and all that good stuff ��4� ���������������8 input ����b���P�������������8H when to update list, 1= after, 2= after leave pos, 0=never, -1=before ���*���������������� ���when���"����������������posst�"������������when ���st�����������������n��������8��� �Store_Variable_Blob����� �CurrentItemVers �ItemListI �ItemNameI � ItemCaption����������������� �Store_Variable_Blob����� �CurrentLinksVersl � LinksList � LinksListType �LinksListFieldr � LinksListWord���&��������������������������l��&�������������������������pe�4���"��������������when�@�������������H���6��������e�pos��#�JournalIDArray�����������2��� ��������������pos�@�������������.��������������#�JournalIDArray�pos����,�������������#� JournalArrayo�pos�@�B���0�����������#� JournalArrayo#� JournalArrayo���������@���.����������#� JournalArrayo#�JournalIDArray�.�,������������8SET WINDOW TITLE( ^���������������������tm����������������������������������������� �������������8save ����$�����������������5������oS����������������(�8���&�������������8check for place in list or add � u�4���"��������������when�@������������Wo�H���6�������������pos��#�JournalIDArray���������2��� ��������������pos�@�������������c�4���"��������������when�@��@�������� L�.���������������#�JournalIDArray�pos����,���������������#� JournalArrayo�pos����������������������8���&������������#� JournalArrayo�pos���������@���.��������������#� JournalArrayo#�JournalIDArray����������������������������������������������������������������������������������������������������DFCC4D��&�����$_��#_��LGetModelAndGrid��^���L��������V��Fget the model version, grid, and app as a tuple of values in an array. ���2��� �����������eg. array longint ($moof;3)���2��� ������������pass in a ptr to the array���Z���H�����������C$modelgrid->{1}:=model, $modelgrid->{2}:=grid, $modelgrid->{3}:=appI�4���"�����������where the list of model's is���0��������������� 1=model II 0.9 (MP030B)����0�������@���  2=model II 1.0.2 (Pjal2)�G�@���.����@��t� ) 3=model II 1.0.5 (Pjal2) solar trend fix� �>���,����@���' 4=model II 1.0.6 (Pjal2) radiation fix� �<���*����@�% 5=model II 1.0.7 (Pjal2) surface fix�2��� ����@�where the list of grids is�*�������@�111 1=7.826x10x9 (M9)c�&�������@� 2=8x10x9 (C9)h�"�������@� 3=8x10x12 is�0�������@�RRRwhere the list of apps is���,�������@���� 1=modelII 8x10x9 0.9.2�.�������@� 2=modelII 8x10x9 1.0.2�.�������@���� 3=modelII 8x10x9 1.0.5r ���� ����@� ... me�T���B����@�RRR=This code divorces other parts of the program from the direct���@���.����@����(implementation of the the grid and model����������@�^�,�������@����^- ���� modelgrid����$�������@�^�listLen��$�������@�����^ modelgrid �������������@�����^���� ����@�����setupid�X���F����@�����^ modelgrid ���?������� ��?�������Apdefault is MP030BI �V���D����@�����^ modelgrid ���@�������� ��@��������Apdefault is 8x10���d���R����@�����^ modelgrid ���@�������� ��?�������Apdefault is modelII 8x10x9 0.9�����������@�����^�"�������@����� match model��6���$����@�����^listLen �|#� ModelNamesRef�#��8���&����@�����^�i���?���������listLen����P���>����@�����^������ �GetListItemStrA#� ModelNamesRef��i�����8���&����@�����^ modelgrid ���?������� �i����������@�����^����������@�����^���������@�����^�"��������������� match grid��6���$������������^listLen �|#� ModelGridsRef�#��8���&������������^�i���?���������listLen����P���>������������^������ �GetListItemStrA#� ModelGridsRef��i�����8���&������������^ modelgrid ���@�������� �i������������������^I����������������^����������������^� �������������� match app���T���B����d�����^ modelgrid ���@�������� � modelgrid ���?�����������������������������������������������������������������������DFCC4DR�/�AB�D���2�� �� ����8*force all to the top because it's special �|�2��� ��������((AllElm�(AllRec�����������������(�H���6�����������(AllElm�(�#(SetArray�#(PostDefaultSet�n�6���$������������((AllElm��@(�?����������<���*������������(AllRec�#( SetNumArray(AllElmA��D���2�����������(�#(SetArray�(AllElma(�?��������F���4������������(�#( SetNumArray(AllElmA(�?��������H���6������������(�#(SetArray�(�?�������(�?��������J���8������������(�#( SetNumArray(�?�������(�?��������F���4������������#(SetArray�(�?�������#(PostDefaultSet�(ro�@���.������������#( SetNumArray(�?�������(AllRec�(of����������������((��������������������������DFCC4De�,z��T���B�� ]�� ]���8;PM_RecursiceDelete, delete a folder and all it's contents! �+�`���N������������8FWarning this is a recurive delete command! This code deletes a folder ��L���:������������83and everything inside the folder with no warnings! �I����������������8 ���� ����������������8 input �d �4���"�������������8 path to folder to delete ��@���.������������(%(�@������� (�( folderPath����F���4������������(�(�@�������(folders(������������D���2������������(�(�@�������(files(������������ ���������������((iel�(���������������( folderPath� (�(���@���.�������������8'make sure not to delete the whole disk �Se�2��� ������������(( folderPath��@������������������(�,����������������8contents of folder ����6���$������������(( folderPath�(folders���4���"������������(( folderPath�(files����������������(�8���&�������������8recursivly delete the folders � s�>���,������������(((folders�@(��������������B���0������������((i(�?�������((foldersx9�h���V������������ (PM_RecursiveDelete� ( PM_MakePath( folderPathh(folders(i(�������������������((wP����������������((����������������(��*����������������8delete the files �?�<���*������������(((files�@(�����������lt�@���.������������((i(�?�������((filesSe�T���B������������(� ( PM_MakePath( folderPathh(files(i(�[����������������((������������������((������������������(@�,����������������8delete this folder �Y�*���������������(( folderPath�?����������������8����������������((s����������������������������DFCC4DPu���`���N��'A��&A��gSHPM_Launch opens applications on the Mac and PC using AP ShellExecute butfn�f���T�����������SNthe PC version has pass the path to the application because otherwise they set���b���P������������SKtheir working directory to the database folder instead of the application's���"�����������S own folder.T�����������������S������� ������������S input���>���,�����������S' path to application without .app/.exe���������������������:���(����@�aaaa�%@�@�������� @��@appPath���:���(����@�����@%@�@��������@ appFolderPath���(�������@�����@@err�@len�Ld�"�������@�����@appPath. @������������@��������2��� ����@�����@#@ PM_Platform�$@������.�������@���SMac code just launches���N���<����@�����@err.@.�@appPath�.�w�l.app�@�����������������������������@���:���(��������H4S"PC code needs pass the folder path���B���0������������@ appFolderPath. @ PM_UpOneLevel@appPath����Z���H��������@���@len.@� @ PM_UpOneLevel @ PM_UpOneLevel@ appFolderPath�����<���*������������S$count back two levels for final path.���P���>������������@ appFolderPath.w�l..\�.�@� @ appFolderPath�@len������� ��������� Slaunch��B���0�����������@,w�l_4D_OPTION_HIDE_CONSOLE�w�lFalse����`���N�����������@err.@.�)@appPath�.�w�l.exe�@������������@ appFolderPath������������������@������������������������������������DFCC4D�n)�B���0��&\��%\��gS*You can only pause runs that you can startpt�R���@����n����S:Now checks that run is running before it tries to pause it�����������(��� ��(�������ł��� �Run_Critical_BeginE� �<���*�����������L�#@RunNumberArrayz�E@�������������B���0�����������S+If (Run_RunNumStatus{RunNumberArray}<=30)�F���4��������0001S.try to stop the run, even if it is not running00�H���6��������EMak@�@������#@ RunIDArrayR�#@RunNumberArrayz� V�&��������������� @Run_Critical_End���$�������ǐ����� @Setup_PauseGCMz������ ����ǐ�����SElse ���V���D����ǐ����S?Alert_ParamText (RunNumberArray{RunNumberArray};"stop";"";"")���(�������ǐ����SRun_Critical_End ��,�������ǐ�����SAlert_Alert (1;77;2)E������ ����ǐ�dSEnd if ���������ǐ�����@ ��������������������������������������������������DFCC4Df�,>�z���h��������MUTX�8QThis code checks for invalid records in the CM_Images and CM_Previews databases. �8 A record c��=�x���f������������8Qbecomes invalid if it is no longer on disk. An invalid record is deleted. Maybe t�8 he user � ��z���h������������8Qshould be warned about long descriptions? If a folder is renamed then all the rec�8 ords will w��t���b���������8Qbe considered lost and deleted. This should use query destinations to speed thing�8s up �� ������������8 input � T�@���.��������^^�8& ptr to an array of folders in input �ds�>���,���������8% ptr to the database table to clean ����4���"������������8 ptr to field to compare ��"�4���"������������- ���imageFoldersPtrs �.���������������- ���tablePtr$���.���������������- ���fieldPtr$���,���������������imageFoldersPtr ����&���������������tablePtr$ ����&�����������l�fieldPtr$ ����������������������*�����������������/�tablePtr$ �4���"��������������t�tablePtr$\�All�0����������������$���\�Found���@���.��������������fieldPtr$�imageFoldersPtr��>���,��������������z\�All\�Found\�Missing���@���.���������������\�Missing�@������������ut�(�����������������v\�Missing��*�����������������B�tablePtr$��������������������hP�$�����������������u\�All ��&�����������������u\�Found��(�����������������u\�Missing���$����������������$���ar������������������������������DFCC4D�!mP�p���^��'��&��b$QThis code checks how long it has been since a backup and then runs one if necessab$ry.fn�h���V��������b$PThe weakness of this code is that if backups are enabled then 4D runs a check to���p���^��������:��b$Qsee if the backup folder is enabled before the Startup method is called so I cannb$ote���<���*�����������b$%control the dialog box that comes up.���������������b$�� ���� ���������� b$ input�i���� ��������� � b$ none����� ��������� �b$ output�i���� ��������TAT b$ noneMM�(�����������994 3 @ lastBackupl� 1�,��������������@2 @lastBackupTimez��������������������� ���������������b$setup db���"���������������@� @���������"���������������@�/ @���������"���������������@�2 @����������������������������D���2������������b$,check pref, fail silently if the path is bad���>���,������������@ @ @Backup_PrefRead��8$@�������������������������.���������������b$determine backup status���F���4������������@x $@�6��@ lastBackupl�@lastBackupTimez�������������������@���B���0������������@ @�����8@�?��������wX no backupsT���"���������������b$ do nothing���X���F������������@ @�����8@�@���������wX daily, ensure it is the next day���.���������������@ @�!�@ lastBackupl�������������������@w������������������@���\���J������������@ @�����8@�@���������wX%weekly, ensure it has been seven days���h���V������������@ lastBackupl@ @ lastBackupl�@������������@������������@�@�����������.���������������@ @�!� p@ lastBackupl�������������������@w������������������@���`���N������������@ @�����8@�@���������wX(monthly, ensure it has been a month days����h���V������������@ lastBackupl@ @ lastBackupl�@������������@�?��������@���������������.���������������@ @�!� p@ lastBackupl�������������������@w������������������@������������������@������������������@���Z���H������������b$Bsince the pref path is bad try to change it to the database folder���B���0������������ @Backup_PrefWrite< @ PM_UpOneLevel @��������������������@������������������������� ������������b$cleanup���"���������������@� @��������@�#@ AlertText�w�l^3�#@AlertDFCC4Dz�J0_�b���P��'��&��b$KConvert a 4D date to model hours (tau). This code assumes uniform length ofum�n���\����b��!��b$Qyear and real month length. Thus the calculation is linked to normal years withoub$t���n���\��������scalb$Qany leap years and should match Reto and Gary's manual methods for calculating rub$n�&�������V����b$dates into TAU.��������������scalb$�dG���� �����������b$ input�8���&�����������b$! date, value you want to convert���4���"������������b$ longint, zero year for run������ ��������00.0b$ output p�0�����������15.3b$ longint, date in hours�6 �������������TAT ������������054 b$var �(����������� 3 @��@date@�2 �(���������������@ @��@zero@����&���������������@ @���@tau���� ���������������@date@ @���� ���������������@zero@ @�����������������������4���"������������b$do the magic from date to tau���L���:������������@tau @� @date@��P@zero@��@�@���������@���.������������@tau@tau��#@jdofm�@� @datem����\���J������������@tau @tau��@� @datem��P@�?���������@�@�������������������������������� ������������b$cleanup������ ������������ @��@tau��Note������������� @ �<���*�������� @��� No longer need the modal window�,���� �������� @�� @OK ��������������DFCC4D9"�>���,���������d�d"3H%save the record then close the window"���@���.���������d�d "InfoText_SaveRecord"�"I"I?�������""�<�$������������d�d " Generic_Close"co������DFCC4D��.�������������� � FinderToPathn \��   ������������������ ]����������������������������������������DFCC4DJ�>���,��������W�� Info_iPhoto_LoadThumbs�?�������ss������������������������������������������������DFCC4DG��~�6���$����������"0open flux processing window x"���h���V���������� Generic_OpenReopen]]]#Flux_ProcessIDz]x� Flux Window]x� Flux_Processz]]?������������DFCC4DG�Sz�h���V��%k��$k��gSPSets allow users to save information about how the postprocessors are configurednfs�d���R�����������SLand not tie the information to a particular run. Each set stores all the runA���t���b������������SQindependent information about: tables (pd) , time series (aj), maps (aij), slicesS (ajl),���n���\�����������SQand zones (alat). Since a set hides the information about other sets there is alsSo�P���>�����������S9a master set that always shows everything called Default.����������������������d���R������������SMThe version is an error check to make sure that the blobs are read correctly.���F���4���������� S.Here is the #,date,description of each version�n�L���:���������m�bS51, 07/10/02, initial version, has tables, aj, and aij� �2��� �����S2, 08/??/02, minor changeser�h���V�����????SP3, 10/04/02, moved sets interface to postprocessing and the postprocessing procen44�X���F�����S@4, 10/28/02, fixed off by one error in arrays, caused bad counts��0��������S5, 03/24/04, added slices�0��������kZkZS6, 12/13/05, added zones��0�����������111^#�SetsCurrentVersion<���8���&��������#^SetsCurrentVersion<��@������� s�\���J�����������SDcreate the set array to match the sets stored in postprocessing sets���J���8�����������S2also create set of record numbers for quick access��8���&�����������^�#� SetNumArray�����������������"�����������^�/�������#��J���8�����������^������#�SetArray��������#� SetNumArray���6���$��������^�#�SetArray�#� SetNumArray��&����������� ^SetArray_AllOnTop��.������� ����#^SetArray��?���������������������������������������������������DFCC4D3���Z���H������������8AWhat to do if an error occures in the Simulation Library window. ����^���L�������������8DBasicly restore all the records, sort and then kill the bad meathod ����$�������������� �/  �����  ��4���"������������ �1  �����  ���� � @  ������������Yj � ��������������������������������������������������������������DFCC4Dro��:���(����������� � FinderToPathn \� Documentation  ����������������� ������������������������������DFCC4DDa*��B���0���������� Info_iPhoto_LoadThumbs�s@s�@��������ss��������������������������������������������DFCC4DE�,?��@���.�� �� ���7d&sets_process, setup sets window and db��4�������������R�e�@���� ������������7dsetup����(��������������]�C��Default��� �6���$�����������]�7���������Sets����������������������� ]myWind���#� Toolbar_Width���@����������@��������� #� Toolbar_Width���@��������� ��@��������$��"� ��� Sets Summary���� Generic_Close���F� �����������)]F�B�� ������������)�n � �����������)�7dshow it�lO� �����������)]F�B�� ��&�����������)] �myWind���������������)�7d�(������������v�e�7dsetup database��� ������������i�n]����si�$������������t�>]���������ar�$������������t�.]�/��������od�8���&���������.�p]#�SetArray������������������D���2���������d�j]��������#� SetNumArray#�SetArray��������������� � ]]���$������������ � ]�2�����������������������l�>]]�(��������������� ]setName�������������������������[����������������]] �*���������������]�9������������2��� ������������ ] �OK����������������hu��������������������X���F�������������7d? The close box associated with this window pauses the process. ���\���J�������������7dB The window stays ready for use throughout the use of the program.����`���N������������#]Sets_ProcessIDA������������w$ Reset process ID tracking variable.wru����������������w���,����������������7d End of procedure.�����������������������������������������������������������������DFCC4D^�g9X�t���b����(�����FQThis creates the start of an XML tag at the correct level and fixes the input strFing B;�:���(����:�s{F to match the rules for XML tags l��� ��������Z^F input &�0�����������F string, XML tag name �,�,�������r����F level of the tag ���<���*������������%�@������� �tagNameS�.�������������� �tagLevel���0�����������nera%�@������� ���*�$�������r���tagName �EN�&�������r�tagLevel �t ��������r�}&�(�������r� $Ffix characters ��B���0����r�5tagName�tagNameY�p Y�p_���B���0����r�tagName�tagNameY�p?Y�p�LO��������r������.�������r�Fcreate output string ���\���J����r�ff ���Z$��%�tagLevel��Y�p<��tagName��Y�p>Y����������������������������������DFCC4DB�,�*����� �� �� � InfoText_HTML��T#��DFCC4DT�FJu�b���P��'0��&0��gSJThe list of selected years is reset every time the user changes the tab inum�b���P�����C��SKanalyze output. Optional input tells it to clear the saved years instead of���$���������������S setting them.���������~����S������� ��������scalS inputD:�6���$�����������S optional (clear saved years)���� ��������0001S output00���� ��������EMakS noner��&���������������-@YearsPtr$����$���������������@@listLen����:���(������������@%@�@��������@ TabSavedYears����6���$�����������@�@curYears$�@���������������������������������"���������������S save record���"���������������@�5@������������������������� �&��������������Sget years list���X���F������������@YearsPtr$> @PostProcessing_TypeListEmpty� @start_lbs�@��� �4���"��������� @listLen>@@YearsPtr$������������������������F���4��������dS/select all years in the list and undo selection�2��� ������������@ @zTabs� @ pTimeSeries����������������������"���������������S clear array���*���������������@�Y @ TabSavedYears�@��:���(���������L@� @ TabSavedYears�@�@�����������������������������P���>������������S9don't save years when records change (paramter is passed)���.���������������@@�@�?�����������D���2������������ @ TabSavedYears�@�?�������>@��������������D���2������������ @ TabSavedYears�@�@��������>@��������������F���4��������� @ TabSavedYears�@�@��������>@�@������������������������@���D���2�����������S,save selected years if record is not changed���P���>����������� @SelectedElementsInListBox� @start_lbs��@curYears$���J���8����������� @ TabSavedYears�@�?�������>@@curYears$�����������������������Z���H������������SCsave years if there are any, as offsets, otherwise just wipe it out���L���:������������@ @ TabSavedYears�@�?��������>@���������������T���B������������ @ TabSavedYears�@�@��������>@curYears$�@�?�������������������������@���D���2������������ @ TabSavedYears�@�@��������>@�����������������������������@���F���4������������ @ TabSavedYears�@�@��������>@�@������������������������@���������������������8���&������������S select all years and no year set���@���.�������� @PostProcessing_SelLastNYears@listLen����B���0��������@ @ start_lbprt�@�?��������$@�5�����B���0���������%@ @ start_lbprt�@�?��������$@�5��34��������������������(���������������Sresize years list���V���D������������@��w�l Start_obj�@left�@top�@right�@bottom�����|���j������������@��w�l Start_obj�@lefto�@top�@lefto�>�@�@��������@top�>�@�@�������������2��� ������������@[��w�lzAve_@�@�����8���&������������@[��w�l Start_objtoo>�@�����2��� ������������@[��w�lstart_2�@�����4���"������������@[��w�lstart_10��@��������������������@���2��� ������������Srestore old years selection���B���0������������@@ @ TabSavedYears��>@���������������R���@������������S; must match run number or selected years will just be wiped������|������������@@�@������� @ TabSavedYears�@�@�����������X @ TabSavedYears�@�?��������>@����������������|���j���������� @PostProcessing_SelLastNYears @ TabSavedYears�@�?�������� @ TabSavedYears�@�@��������������������������@���@���.��������! @ @start_lbs�@�?��������$@�5��..�@���.������������@ @start_lbs�@�?��������$@�5��������������������@������������������@����������������������4���"������������Sdon't want to run this twice���*���������������@�Y @ TabSavedYears����:���(������������@� @ TabSavedYears�@����������������������������������(���������������Sresize years list���V���D������������@��w�l Start_obj�@left��@top�@right�@bottom�����4���"������������@@bottom����@�@Ѐ����������|���j������������@��w�l Start_obj�@left��@top�@left��>�@�@��������@top�>�@�@����������������������������@���2��� ������������@[��w�lzAve_@�@�����8���&������������@[��w�l Start_objtoo>�@�����2��� ������������@[��w�lstart_2�@�����4���"������������@[��w�lstart_10��@��������������������@����������������������$���������������S call a redraw���>���,������������#@PostProcessing_Button>�>`@�?����������6���$������������@I#@PostProcessing_ProcessID���DFCC4D�SJ�n���\��!�� ��,�7dQshow the permissions window, this code is called from the setup simulations windo�7dw^�B���0��������d���7d+so rw access to model variables is assumed.����������n�����7d�z������ ������������7d input0�<���*��������0001�7d$ ptr to acl subtable (ACL subtable)12�>���,��������EMak�7d' ptr to acl username field (ACL field)�n�&����������������7d ptr to table������ ���������� �7d output�o�,������������[�M�7d none (ACL subtable)�s����r�������������7dQ$wind:=Open form window([Users];"UserPermissions";-Movable form dialog box )`Mo�7dvable form dialog box w���X���F������������]- ��� ��� ��� �aclPtr� �aclUsernamePtr@� �tablePtrt�ia�.�����������]���������������cl�"������������ ]aclPtr� �����*������������ ]aclUsernamePtr@ ����$����������� ]tablePtrt ��������������]a�(�������>���� ]aclPtr����������2��� ����>� ]aclUsernamePtr@�������*�������>� ]tablePtrt�������rP��������>�]w���������>�]�>���,����>�111]�7���������UserPermissions��(l���������>����]wind�������@�����������@��������������@������������@������������?�����������?���������$��"����User Permissions�-1045��8���&����>�����]�(���������UserPermissions�����������>����]��������������������DFCC4Dd�=9cn�(�����!6�� 6��,�7d SelectedElementsTX���� ����F���7d input0���(���������������7d ptr to listbox��<���*����R�����7d$ ptr to array to get back selection���B���0�����^^]- ��� ����listbox�� selectedliste�^�0�����������MUTX]�foundAt��maxsize����"��������������]listbox �����(������������] selectedliste ���,���������������]foundAt���������������2��� ������������]maxsize��listbox�����4���"������������]�maxsize�����������������0��������0001]�foundAt�( �maxsize�09�D���2��������EMak]foundAt���listbox������foundAt��8���&�����������]�foundAt�����?���������8���&�����������]� selectedliste���foundAt���:���(����.� ]foundAt�foundAt����?�������8������������V\]��:���(����������]foundAt�maxsize����?���������������������0001]02������������EMak] S����������������]��������������������������������������DFCC4DA��^���L��!�� ��,�7dFadd to ACL, clear * if it is there since an owner means the run is notF�(�����������7daccessable to all���&������������� ]�Y � arrColSel�� �6���$���� ����]� � arrColSel�����������������6���$�����BB]%��@���������username$�B���������z�����8���&��������7d!get the selected item in the list�a�B���0����� 7p ] UAM_ListSel� �userListu�� � arrColSel��������������C�o�l�*�������������7dcheck for selection���2��� ����\�nfoT]selLen�� � arrColSel���4���"����������]�selLen��������������es� ������������7dremove *���T���B������������]� � arr2ColVars/��?��������������������������V���D����^�0001] � arr2ColVars/��?��������/��?�����������*�00�L���:��������EMak]� � arr2ColVars/��?�����������?��������w���������n����]!������������EMak] S�������������ww{�0�������������7dadd new items to the ACL���8���&��������{{]�i���?���������selLen�{�Z���H��������{{]username$ � arrColVarsr/��?��������/ � arrColSel/�iw�f���T��������ww]�� � arr2ColVars/��?����������username$������?��������w�J���8��������ww] � arr2ColVars/��?����������username$�w������������]������������]����������������� ���������7dsort�<���*��������] � userOwner���?�����������������������]���������������===���������������B{����������������������������DFCC4DC��&�����!6�� 6��,�7dremove from ACL��&�������Դ��� ]�Y � arrColSel�� �6���$����������]� � arrColSel���������������o�6���$���� ����]%��@���������username$����������������^^^�8���&������������7d!get the selected item in the list�B���0����v�0001 ] UAM_ListSel� � userOwner�� � arrColSel�00�������������EMaker�*����������������7dcheck for selection���2��� ������������]selLen�� � arrColSel����4���"��������)]�selLen��������������������������������0�������������7dremove items from the ACL�L���:��������)�]�i��selLen���?�������������?�����������R���@��������]� � arr2ColVars��?��������� � arrColSel�i�������������)]��������֨����]�����������֨������������DFCC4DIV�L�d���R��"��!��,�7dMuam_perm_accept saves the changes back to the database and changes ownership.���t���b����&�MUTX�7dQa warning is generated if you try to remove yourself from a run. Admin users are �7dimmunei���>���,����d��t�o�7d'to warnings since they can do anything.�o���� ����"�MUTX�7d input0ng���� ����������,�7d none0m_���� ����Ů�����7d output���,���������������7d none (ACL subtable)���$��������������]1�accept����"������������� ]accept����p��������������_�U�s�.������������� �7dadmin users are immune��c�$������������_�U]#� UAM_Admin���"�����������0001]accept���00�@���.��������EMak]w&check they left themselves in the listP� �T���B������������]found�� � arr2ColVars��?���������#�UAM_User����\���J����������]�found�����?��������!no in list add back in and reject��\���J����������]dummy � Alert_Alert��@����������@����������@���������� �J���8���������l�t] � arr2ColVars��?���������#�UAM_User��P�<���*����������] � userOwner���?�����������c��������������]�&�l��������������]�a�"������������s�t]accept����e���������������]7d������������EMak]�����������������]�0��������������7dsave changes if accepted�ve�"�����������]�accept� ��b���P��������]�B��#�Simulation_ProcessID2�� p�B��#�InfoText_ProcessIDI���h���V�������������7dQchange acl but don't save if we are in the simulation process or eJournal process���D���2�������������7d-where other things need to be saved specially���0��������������� ]UAM_Perm_ChangeACLI���������������������]���(����������������7dsave each record������������������]���0��������������� ]UAM_Perm_ChangeACLI������(���������������]�3 �tablePtrt�����.��������������� ]��$ �tablePtrt���������������������]������������������]������������������]�&������������������]��������������������������������������DFCC4DA��������!6�� 6��,��~���l�����������7dQhandles the list box in the user manager window, both loads the list and handles �7dchanging records �����������������7d ������ ������������7d input0���� ��������ds:H�7d none0Li���� �������� Cha�7d output�A���� �������������7d none0��������������0001]02�(�����������EMak]���$����4D�D���2�������������7d,load in the whole table used to list things ����4���"���������]� �userID�����������������H���6��������]���@�������� � arrColNames��������������xx�L���:�����������]���@�������� �arrHeaderNames@�����������������8���&��������] � arrColVarsr���������������:���(��������] � arrHeaderVars���������������8���&��������]� � arrVisibler���������������6���$��������] � arrStyles����������������*�����������] � userColsToSet��������������)))%�,������������7dload in data to table����x��������]@ �userListu� � arrColNames� �arrHeaderNames@� � arrColVarsr� � arrHeaderVars� � arrVisibler� � arrStyles��"��������������]�/���������F���4������������]������ � arrColVarsr��?������������<���*������������] �userListu���?��������������������������������(���������������]���$����������������������]��������������DFCC4DC�VL�������!�� ��,��~���l������������7dQhandles the list box in the user manager window, both loads the list and handles �7dchanging records ����������������7d ������ �������������7d input0������ ��������� �A�7d none0����� �������������7d output������ ���������7d none0��������������]�(�����������ccc]���$����cc�D���2���������7d,load in the whole table used to list things ��4���"�����������]� �userID�����������������J���8��������]���@�������� � arr2ColNamesr���������������L���:��������]���@�������� �arr2HeaderNames���������������8���&��������] � arr2ColVars���������������<���*��������] �arr2HeaderVars@���������������8���&��������]� � arr2Visible���������������8���&��������] � arr2Stylesr���������������*�����������????] � userColsToSet���$�����������)�]-�arr2Ptr���������������P���>�������������7d8load in data to table from subtable, this is done manual�������~������������]@ � userOwner� � arr2ColNamesr� �arr2HeaderNames� � arr2ColVars� �arr2HeaderVars@� � arr2Visible� � arr2Stylesr����&���������������]�m �aclPtr�����4���"������������]aclCount$�� �aclPtr������������������������&����������������7ddelete old list���J���8������������] arraySize� � arr2ColVars��?������������Z���H������������]� � arr2ColVars��?�����������?��������� arraySize�����������������������$����������������7d add users in����6���$������������]�aclCount$���������������������������������7dadd���&���������������]�= �aclPtr�����:���(������������]�i���?���������aclCount$����R���@������������] � arr2ColVars��?��������� �aclUsernamePtr@�����&���������������]�> �aclPtr��������������������]������������������������� �������������7dsort���<���*������������] � userOwner���?����������������������������]����������������������(���������������]���$����������������������]����������������������DFCC4DIX� �d���R��!6�� 6��,�7dLchange owner to *, which means everyone has access, this should be multually@���<���*������������7d$exclusive with any users in the list^���$���������������]�listLen����������������Databa�2��� ����h����]listLen^� � userOwner��4���"��������EMak]�listLen�^�������������-�X���F������������]� � arr2ColVars=��?�������^����?���������listLen�������������������]����������������������D���2���������] � arr2ColVars=��?�������^����*�����������������������������DFCC4D/M� O�^���L��!6�� 6��,�7dGThis code returns if the run is the magic run with an unbreakable lock.F�P���>�����������7d9At the moment this is the run called "Sample_Control_Run"�s��������X�����7d�z������ ���������7d Input0������ ������������7d none0���� ��������ds:H�7d OutputLi�:���(�������������7d" boolean, is the lock unbreakable���<���*���������]���������Sample_Control_Runx����� ����������� ]��>��������������]������ ����� ]��>�����������]��������������������������������DFCC4D ��8jg�`���N��&"��%"��gSISetup Run manager to handle things. Run Manager handles the state of runsfn�\���J�������� ��SDin the output folder and determines if they are running and how far.%��b���P�������� ��SKShould add code to handle cache instead of brain damaged non-cache version.���d���R��������SLThere is a second stage to the init because some things can't be setup until@�f���T�����������SOafter the user logs in, eg Run_UserSet is determined by who is the user (duh!).���b���P������������SJThis code now uses semaphores to ensure that no one beats it to the punch.��������������0001S�#@���� ����������S input� ���� ���������f�aS none� ���� ���������� S output�t�6���$���������)�S none (global arrays are set)�t���������������0����� ������������Ssetup���(���������� Run_Critical_Begin%�u�����������)�� �(����������0Sglobal variables��t�b���P������f�o1#@ Run_UseCacheu�wO83use cache for calls instead of direct to disk calls�n����t����� @%@�@��������#@ Run_HomeDisku�wO8Ghome disk is the first volume, used for MacOS X path fix in FindProcess�J���8�����111@1#@ Run_DirtySets�wO8should the sets be updated��L���:�����@1#@ Run_CheckDB�wO8should the database be updated���j���X�����@#@Run_ID_To_Select�wO87id of run to select, used when runs are added to the db�V���D�����RRR@#@ Run_Debug�wO8*debug flag since some stuff runs on timers���\���J��������@�@�@��������#@RunNumberArrayz�@������������wO8 Run Numberd�^���L�����@�#@ RunDateArrayu�@������������wO8Current Date, from old RunArray�\���J�����������@�#@ RunIDArrayR�@������������wO8<Record ID>, from old RunArrayRR�Z���H��������@�#@ Run_RunNumEnd�@������������wO8End Date, from old RunArray�L���:����������5@�#@Run_RunNumStart�@������������wO8 Start Dated��R���@������������@�#@Run_Run_DateCreate%�@������������wO8 Creation date���R���@������������@�#@ Run_RunStatus�@������������wO8Internal db status���J���8������������@�#@Run_RunNumStatus�@������������wO8Status���T���B������������@�#@Run_RunNumScenMast%�@������������wO8Master Scenario���N���<������������@�#@Run_RunNumRunning�@������������wO8 <Running?>d���N���<�������� @�#@Run_RunNumOnDisk�@������������wO8 <On Disk?>d�J���8�����@1#@Run_Run_Recheck�wO8check if run is running?���B���0�����@�@�@��������@vols��@������������������������������&������������Sbasic variables���`���N�������#@ Run_UseCacheu%@��� 3use cache for calls instead of direct to disk calls���"������������@@volsU�������x�������#@ Run_HomeDisku%@volsH�@�?�������?wO8Ghome disk is the first volume, used for MacOS X path fix in FindProcess���Z���H�����#@RunNumberArrayz%@�?��������� !default to first element in array�*����������#@Run_Run_Recheck%@��&������������#@ Run_CheckDB%@����\���J�������#@Run_ID_To_Select%�%`@�@��������� -99 means no record selected��.�����������#@ Run_Debug%@��������������������������<���� ������������Ssets%���(�������������#@ Run_DirtySets%@��(�4���"��������@�@������w�l Run_UserSet����6���$����������@�@������w�l Run_SearchSet��^����������������������� ����������Scleanup�,�&����������� @Run_Critical_End����������������DFCC4D/S�J4�`���N��&\��%\��gSIMap the run status to an icon ref (number) from the picture library, takefn�V���D�������� 5��S>into account if the run is running. Use semaphore for security\��������������S������� ������������S input���4���"������������S index into RunNumberArray������ ��������S output�M�*�����������0001S number (icon ref)00�B���0��������EMak @�� @���@i�@iconRef�@useBlue��k���� ����������@i% @������������������������� ������������Ssetup���(�������|����� @Run_Critical_Begin%�����������|��������,�������|�����Scheck if run is going �4���"����|�����@#@Run_RunNumRunning�@iY����,�������|�����@useBlue%@���������������������|���@���,�������|�����@useBlue%@�@�����������������|�����@L ���������|������ �&�������|����Sassign icon ref����������|�����@�f���T����|�� @#@Run_RunNumStatus8�@iY�@�@��������wO8archived run, can't be run�ap�8���&����|�����@iconRef%@�@ �������� archive���h���V����|�����@#@Run_RunNumStatus8�@iY�@�@��������wO8master scenario, can't be run���>���,����|�����@iconRef%@�@ �������� package icon@���X���F����|�����@#@Run_RunNumStatus8�@iY�@�@��������wO8 completed run���>���,����|�����@iconRef%@�@ ��������� filled circle���d���R����|�>� @#@Run_RunNumStatus8�@iY�@�@��������wO8not on disk, empty circleL�@���.����|����@iconRef%@�@ p�������� lock black icon��Z���H����|����@#@Run_RunNumStatus8�@iY�@������������wO8first hour run���:���(����|�����@iconRef%@�@ �������� play icon@����������������@#@Run_RunNumStatus8�@iY�%@��������������)#@Run_RunNumStatus �@iY�wl@�@���������wO8incomplete runs in eigths���p���^��������aaaa@iconRef%@�@ �������%�#@Run_RunNumStatus8�@iY�%�@useBlue��filling a circle�yy����������������@���>���,��������@iconRef%@�@ �������� empty circle@������������@������������������ ��������Sreturn�&��������������� @Run_Critical_End���"��������������� @��%@iconRef������DFCC4D �,��b���P��'A��&A��gSJFind out which simulations are running from the processes on the computer.um�p���^����������SQCurrently uses the folders on disk to determine which runs to search for (unchachSed)���`���N�����������SHand then searches the running processes using a RealBasic program called���`���N�����������SIRunManager. The Mac version just uses ps -Axc instead of RunManager since���8���&�����������S!runs can be found just as easily.������������������S������� ���������� S input�n�:���(����������S" ptr to list of processes to find�u�\���J���������2�kSE ptr to list of booleans for results (must be size of previous list)����� ����������S output�o�V���D��������� �)S> boolean, at least one process was running (see boolean list)�D�@���.���������� �- @�� @��@runsPtr�@ runningPtrr��l�B���0����������@%@�@��������@path��@ errorStream���:���(���������� @\@ inputStream�@ outputStreamu��i�&�������������@@outFound$��T�.������������2�k@@i�@ runFoldersC��o�4���"����������@%@�@��������@crChars������ ��������� �)@1 @����)�"������������ @runsPtr @����&���������������@ runningPtrr @������� ������������ @��@�����������������������6���$������������@ runFoldersC@@runsPtr)����j���X�����������A@@ runFoldersC�@������������wO8-only check things if there things to look for����������������������"��������������S build tools���J���8������������@#@ PM_Platform�$@���wO8mac version uses ps���@���.�����������S)fill out ps command, man ps for more info��(���������������@pathw�lps -Axc���.���������������@crChars@�Z$@��(����z���h������������@�� Qwindows version uses pulist from the Windows Resources for Win 2k, also supports �� Win XP SP2r���~���l������������SQfills out pulist command, see http://www.microsoft.com/technet/downloads/win2k.msSpx for more info ���B���0������������@path( @ PM_FindFolderw�l Applications����P���>������������@pathi @ PM_MakePath@patha�w�l pulist.exe ?�@�����B���0������������@crChars@�Z$@��&���@�Z$@��(�������������������@����������������������,�����������aaaaSfinal return to quit�D���2������������@*@crChars�@ inputStream�$@�� �������������������:���(��������S"try it and surpress console window)�B���0���������@,w�l_4D_OPTION_HIDE_CONSOLE�w�ltrueh��T���B�����������@+@path �@ inputStream�@ outputStreamu�@ errorStream�����������������������8���&������������S!find if processes are in the list���B���0������������@outFound$@+@ outputStreamu�$@�� ����<���*������������@@i�@�?��������@ runFoldersC����T���B������������@@�@runsPtr)�@ii�@outFound$��@������������������n������������SQcreate a string that prevents names that contain the search string from triggerinSg a false positivea���2��� ������������@#@ PM_Platform�$@������H���6����������&@pathw�l ��@runsPtr)�@ii��@crChars�����������������@���>���,������������@patha@crChars��@runsPtr)�@ii������������������@���<���*������������S%double check that it's really running���H���6������������@@�@pathP�@outFound$��@���������������0���������������@ runningPtrr)�@ii@������� ������������ @��@�������������������@���0���������������@ runningPtrr)�@ii@�������������������@������������������@���0���������������@ runningPtrr)�@ii@�������������������@������������������@�������������������������������������@����������������������$���������������S debug assert���8���&������������S!If (PM_Platform=Windows )&($0)���8���&������������S SET TEXT TO CLIPBOARD($outFound)������ ������������SEnd if ������������DFCC4D �E�x���f��$s��#s��LQSetup_RunModelMac copies the model and modifies things so that the process has th e same nameof�~���l����������Qas the run. On MacOS X this is complicated because the plist must be modified and the binary filea�|�|���j��������Qrenamed. On Windows a simple copy does the same thing as this code. The parent call to this hasn���8���&�����������!already gotten the model and grid�������������������� ��������4th  input���8���&�������� ADO! string ptr (run folder, output)�I�:���(���������� " string ptr (model folder, input)�c�2��� ���������e�t (implied) model and grid�m���� ���������� output�O���� ��������� � none�M�@���.���������� ^- ��� ���� outputPtr��inputPtr$��o�2��� ���������e�t^%��@���������path(��m�L���:����������^%��@��������� modelAppNameo�� modelAppRsrco��$�"������������M�_^�plist�� �$������������ �^ outputPtr ���T�$�������������^inputPtr$ ���M������������������&�����������get model infoh��j���X�����������^ modelAppNameo �GetListItemStrA#� ModelAppsRefo� � modelgrid���@����������l���Z�����������^ modelAppRsrco �GetListItemStrA#�ModelAppsBinRef� � modelgrid���@��������������������������������� �����������copy������n��������NNN ^PM_RecursiveCopy � PM_MakePath�inputPtr$��� modelAppNameo���.app ������ outputPtr��NN�����������������$������������ path to plist���R���@���������^path( � PM_MakePath� outputPtr���Contents��������N���<���������^path( � PM_MakePath�path(�� info.plist������������������������$������������ modify plist���.�����������^docRef���path(����>���,���������^�h�docRef��plist���@ �����������X���F���������^plist���plist�� modelAppRsrco���������?�����������4���"���������^�docRef�����������������.������������^�g�docRef��plist����$������������^ �docRef��������������������*������������change binary name���R���@���������^path( � PM_MakePath� outputPtr���Contents��������H���6���������^path( � PM_MakePath�path(��MacOS�������x���f���������^ � PM_MakePath�path(�� modelAppRsrco����� � PM_MakePath�path(������������������������������,������������change resources name���R���@���������^path( � PM_MakePath� outputPtr���Contents��������L���:���������^path( � PM_MakePath�path(�� Resources�������������������^ � PM_MakePath�path(�� modelAppRsrco���.rsrc����� � PM_MakePath�path(���������.rsrc�����������������������������������������������������������������������������������������DFCC4D/Y�,B�J���8��%��$��gS2Search run list of subset with a particular run idCH����v��������SQsearches are lost if the records are changed in the database since the sets becomSe, this is consistent withe���2��� ��������Show iTunes handles searches���(��������������� �Run_Critical_BeginO���8���&����������� �Run_UpdateSetsz� @ List_Queryi��&������������� #@ Run_CheckDBO@�� �&�������������` @Run_Critical_End�u�����������000100�8���&��������EMak@@�?��������@�@����������$���������������S do the query���@���.���������� @@� @ List_Queryi��O@�������������s�6���$����������@$@���w�l Run_SearchSet��S�R���@��������� �r@@������@�����w�l@�O� @ List_Queryi�O�w�l@��e�"���������������@$@����t���������������@��"���������������@�/@���������6���$��������T�@�t@������w�l Run_SearchSet��������������T�@2��������������������P���>��������S9if the results of the query are empty then do all records�V���D������������@�yw�l Run_UserSet�w�l Run_SearchSet�w�lRun_SearchResult���H���6�����������@@�w�lRun_SearchResult��@���������������>���,������������@Xw�l Run_UserSet�w�l Run_SearchSet����N���<����������� @Alert_ParamText @ List_Queryi�w�l�O�w�l�O�w�l�O���B���0�������� @ Alert_Alert@�?��������@�@��������������������@������������@����������������������������������������������������������DFCC4Dnc�` *:�b���P��%��$��gSJChange which run is currently selected and update everywhere. This code noum�`���N����������SIlonger sets the current record in the toolbar process, this is done on an���F���4�����������S/as needed basis instead to improve performance.�����������������S�o����� �����������S input p_���� ������������S none ������ ���������� S output�d���� ���������_�CS none �l����������������������� ������������Ssetup���(����������� Run_Critical_Begin�����������������J���8�����������S2check if there is anything in the RunNumberArray ��D���2�����������@#@RunNumberArrayz��@��������������������������L� ��(�����������Sget selected item���8���&����|����@cur@{ @RunNumberArrayHier�������������|���B���0����|�S*if no item is selected then pick the firstk�0�������|�@@cur�@�������������Z���H����|�����@cur@�#@RunNumberArray�#@RunNumberArray�@�������������0�������|�111@@cur�@�������������,�������|�#@RunNumberArrayz@cur��������|�@�4���"����|�RRR#@RunNumberArrayz@�?�����������������|����@kk�`���N����|�#@RunNumberArrayz�@�����������#@RunNumberArray�#@RunNumberArray��������|����@���.�������|�Spick the selected item0�T���B����|�111#@RunNumberArrayz�@�����������#@RunNumberArray�@cur�,�������|�#@RunNumberArrayz@cur��������|�@���������|�RRR1�&��������������Supdate the list�@���.��������@tempu#@RunNumberArray�@������������4���"�����������@@B�#@Toolbar_ProcessID�RR�*����������� @Run_UpdateSimControls������������@��������������.�����������Supdate other processes �6���$��������@I#@PostProcessing_ProcessID ��2��� ��������@I#@Simulation_ProcessID(����.�����������@I#@Control_ProcessID����.������������@I#@Cleanup_ProcessID����,������������@I#@Flux_ProcessIDz�������������������@���������������4���� ��������Scleanup�&�����������ayer @Run_Critical_Ends ������������������������������������������������������������DFCC4D��`���N��%��$��gSHSecond stage run init for things that require the user to be selected orfn�F���4���������� S/that the code is run from the toolbar process. �f�������������� �r�e�&�����������0001Ssetup the sets00�$�����������EMak#@ UAM_Admin��c�2��� ������������Sadmins can access all runs���"��������������@�/@���������4���"�����������@�t@������w�l Run_UserSet������������������@���R���@�����rdS;users can only access runs they own or are owned by all (*)���4���"���������@$@���w�l Run_UserSet��0�D���2�����@���@@������@�����#@UAM_User�����>���,���������@@�������x �@�����w�l*����"������������@$@�������������� @���T���B�����x�S=default search is null so give set of all records accessiable���>���,��������@Xw�l Run_UserSet�w�l Run_SearchSet������������D�&������������Ssetup the list���,������������ @RunSort>@�?���������.����������� @RunNumberArrayHier>>@w��2��� ��������� @ RunAlternaten>@�?���������@���.������ @Run_UpdateListz� @RunNumberArrayHier>�����������������������������������������������������������������������������DFCC4D �,3�b���P��%��$��gSJRun_UpdateSets makes sure that the sets match the database and the search.um�d���R�����������SLThis code does not lock the sempahore when it changes Run_DirtySets because@�>���,�����������S'the semaphore is always set externally.�����������������S������� �����������S input���6���$������������S optional ptr to search field���.���������������S none (Run_DirtySets)������ ������������S output���:���(��������0001S# none (Run_UserSet, Run_SearchSet)00�������������EMaker�,���������������Ssetup the basic setsO���(���������������#@ Run_DirtySets����$�������������@#@ UAM_Admin��_�2��� ��������� �Sadmins can access all runs� �"�����������@�/@�������4���"����������@�t@������w�l Run_UserSet�� �������������u�n@�U�R���@����������S;users can only access runs they own or are owned by all (*)��4���"����l����@$@���w�l Run_UserSet����D���2����l�@@������@�����#@UAM_User����>���,����l�@@�������x �@�����w�l*��"�������l�@$@�����������l�@�T���B����l�S=default search is null so give set of all records accessiable�>���,����l�@Xw�l Run_UserSet�w�l Run_SearchSet���(�������l�#@ Run_DirtySetsO@�� ��������l�@���������l��>���,����l����S&if there is a search field then use it �.�������l�@@�O@��������������"�����������S get values8�0�����������@- @��@ List_QueryPtr����(�����������@ List_QueryPtrO @����������������;��*�����������ayerSdo the search queryap�D���2������������@@�@ List_QueryPtr���O@��������������6���$��������@$@���w�l Run_SearchSet��V���D������������@@������@�����w�l@�O�@ List_QueryPtr��O�w�l@���"�����������@$@�������������������������P���>����H����S9if the results of the query are empty then do all records��R���@����H���J@�yw�l Run_UserSet�w�l Run_SearchSet�w�l Run_SearchSet���D���2����H���!@@�w�l Run_SearchSet��@��������������>���,����H���33@Xw�l Run_UserSet�w�l Run_SearchSet�����������H���E@����������H���W@���>���,����H���g@Xw�l Run_UserSet�w�l Run_SearchSet�����������H�����@��������������@���������������������������������������������������������DFCC4D[��F���4��%��$��gS/Update the simulation controls section to match��L���:����^���S5the current run. This builds on the run manager cache���<���*�����4S$instead of directly querying stuff. ���������S����� ����:�����S input �t���� ����z���S none �M���� ��������'S output������ ����f�����S none �B������������������� ���������Ssetup��(������������ Run_Critical_Begin�E����������������&������� �����Sset folder icon�P�B���0���������#@Run_RunNumOnDisk�#@RunNumberArrays����8���&����ƚ�����@[��w�l Sim_FolderNA�@�����H���6���������@���w�lSim_ShowFolder�w�l 3;1;?2002;240����������������@S�8���&�������g@[��w�l Sim_FolderNA�@��ZR�H���6���������@���w�lSim_ShowFolder�w�l 3;1;?2015;240�����������l�����@����������������������*�����������Supdate current date���L���:����"����� @Sim_CurrentDate#@ RunDateArrayu�#@RunNumberArray���,������������@� @Sim_CurrentDate������������H����������� ���������Scleanup���&������� ����� @Run_Critical_End���������������<������DFCC4D[�,A�d���R��%��$��gSMThis handles updates to the setup simulation window based on changes in runs.���d���R����V����SMIf no parameters are passed then this assumes that the call is from elsewhere���h���V�����������SPin the database, usually the toolbar but it could be the user closing the windowll�b���P�����������SKor quitting the program. This code makes fewer destructive changes than the���4���"��������Sold RunArray_Manage code did.������������kZkZS�kZ���� ��������kZkZS input0kZ�`���N��������kZkZSH (optional) kind of change, 1 = import or fake create, 2 = after deletekZ�������������������������������  'Svar �*�������� s[o@ RunIDClickedu� s�6���$�����4�@%@�@��������@ RunNumber��.��������qX@@�)�@�������������(������������@ @��@kind��\� ��������@@kind�) @����������q@<����������������$������������S handle events���������������@���(�����������@@�$@�����*����������� @Simulation_SaveRecord����������������^���L�����kZkZ@@�$@����� T@�$@�� ��� T@�@�?��������kZ�������������kZo{kZ�.�����������kZkZSsetup critical section@kZ�(����������� @Run_Critical_Begin)��������������������4���"��������Sfind the selected element �x���f��������@#@RunNumberArrayz�@�������������� @#@RunNumberArray���wl#@RunNumberArray)���v���d������������#@RunNumberArrayz)@�#@RunNumberArray)�#@RunNumberArray)�@������������@�?�����������<���*������������@#@RunNumberArrayz�wl@�?���������4���"�����������#@RunNumberArrayz)@�?�������������������������@�������������@���`���N��������????#@RunNumberArrayz�@�����������)#@RunNumberArray)�#@RunNumberArray)55������������@�<���*������������@#@RunNumberArrayz�@������������q�@���.��������#@RunNumberArrayz)@#@RunNumberArray)�������������������@����������������(���������������Scache values ����H���6��������@ RunIDClickedu)#@ RunIDArrayR�#@RunNumberArray)�H���6������������@ RunNumber)#@RunNumberArray)�#@RunNumberArray)����������������q�$������������S end critical���&����������� @Run_Critical_End�������������.��������Supdate the records @��*�������� @Simulation_SaveRecord�B���0�����qHS*check if the user is creating a new recordJ�*��������111@ @Simulation_Newz����@���.�����S(adjust list before creating new record ���*�������� @Simulation_Newz)@�������������RRR@11����������������k�(�����������Sgo to new record��J���8�����������@�w�lSetup Simulation, Run ID: �)�@ RunNumber�R�>���,�������� @Simulation_LoadRecord@ RunIDClickedu�������������ccc@cc��������������������������������������������������DFCC4D[��/�p���^��%��$��gSQRun_PostProcessing handles coping the information from the run to the postprocessSornfn�h���V��������SQNow uses the more accurate information from Run Manager. Now uses semaphores for �"�����������/��S safe reads.���$��������������p3@endyear����$���������������@@i�@j����������������M���� �����������Ssetuppu�(�������� @Run_Critical_BeginO�������������????��$�����������S setup tables�D���2��������????@����O#@RunNumberArrayO�#@RunNumberArrayO88�"�������8����@�@������@�H���6��������EMak@�@������#@ RunIDArrayR�#@RunNumberArrayz� V�>���,����`��� @PostProcessing_SetWindowTitle @zTabP�� ����������������� ������������� S copy info�_��������������@@�#@Run_RunNumStart�#@RunNumberArrayt��@�?����������%@�#@Run_RunNumStart�#@RunNumberArrayt��@�?����������n�L���:�����@����O@�#@Run_RunNumStart�#@RunNumberArrayt����������@�^���L�����f@����O@�#@Run_RunNumStart�#@RunNumberArrayt��O�@�?����������������===@QQ�L���:�����@#@ RunDateArrayu�#@RunNumberArrayz�O���������D���2�����c@endyearO#@ RunDateArrayu�#@RunNumberArrayO���������@�D���2�����@endyearO#@ Run_RunNumEnd�#@RunNumberArrayO����������������@���l���Z������������@@�@endyear��@�@����������%@�@endyear��@�@������������.���������������@����O@�@endyear�������������������@���@���.������������@����O@�@endyear��O`@�?�������������������������@���,���������������@@�����wl@��������$���������������@����O@������������������@,�������������X���� �����Scleanup�&�������� @Run_Critical_End������DFCC4DA�ci�n���\��!�� ��,�7dQSpecial version of Run_FindProcess that looks for a single process and returns th�7de^�t���b������������7dQresults, be warned that this call takes about 1/3 of a second so don't use it in �7dloops.s���� ������������7d input0���P���>�������������7d9 process name (excluding exe which will be added for pc)������ �������������7d output���0�����������0001�7d boolean, is it running�09�.�����������EMak]%��@�������� ���ta���� ������������]1 �������F���4��������]���@��������� procArray���?���������8���&��������]�� procRunning���?���������6���$��������RRR] procArray��?������� �������������������k���� ���������7dcall it�P���>����������� ]�� �Run_FindProcesses�� procArray��� procRunning�RR����������������������������������������������������DFCC4DC�,n�"�����!�� ��,�7d setup arrayrf�8���&�����������] � SearchArray���@�����������>���,�������� ] SearchArray��?��������������>���,�������� ] SearchArray��@�����������������>���,������������ ] SearchArray��@�����������������>���,��������0001 ] SearchArray��@����������v���00�>���,��������EMak ] SearchArray��@������������� ���� �������������7dfind���N���<���������� ] List_Find��?����������������� � SearchArray��t����������������������������������DFCC4Dd��Z���H��!�� ��,�7dBUAM_Perm_ChangeACL places the changes to the user permissions intoME�\���J���������7dDthe ACL subtable. This code is linked to the [Model Variables] table��� ���������������7dfor now.������������������7d�zK���� ��������EMak�7d input0r��0����������������7d boolean (save record?)������� �������������7d output���,����������������7d none (ACL subtable)���.���������������]1 ���� saveRecords����&���������������] saveRecords ������������������������4���"�������������7ddelete all current subrecords���&���������������]�m �aclPtr�����>���,������������]�� �aclPtr�������������������&���������������]�= �aclPtr�����&���������������]�` �aclPtr�����&���������������]�m �aclPtr��������������������]����������������������2��� �������������7dadd in subrecords from list���J���8������������]userSize$� � arr2ColVars��?������������:���(������������]�i���?���������userSize$����&���������������]�H �aclPtr�����R���@������������ ]aclUsernamePtr@� � arr2ColVars��?���������i������������������]����������������������0����������������7dsave record if necessary����&���������������]� saveRecords����(���������������]�5 �tablePtrt��������������������]��������������������������������������������������DFCC4D ��r���`��'&��&&��gSQSetup the selections before the permissions are changed and restore things afterwSards.am�p���^����&�SQTechnically I just restores the default sort, can fix if people are really annoyeSd.c������ ��������ߥ(S input���<���*�����������S$ ptr to acl subtable (ACL subtable)7���>���,����R����S' ptr to acl username field (ACL field)�&�����������S ptr to table�0���������� S ptr to field to sort by�e���� ����������[S output�V���� ���������� S none�t�l���Z����������[�- @�� @�� @�� @��@aclPtrD�@aclUsernamePtrz�@tablePtr$�@fieldPtr$��d�.�����������0001@@�7@������������00�"�����������EMak@aclPtr�7 @��r�*���������������@aclUsernamePtrz7 @����$�������P����@tablePtr$7 @����$�������P����@fieldPtr$7 @�����������P�����@���(�������P�@aclPtr�7@���� �2��� ����P�@aclUsernamePtrz7@�����*�������P�@tablePtr$7@�����nk�*�������P�@fieldPtr$7@������������P�@���������P������&�������P�Ssave highlight�8���&����P� @List_HighlightSave7@tablePtr$����������P�������*�������P�Schange permissions�>���,����P�@@�w�lCurHigh��7@�������������T���B����P� @UAM_Perm_Dialog@aclPtrr�@aclUsernamePtrg�@tablePtr$�))��������P�@JJ�R���@����P� @ Alert_Alert@�?��������@�@��������@�@�����������������P����@�����������P�������4���"����P����Sresort and restore highlight���H���6����P����� @List_HighlightRestore@tablePtr$�@fieldPtr$�����������������������DFCC4D(� ;�N���<��'��&��b$7Asserts show debug warnings when a condition is not met�R���@��������2��b$;while not littering the final code with stops. In a release���V���D�����������b$?build just remove the stop from this code and everything is ok.������������������b$������� ��������b$ input�M� ���������������b$ boolean������ �����������b$ output������ ��������/b$ none�*�����������d1 @��@assertD��m�"�����������@assertD @���������������*��������������@ @�" @assert�������������������@�����������������@����������������������������DFCC4DA��b���P��"��!��,�7dJeList_Find sets up the arrays for the find dialog for the eJournal Library�um��������������� ��"���������������7d setup array���8���&�����������] � SearchArray���@����������>���,�������� ] SearchArray��?�������==���������>���,������������ ] SearchArray��@��������==���������>���,������������ ] SearchArray��@��������==������������ �������������7dfind=���N���<������������ ] List_Find��@������������������ � SearchArray���������������������������������������������DFCC4DC��"�����"��!��,��/�������rf�2��� ����������]�1��������������=�������������������������DFCC4DI[+��2��� ��&\��%\��gSset permissions via dialogDT�f���T����������� �List_Permissions@�!����@�!����@������ @eList_SortFieldPtr-��������������000100��������������������������������������������������������������DFCC4D.8�U�f���T��&\��%\��gSOdelete eJournals, this is very dangerious, don't do this if any other processesZ�@���.��������S(are open the depend on the eJournal list������������������S������� �����������S input���� �����������S nonep_���� ������������S output������ �����������S none����������������������F���4����L�aaaaS/setup the sets to remember the existing records�6���$����L������t@������w�l eListViewSet~����&�������L�����@�vw�lUserSet����������L�������b���P����L�����SKdon't delete if any other windows are open, and there are records to delete���:���(����L�����@@�L@�������~@������������ra�:���(����L���@@�L@�������@�?������������ ����L�����@s~w�l�~>��������L����@������ ����L�(4@s~w�ls���������L�����@ �V���D����L�@��� @Alert_ParamText@� @�L@��������@s�w�l�~�w�l�~����R���@����L����� @ Alert_Alert@�@���������@�@��������@�@������������0�������L�����@ @OK��@�?������������� ����L�>� Sdelete��"�������L�����@�B@���������>���,����L�����S&check for locked records, return error ���@���.����L�����@@�w�l LockedSet����@���������������R���@����L����� @ Alert_Alert@�?��������@�@��������@�?������������������L����A@����������L�����@����������L����@�����������L����������� ����L�����Scleanup���,�������L����@�vw�l eListViewSet~����,�������L�����@�uw�l eListViewSet~����Z���H����L����� @eList_ActiveSort @eList_SortFieldPtr~� @eList_SortNamed������&�������L����� @JournalArray_Init�����������L�������������������������������������������������������DFCC4D7NX>�4���"��"��!��,�7dset permissions for eJournal����L���:����d�� ]UAM_Perm_Dialog���!�������!��������������������������������������������������������DFCC4D99�S#�T���B��"��!��,�7d=Monitor keydowns to prevent invalid eJournal names. This code���\���J��������7dDis called directly by the eJournal ID section. Don't allow duplicate.��*��������MUTX�7dname or blank names���2��� ����"���]%��@���������temp��e�*�������N��]1�dup��short�er���������������,��(��������������]���$�������6���$����~�����7dcheck for too show eJournal IDs�$������������]temp.��������f���T�����������] � Unique_Fieldi���������temp������������p��?������������ �����]dup.��������������]7d���� ������������]dup.��or������������{s]t�������������000100�$�����������EMak�7d check length��b�:���(������������]�����������@������������ ������������� ]short.���n�������������M�o]�e� ���������������]short.�����������������n�t]���������������r�o�c�2��� ������]�dup�� p�short����,������������]����.��#���������H���6��������� ]Alert_ParamText������������������������ ������������]�short����R���@��������� ] Alert_Alert��?����������@����������?�����������������������]�R���@��������� ] Alert_Alert��?����������@����������?���������������������]������������]������������]������������������������������������������������������DFCC4D<b��b���P��"��!��,�7dJCheck if a value is unique for a field. This check requires that the field�um�J���8����������7d2be indexed, but does not change the current record������������������7d�z������ ������������7d input0�&������������7d ptr to field�h���V��������0001�7dP ptr to value to check, warning the orignal value passed here will be modified!�23�T���B��������EMak�7d= longint record ID to check for match (pass -1 for no match)������ �������������7d output���\���J��������111�7dD longint: -1 = no match, 0 = matches value passed in, 1 = duplicate�@���.��������]- ��� ����fieldPtr$��valuePtr$����<���*��������)�] ��� �����recordID$��found��$��������������]fieldPtr$ ��or�$�����������]valuePtr$ ���$�������������;]recordID$ �� =������������� ADO]� �������������7ddo match��B���0���������� ]found��fieldPtr$)��valuePtr$)��u�6���$��������]�found����?���������0�����������]�found���recordID$�a�*�����������d]found������������������������///]f�*�����������]found��?�������?������������g]���������������]����������������������$����������������7d return value���� ��������������� ]���found��������������������DFCC4D�[%�f���T��%��$��gSNopen EVA to view a file, assumes EVA is in /Applications/EdGCM Helper Apps/EVAZ����������S����� ������������S input���&��������������S path to file���.��������������^%��@�������� ����@���.����Ϊ�0001^%��@���������filePath$��path(�13�$�������Ϊ�EMak^filePath$ ���S���������Ϊ�������� �������Ϊ��s�hSmake doc���B���0����Ϊ��� ^path( � PM_FindFolder� applications��i�F���4����Ϊ����^path( � PM_MakePath�path(��EVA������J���8����Ϊ�����^path( � PM_MakePath�path(��EVAtmp@����)�4���"����Ϊ����^��path(�� $�������"�������Ϊ����^��path(����������Ϊ�zzz^zz�.�������Ϊ�^fileRef� �path(��2��� ����Ϊ����^�g�fileRef��filePath$���$�����������^ �fileRef���������������$�����������S set doc type�2��� ��������^#� PM_Platform� $�����.�����������111^�path(��EVA_��.�����������^�path(��EVAl�������������^�D���2��������^��path(���.edgcm@�� $�����2��� ��������^��path(���.edgcm����������������^���J���8��������^�path(���.TXT��path(���.edgcm �������������^�������������� �����������Sopen doc��2��� ��������^#� PM_Platform� $�����2��� ��������^ignore��.�)�path(�������������^f�B���0��������^ignore��.�)�path(���.edgcm@��G������������^ ��������������������������������DFCC4D7z�&�������������"0 setup array "De�:���(�����������M SearchArrayM�@�������MM���@���.����������� SearchArrayM�?�������MMMM����M�4�@���.���������d�d SearchArrayM�@��������MMMM����M�4�@���.������������ SearchArrayM�@��������MMMM����M���@���.����������� SearchArrayM�@�������MMMM�v���M���@���.���������d�d SearchArrayM�@�������MMMM����M ���� ����^8�d�d"0find "���P���>���������d�d List_FindM�?�������MM�����MM SearchArrayMM����������������DFCC4DGI�$�������������� List_ShowAll�7{��������DFCC4DL�k�5�"��������  List_Delete������������DFCC4D�8g�"�����$��#��g������rf�"�����������i��^���������"��������������^���������"��������������^������nu�*���������������^������?����������0������������� ^ HelperAppse��?��������a�"�����������0001^�5�������00�"�����������EMak#^Use_EVA������������������������������������������������������������DFCC4Dv�P�(�:���(��� �2�2�^�s�ss�������������&������ �2�2�^ vRecNum�v�e����������2�2�^T�^���L�����2�2�^ vRecNum� �s��s�s of m��s� �Ls��������� �2�2�^nn������������������������������������������������������������DFCC4D9'����������������*�����������nera�@$�����:���(����������� xml_button �@��������������8���&������������[�@Y�p DontReplace�������������������6�8���&������������[�@Y�p DontReplace����������������������2��� ������������ xml_button ��������������*����������������@$���2��� ������������ xml_button �@������������������������ ������������������������DFCC4D '����������������*���������������@$���2��� ������������ xml_button �?������������������� ��������������key>ff����DFCC4D/`'���������������6�*���������������@$���2��� ��������nera xml_button �����������������������ff ��������������Yj������DFCC4Dj1B���������������*���������������MMM�M@$M��MM������������������>���,������������MM MFindMasterFormb�M@M�?�������MM���F���4����\���� Mx�dFind FieldToSearchM FieldToSearchMM���>���,������������MM MFindMasterFormb�M@M�@��������MM���L���:����������� Mx�dFind FieldToSearch eListM FieldToSearchMMSe��������s�������4���"����������� FieldToSearchMM�?�������M����������������"����������������������DFCC4D6 &�������������d�d�*������������d�d�$���B���0���������d�d � dFind SearchTypek SearchTypea�2��� ���������d�d SearchTypekS@���������������������d�dM��������������������������DFCC4DQ�.� &�:���(���������d�d ARRAY STRING(80;FieldToSearch;0)���6���$���������d�dARRAY STRING(80;SearchType;0)���������������d�d���L���:���������d�d2LIST TO ARRAY("dFind FieldToSearch";FieldToSearch)���F���4���������d�d,LIST TO ARRAY("dFind SearchType";SearchType)?��������������DFCC4DA����������������������������������������������������DFCC4D0�,�i)�*������������d�d InfoText_LinkSearch��DFCC4DN �E�0������������� InfoText_LinkListToSearch�������������������������������������������������������������DFCC4D"�i'�(������������� InfoText_LinkAdd\p����DFCC4D �L�/Y=�*�������X �� InfoText_LinkRemove��DFCC4Di����������������������������������������������������DFCC4DT�,�3���������������*�������L������p$����(����������������� �LinkModeLO��������������������8���&������������� �LinkModeL�p��?����������8���&��������� � FieldList�p��?����������0�������������| � FieldList��?���������������������ff��M�8���&������������� �LinkModeL�p��@�����������0��������������� � FieldList����������������������������������.�����������DK@��/ � LinkTablePtrn���V���D���������;$�S �InfoText_LinkFieldPtr � FieldList � SearchListe��������������������M_������DFCC4D[09�������������d�d����,�����������d�dF����FF� MAC001gC9Fp�<���*��������d�dFFF�����FF�����FF�MAC@�FF���$�����������d�dF�FF�����FF ������DFCC4D!����������������������������������������������������DFCC4D&<�{?������'+��&+��g�(�����������{��@�$@���������������������M�6���$�����������S initialize the busy meter to 0���(���������������@ @ vBusyMeterB����0��������������� @ vBusyMeterB-@����������������������ߺ��������F���4����ߺ����S/ set the timer to execute each 15th of a second���(�������ߺ�����@@�@�������������������ߺ��������(�������ߺ�����@@�$@��������������ߺ������ �b���P����ߺ����SJ if the busy meter's value is less than 100, add to it, otherwise reset it@��8���&����ߺ�����@ @ vBusyMeterB�wl@�@�����������B���0����ߺ�� @ vBusyMeterB- @ vBusyMeterB�-�@�@�����������������ߺ�����@���0�������ߺ�d @ vBusyMeterB-@�����������V��������ߺ�����@�����������ߺ�������&�������ߺ�����Semergency exit@��,�������ߺ�����@@�x @"�x @3�����������ߺ��L@���������ߺ�����@�����������ߺ��������(�������ߺ�����@@�$@�� ������������ߺ��������D���2����ߺ�����S, just cancel it if it is called from outside����������ߺ�� @����������ߺ���������������ߺ����@��������������������������������������������������������������DFCC4D4Z����������������������������������������������������DFCC4D|����������������������������������������������������DFCC4DD��������������d�d""���*������������d�d"""�"$"�� ""���,������������d�d "InfoText_DragAndDrop�"���*������������d�d"""�"$"�� ""������n���������d�d "InfoText_DragAndDrop�"" "Pict1"" "ItemName_""I?�������""" " ItemCaption""I?�������"""�4�@���.���������d�d "Title1�" " ItemCaption""I?�������"""�������������d�d""������������������������������������������������������DFCC4D.kg�f�0������������d�d"3Hgo the previous figure�"��R���@���������d�d "InfoText_CaptionPrevNext�" "figNumx"�"f"f?�������""�����������������������������������������DFCC4D<-��<X�,������������d�d"3Hgo the next figure�"���N���<���������d�d "InfoText_CaptionPrevNext�" "figNumx""f?�������""��������������������������������������������������DFCC4D\Z_{�2��� ���� ���� Info_iPhoto_PasteSaveAsMenu����������������������������������������������������������DFCC4Df����������������������������������������������������DFCC4Du����������������������������������������������������DFCC4DR�<4��������������v�*������������d�dfff�f@$f��ff�������������d�d ���������A�d�d����������������������������������������������������������DFCC4DB����������������������������������������������������DFCC4D%����������������������������������������������������DFCC4D����������������������������������������������������DFCC4Dq8T�������������d�d �*������������d�d�$���(������������d�d bNeedRedraw��������������d�d������������������������������������������DFCC4Dop����������������������������������������������������DFCC4D[�P�(�:���(��� �2�2�^�s�ss�������������&������ �2�2�^ vRecNum�v�e��������2�2�^~�^���L�����2�2�^ vRecNum� �s��s�s of m��s� �Ls��������� �2�2�^nn������������������������������������������������������������DFCC4Dg����������������������������������������������������DFCC4DG�������������d�d6�*������������d�d�$���(������������d�d mNeedRedraw�i�������������d�d������������������������������������������DFCC4Df ����������������������������������������������������DFCC4DB2�P�(�:���(��� �2�2�^�s�ss�������������&������ �2�2�^ vRecNum�v�e����������2�2�^�^���L�����2�2�^ vRecNum� �s��s�s of m��s� �Ls��������� �2�2�^nn������������������������������������������������������������DFCC4D,�8���&���������d�d���� Capitalize����������������������������������������������������������DFCC4Dw'����������������������������������������������������DFCC4DlZ/�������������d�dP�*������������d�d�$�����(������������d�d tNeedRedraw���������������d�d������������������������������������������DFCC4D=����������������������������������������������������DFCC4D*����������������������������������������������������DFCC4Dw�������������d�d6�*������������d�d�$���(������������d�d mNeedRedraw�i�������������d�d������������������������������������������DFCC4Dm�������������d�d6�*������������d�d�$���(������������d�d mNeedRedraw�i�������������d�d������������������������������������������DFCC4D Zi#_�������������� �*�����������   � @$ ��  ���(���������������� � �� Subject er������������l mlI����������������������������������������DFCC4D:�.$E��������������um�*���������������}��}@$���}}���b���P��������L�}}�} �Years}�}@������������}�}@} �Years�}@������������}}}�:���(�������������� ��}�� } �Years} �Years}}}�����������������������,������������������ ��}���������������������������������I������������������ ��������������������DFCC4D"r:�������������� �*�������������   � @$ ��  �(��������������� � �� Keepers rs���������������le����������������������������������������DFCC4D�|������"R��!R��,,\�(�����������5��^���:$�������4���"�����������^ �Months�����������������&��������������^� � �� �Months��������������^�*�����������0001^� � ����@�������00������������EMak^ S����������������^������������������������������������DFCC4DM�v�2N�,������������d�d "Cleanup_ShowRunFolder"PDFCC4DW�,#2�&����� �� �� Cleanup_Deletee}�,�������������� ]Cleanup_UpdateNumbers]������������������������DFCC4D�q"�������������d�d"" �*������������d�d"""�"$"��""�2��� ���������d�d " CurrentSpaceD" "CurSpacep"�������������d�d""I������������������������������DFCC4D)�2������%��$��g�GT�(������������� �@�$@�� ��r�0��������������Supdate records & values ��P���>�����������@�@������ @Run_Critical_GetRunN;@�@�������������*���������������SSafe_CurrentState ���*�����������EMak @Cleanup_UpdateNumbers I�8���&������������ @Cleanup_SetYearsList8 @Years����(��������0001@@�$@���07�.��������EMakSsetup record & values ta�P���>���������@�@������ @Run_Critical_GetRunN;@�@�������������*��������SSafe_CurrentState �*������������ @Cleanup_UpdateNumbers�8���&�����111 @Cleanup_SetYearsList8 @Years������������$��������S setup values�&��������RRR @Keepers@� � ����&����������� @Subject@� � ���H���6��������@� @Months��@�?��������@ @Months����6���$�����������@ w�l Months Full� @Months��R��������������(���������������Sunset checkboxes���� ������������@�� ��@��� ���������������@�� ��@���� ���������������@�� ��@���� ���������������@�� ��@�������������������@����������������������������������������������������DFCC4D{�P�(�:���(��� �2�2�^�s�ss�������������&������ �2�2�^ vRecNum�v�e� ��������2�2�^�^���L�����2�2�^ vRecNum� �s��s�s of m��s� �Ls��������� �2�2�^nn `����������������������������������������������������������DFCC4Dk#�P�(�:���(��� �2�2�^�s�ss�������������&������ �2�2�^ vRecNum�v�e����������2�2�^ �^���L�����2�2�^ vRecNum� �s��s�s of m��s� �Ls��������� �2�2�^nn�[����������������������������������������������������������DFCC4DS��"������������� Flux_Start����������DFCC4Dl�� ������������� Flux_End@�������������DFCC4D<q�*�����������^N>,s�s@$��ss�6���$����ccntl�� ��ss� s sRSFs sRSFsss�����������������hlu��������������������������������������������������DFCC4D��&�������)6^N>, OHT_Setup���&�������p ^N>, OHT_Vertflux_I��������������W��HT������DFCC4D��&������������� OHT_SetupO�$��������������� OHT_Atrans_I��������������������������������������������������������������������������������DFCC4D|��&��������������� OHT_Setup�"������������� OHT_Nov30_I�������������mous������������DFCC4D{��~�&������������� OHT_Setup�$��������������� OHT_OTSpec_I�������������d�d��������DFCC4Dl��~�&������������� OHT_Setup"� �����������^N>, OHT_RSF_Icn����������������HT������������DFCC4D8/�,�.����� 9�� 9���( ( OHT_Setup�@���$�������������� ( OHT_Deepocn_I(��������Ǫ����((DFCC4D= �=��������f0���*�������mp@^N>,OOO�O@$O�� OO�&�����������^N>, Flux_LoadRecord���*��������P��OOO�O@$O��OO���&�������������� Flux_LoadRecord���������������������������������������DFCC4DC�P�(�:���(��� �2�2�^�s�ss�������������&������ �2�2�^ vRecNum�v�e��������2�2�^n�^���L�����2�2�^ vRecNum� �s��s�s of m��s� �Ls��������� �2�2�^nn������������������������������������������������������������DFCC4D8����������������������������������������������������DFCC4D<�mG�(�����b�� b�� �PostProcessing_TabsTX����DFCC4Dp��$������'��&���x�(��������������� @�$@�� ������������������@on�z���h�����������@ #@PostProcessing_Button��P@�?��������wX.fix list to match selection when changing tabs���:���(������������#@PostProcessing_Button@��������������`���N��������0001@ #@PostProcessing_Button�@������������wXupdate for different run�21�(�����������EMak @Run_PostProcessing4D�2��� ������������ @PostProcessing_SetYearsLists���0�����������aaaa @PostProcessing_SummaryLists�0��������������� @PostProcessing_Tab �X����(��������������@�� handle toolbar ���2��� ��������D @PostProcessing_ExternalButton��������������)@��(�����������d@ @�@�����������(���������������@ @�$@������0�����������@���`Ddo we need this call? ���(��������������� @PostProcessing_Load��(��������������� @Run_PostProcessing���2��� ��������� @PostProcessing_SetYearsLists���0��������������� @PostProcessing_Tab �X�,�(���������������@ @�$@������*��������������� @PostProcessing_Timer(�����������������@������������������������������DFCC4D����������������������������������������������������DFCC4D�d�(D�<���*���������d�d "Info_iPhoto_Select�""I?�������""��������������������������������������������������DFCC4Dz�d�(D�<���*���������d�d "Info_iPhoto_Select�""I@��������""��������������������������������������������������DFCC4Dg�d�(D�<���*���������d�d "Info_iPhoto_Select�""I@��������""��������������������������������������������������DFCC4DriD`�<���*���������d�d "Info_iPhoto_Select�""I@�������""��������������������������������������������������DFCC4Dq�d�(D�<���*���������d�d "Info_iPhoto_Select�""I@�������""��������������������������������������������������DFCC4DUI�l�<���*���������d�d "Info_iPhoto_Select�""I@�������""��������������������������������������������������DFCC4D�d�(D�<���*���������d�d "Info_iPhoto_Select�""I@�������""��������������������������������������������������DFCC4Db:�d�(D�<���*���������d�d "Info_iPhoto_Select�""I@�������""��������������������������������������������������DFCC4DS�d�(D�<���*���������d�d "Info_iPhoto_Select�""I@�������""��������������������������������������������������DFCC4D_�d�(D�<���*���������d�d "Info_iPhoto_Select�""I@�������""��������������������������������������������������DFCC4D5r�d�(D�<���*���������d�d "Info_iPhoto_Select�""I@�������""��