When you close J you lose the definitions of all the names. What you execute in the ijx window affects the current session, but is not permanent. This is fine when experimenting, but when you start defining things like your centigrade verb you want to record the definition so that you can use it in another session.
Close J and restart it.
You have a clean slate. The definition of centigrade, and all the other names you defined, in the previous session are lost.
At least the primitives are still there!
2 + 5
As you would expect, to maintain a permanent record of your definitions, you save them in files. Files with J sentences and definitions are called script files and you can edit them just as you would edit any other text file. Script files typically have a suffix of .ijs.
Remember: a script file is a source file for definitions.
Although you can use any text editor to work with script files, the J system provides a simple editor that is integrated in ways that make it convenient.
The File|New ijs menu command creates a new script file and a window for editing it. Do this now and you will see that your J session has both an ijx window and a new ijs window.
The ijs window is an edit window on the file with the name in its titlebar. Enter in an ijs window does not execute the line, it just moves to the start of a new line.
Type your centigrade definition into the ijs window.
centigrade =: 3 : 0
t1 =. y - 32
t2 =. t1 * 5
t3 =. t2 % 9
Be sure to use =: instead of =. in the first line. The =: makes a global definition. If you use =. it is a local definition. This important difference is explained shortly.
So far you have just edited changes into the window. The file has not been changed and the verb is still not defined. You have to run the script in order to execute the sentences.
Do menu command Run|Window in the ijs window to save the changes to the file and then execute each of the sentences in the file. This is similar to your typing the contents of the file into the ijx window, except the sentences and results are not displayed. The only display in the ijx window is the system generated sentence that causes the file sentences to be executed. This sentence will be something like:
If an error is reported (output in the ijx window with a vertical bar on the left) then you have a typo in your script. Correct the text in the ijs window and run it again.
The sentences in the script file have been executed and centigrade is now defined. In the ijx window try using centigrade.
The file created with File|New ijs is in the J temp directory and has a temporary format name (a number with an ijs suffix). If you close J now, it will ask if you want to delete that temporary file. If you replied no, you could restart and open that temporary file and run it to define centigrade. However, it would be better to resave it now with a more appropriate name in the J user directory. Use File|Save As..., go up one directory level and then to the the user directory, and set the file name as cf.ijs. The file name in the ijs window titlebar will change to the new name.
Close the cf.ijs window and erase your centigrade definition. You erase the definition of a name by using the utility verb erase with an argument that is the string of the name you want to erase. The result of 1 indicates the erase was successful.
| centigrade 212
Use File|Open to open the cf.ijs window and use Run|Window to run the script to define centigrade.
Let's add a definition for fahrenheit to the cf.ijs window. Type in the following after your centigrade definition. Again, be sure to use =: .
fahrenheit =: 3 : 0
t1 =. y * 9
t2 =. t1 % 5
t3 =. t2 + 32
Use Run|Window to run the sentences in the cf.ijs script. Because these are the first changes to a permanent (non-temporary) file you are prompted to see if you want to save the changes to file. Reply yes, and then test your new verb.
Close J and restart it.
You can run the sentences in the cf.ijs file without opening the file for editing. Use Run|File and select your cf.ijs file. A line similar to
appears in the ijx window to run the sentences in the file and your verbs are now defined.
The line that starts with load that appears in the ijx window is in fact the sentence that causes the sentences in the file to be executed. The menu command is just a short cut way of executing this sentence. The string is the full path name to the file to run. You can shorten this full path name to a relative path name when you type it manually.
To check this, close J, restart it, and verify that centigrade is undefined. In the ijx window execute the following sentence.
Now check that your verbs are defined.
Use File|Open to open your cf.ijs file for editing.
What if there is an error in the script? Let's add an intentional error to the script to see what happens. Add the line foo 123 at the end of the script and run the script again.
| foo 123
An error is reported and the execution of the sentences in the script stops. The number at the end of the error report is the line number in the script that had the error.
Remove the error from the script and run it again.