Subscribe Bookmark RSS Feed

Name Unresolved error with custom function

joe_schaar_gmai

Occasional Contributor

Joined:

Aug 9, 2016

Hello,

I'm attempting to define and use a custom function within a JMP script . Will that run ok? As of now when it gets to the line to call the function (JSload) I get the following error in the log.

Name Unresolved: JSload in access or evaluation of 'JSload' , JSload( temp ) /*###*/

I am passing the function a character string "temp" (a file name with proper path for an xlsx file) and attempting to use the Open command to import that file's contents into a data table. I think though that it is getting caught on the initial call to the function. Here is the script and function function as of now. The variable "temp" appears to be made correctly (checked in the log file).

The code for the Open command comes from a "save script" after an initial data import done manually.

Thanks,

Joe

================================================

For( index1 = 1,index1 <= 1, index1++,

  temp = (filepath||filelist[index1]);

  JSload(temp);

);

JSload = Function({temp},

Open(

  temp,

  Worksheets( "Sheet1" ),

  Use for all sheets( 1 ),

  Concatenate Worksheets( 0 ),

  Create Concatenation Column( 0 ),

  Worksheet Settings(

  1,

  Has Column Headers( 1 ),

  Number of Rows in Headers( 1 ),

  Headers Start on Row( 1 ),

  Data Starts on Row( 2 ),

  Data Starts on Column( 1 ),

  Data Ends on Row( 0 ),

  Data Ends on Column( 0 ),

  Replicated Spanned Rows( 1 ),

  Suppress Hidden Rows( 1 ),

  Suppress Hidden Columns( 1 ),

  Suppress Empty Columns( 1 ),

  Treat as Hierarchy( 0 )

  );

);

3 REPLIES
jerry_cooper

Staff

Joined:

Jul 10, 2014

Hi Joe,

The issue is that you are using the “temp” variable name for your filepath and for the argument in your function definition. If you replace the two instances of “temp” in your function statement with a different, unused variable name, your script should work.

-Jerry

erichill

Staff

Joined:

Oct 1, 2013

Hey, Joe,

Actually, I think reusing the variable "temp" is not the problem, because JMP is saying that "JSload" is what it can't find.  I think the problem is that your function is defined *after* you call it.  In JMP, your function needs to be defined before you call it.  Move the "JSload = function({temp},...)" section to before the for loop and I suspect it will work.

Also, it appears you are missing a closing paren and semicolon at the end of the function definition.

This version works for me:

 

filepath = "c:\users\public\temp\";

fileList = {"myTest.xlsx"};

JSload = Function({temp},

  Open(

    temp,

    Worksheets( "Sheet1" ),

    Use for all sheets( 1 ),

    Concatenate Worksheets( 0 ),

    Create Concatenation Column( 0 ),

    Worksheet Settings(

      1,

      Has Column Headers( 1 ),

      Number of Rows in Headers( 1 ),

      Headers Start on Row( 1 ),

      Data Starts on Row( 2 ),

      Data Starts on Column( 1 ),

      Data Ends on Row( 0 ),

      Data Ends on Column( 0 ),

      Replicated Spanned Rows( 1 ),

      Suppress Hidden Rows( 1 ),

      Suppress Hidden Columns( 1 ),

      Suppress Empty Columns( 1 ),

      Treat as Hierarchy( 0 )

    );

  );

);

For( index1 = 1,index1 <= 1, index1++,

  temp = (filepath||filelist[index1]);

  JSload(temp);

);

HTH,

Eric

joe_schaar_gmai

Occasional Contributor

Joined:

Aug 9, 2016

Thanks Eric. That was the trick!

Joe