MAKE

page d'accueil
Boite à outils

Cette page a été mise à jour le 29 décembre 2009
Contact

Welcome page
Tools box

Depuis l'ILE, les compilations se sont singulièrement complexifiées : modules, programmes et programmes de service, groupes d'activation, bibliothèques d'attachement ... l'option 14 ou 15 de PDM est complètement dépassée.

Cet outil permet de préparer les commandes de compilation de n'importe quel objet compilable. Les options de compilations sont construites à partir des trois éléments clé d'un source :

  • son type,
  • son nom,
  • sa bibliothèque.

Cet outil permet de préparer un plan de compilation pour chaque objet à créer : une pile de commandes AS400. Chaque commande est distinguée par son numéro d'ordre. Associée aux 3 clés précédentes, ces 4 clés permettent de sauvegarder et reconstruire la compilation de chaque objet.

Le lancement d'une compilation se fait sur la base de tous les paramètres que STRPDM est capable de fournir (voir le code de *CMD MAKE), et exploite principalement

  • &S = type de membre source
  • &N = nom du membre source
  • &L = nom de la bibliothèque source
  • &O = nom de la bibliothèque objet (option PDM F18)
  • &R = *YES/*NO remplacer l'objet (option PDM F18)

Retrouver les options pour un membre à compiler

principe : rechercher dans le fichier des options toutes les lignes qui concernent le membre source à compiler. Chaque ligne manquante a une valeur par defaut

cle de recherche :

  1. type + ordr + membre + lib
  2. type + ordr + lib
  3. type + ordr + membre
  4. type + ordr

la ligne type (4) est sensée indiquer la commande de base

la ligne type + lib (2) est sensée rediriger la sortie (fichier physique : dans la bibliothèque des fichiers, fichier dspf : avec les programmes, ...)

la ligne type + membre (3) est sensée préparer l'environnement de compilation (crtdupobj sur les fichiers de travail pour un rpg, taille de page pour un prtf, ...)

la ligne type + membre + lib (1) traite les cas particuliers

Exemple :

 type ordre mbr bib
pf 500 * * crtpf srcfile(&l/&f) replace(&r)
pf 500 * prot &1 file(fict/&n)
pf 500 * pro &1 file(ficb/&n)
pf 600 * pro crtdupobj &n ficb *file fics

Au cours de la préparation d'une ligne de commande, le paramètre &1 permet d'utiliser ce qui a déja été préparé. Ainsi la dernière ligne de paramètre peut, en ne reprenant pas ce qui précède, donner une commande de compilation complètement spécifique.

resultat :

éléments fournis par l'appel :
&s &n &f &l &o &r

pf stcr40p qddssrc prot prod *yes
>> crtpf srcfile(prot/stcr40p) replace(*yes)
file(fict/stcr40p)

pf stcr40p qddssrc pro prod *yes
>> crtpf srcfile(prot/stcr40p) replace(*yes)
file(ficb/stcr40p)
+ crtdupobj stcr40p ficb *file ecofict

Avec l'expérience, on constate qu'environ 500 lignes suffisent pour définir les paramètres de compilation d'une application entière.

les valeurs recommandées pour la séquence (ou numéro d'ordre) sont

  • séquence action
  • 100         chgliblist
  • 200         dltf (pour PF, LF)
  • 300         crtdupobj
  • 400         chgobjown
  • 500         crtxxx (module)
  • 600         crtpgm
  • 650         chgpgm user(*owner)
  • 700         chgobjown ...
  • 800         chgobjatr k9(specifique)
  • 900         grtobjaut ... *all
  • 910         grtobjaut *public *use

chgliblist est obligatoire pour

  • que les LF trouvent leur PF
  • que les *RPG* trouvent leurs copies

chgobjown est obligatoire pour recompiler un programme déclaré en user(*owner)

Since ILE, compilations are singularly more complex : Modules, Programs and Service programs, actvation groups, binding directory, ... The 14 or 15 PDM options are completely obsolete.

This tool permits to prepare the orders of compilation of any object compilable. The options of compilations are constructed from the three elements key of one source

  • it's type
  • its name,
  • its library.

This tool permits to prepare a compilation plan for each object to create: a stack of AS400 orders. Each order is distinguished by its number of order. Associated to the 3 previous keys, these 4 keys permit to save and to rebuild the compilation of each objet.

The launching of a compilation is done on the basis of all parameters that STRPDM is able to provide (see the code of *CMD MAKE below), and exploit mainly 

  • &S = type of source member 
  • &N = name of the source member 
  • &L = name of the source library 
  • &O = name of the object library (option PDM F18) 
  • &R = *YES/*NO to replace the object (option PDM F18)

Retrieve the options for a member to compile 

principle: search in the options file for all lines that concern the member source to compile. Every missing line has a default value

search key order: 

  1. type + ordr + member + lib 
  2. type + ordr + lib 
  3. type + ordr + member 
  4. type + ordr 

the type line (4) is judicious to indicate the basic order

the line type + lib (2) is judicious to redirect the exit (physical file: in the library of the files, file dspf,: with the programs,... )

the line type + member (3) is judicious to prepare the compilation environment (crtdupobj the work files for a rpg, page size for a prtf,... )

the line type + member + lib (1) treats the particular cases 

Example: 

 type order mbr bib 
pf 500 * * crtpf srcfile(&l/&f) replace(&r)
pf 500 * prot &1 file(fict/&n) 
pf 500 * pro &1 file(ficb/&n)
pf 600 * pro crtdupobj &n ficb *file fics 


During the preparation of an order line, the parameter &1 permits to use what has already been prepared. So the last line of parameter can, in not taking what precedes, to give a completely different compilation order.

result,: 

elements provided by the call: 
&s &n &f &l &o &r

pf stcr40p qddssrc prot prod *yes
 >> crtpf srcfile(prot/stcr40p) replace(*yes) 
          file(fict/stcr40p)      

 pf stcr40p qddssrc pro prod *yes
 >> crtpf srcfile(prot/stcr40p) replace(*yes) 
          file(ficb/stcr40p) 
 + crtdupobj stcr40p ficb *file ecofict

With the experience, I have noted that about 500 lines are sufficient to define the compilation parameters of a whole application. 

the recommended values for the sequence (or order number) are 

  • sequence action 
  • 100         chgliblist
  • 200         dltf (for PF, LF) 
  • 300         crtdupobj 
  • 400         chgobjown
  • 500         crtxxx (module)
  • 600         crtpgm 
  • 650         chgpgm user(*owner) 
  • 700         chgobjown... 
  • 800         chgobjatr k9(specifique) 
  • 900         grtobjaut... *all 
  • 910         grtobjaut *public *uses 

chgliblist is mandatory for

  • the LF to find their PF
  • the *RPG* to find their /COPY

chgobjown is mandatory to compile a program declared in user(*owner)

*PNLGRP MAKE3RHP (mainhelp est décrit dans TrucAstuceAs400.htm)(mainhelp is described in french into TrucAstuceAs400.htm)

Mode d'emploi

Options classiques :

  • 1 = créer : ajouter une commande
  • 2 = modifier : corriger une commande
  • 3 = copier : ajouter une commande basée sur la copie d'une autre
  • 4 = supprimer : enlever une ligne
  • 5 = afficher : consulter une commande

Sur la page détail; la touche F4 permet d'appeler l'aide le la commande as400

Sur la page principale, la saisie correcte des paramètres d'une compilation dans les critères de sélection permet par F14 d'afficher la pile de commandes générées, comme le fait l'AS400 sur la page d'aide d'une commande

Instructions for use 

Classic Options: 

  • 1 = to create: to add a commande
  • 2 = to modify: to correct an order
  • 3 = to copy: to add an order based on the copy of an other
  • 4 = to suppress: to remove a line 
  • 5 = to display: to consult an order 

On the detail page the F4 key permits to call the as400 command help

On the main page, the correct keying of a compilation parameters in the selection criterias permits by F14 to display the stack of orders generated, as does the AS400 on the command help page 

Exemple les commandes impliquées dans la compilation de MAKE Sample : the commands implied in MAKE compilation

MAKE3R Mise à jour des paramètres de compilation 9/03/05 ECOMAT MAKE3RB 09:09:51 EB10168 Filtrer avec : * MAKE* ECOLIB
1=Ajouter 2=Modifier 3=Copier 4=Supprimer 5=Visualiser
S Compiler Seq Membre Library Action Commande ...
CLLE 500 * * Compil CRTBNDCL PGM(&O/&N) SRCFILE(&
CLLE 500 MAKE* * Compil CRTBNDCL PGM(&O/&N) SRCFILE(&
CLLEMOD 500 * * Compil CRTCLMOD MODULE(&O/&N) SRCFIL
CLP 500 * * Compil CRTCLPGM PGM(&O/&N) SRCFILE(&
CMD 500 * * CRTCMD CMD(&O/&N) PGM(*LIBL/&
CMD 500 MAKE * compil CRTCMD CMD(&O/&N) PGM(*LIBL/M
CMD 500 MAKEPAR * compil CRTCMD CMD(&O/&N) PGM(*LIBL/M
DSPF 500 * * compil CRTDSPF FILE(&O/&N) SRCFILE(&
LF 500 * * Compil CRTLF SRCFILE(&L/&F) SRCMBR(&
LF 500 * ECOLIB Compil &1 FILE(&L/&N) PF 010 * ECOLIB MENAGE dltf file(ecolib/&N) PF 500 * * Compil CRTPF SRCFILE(&L/&F) SRCMBR(&
PF 500 * ECOLIB Compil &1 FILE(ecolib/&N) PFCHG 500 * * Compil CHGPF FILE(&O/&N) SRCFILE(&L/
PNLGRP 500 * * Compiler CRTPNLGRP PNLGRP(&O/&N) SR + PRTF 500 * * Compil CRTPRTF FILE(&L/&N) SRCFILE(&
QMQRY 500 * * Compil CRTQMQRY QMQRY(&O/&N) SRCFILE
RPG 500 * * Compil CRTRPGPGM PGM(&O/&N) SRCFILE(
RPGLE 500 * * Compil CRTRPGMOD MODULE(&L/&N) SRCFI
2 RPGLE 500 * ECOLIB CRTRPGMOD MODULE(&L/&N) SRCFI
RPGLE 600 * * link CRTPGM PGM(&O/&N) ACTGRP(*CAL
2 RPGLE 600 MAKE* * CRTPGM PGM(&O/&N) ACTGRP(QILE
RPGLEMOD 500 * * Compil CRTRPGMOD MODULE(&L/&N) SRCFI
RPGLEMOD 500 * ECOLIB Compil &1 DBGVIEW(*SOURCE) RPT 500 * * Compil CRTRPTPGM PGM(&O/&N) SRCFILE(
SQLRPG 500 * * compil CRTSQLRPG PGM(&O/&N) SRCFILE(
SQLRPGLE 500 * * Compil CRTSQLRPGI OBJ(&O/&N) SRCFILE
SQLRPGLE 600 * * link CRTPGM PGM(&O/&N) SQLRPGLEMO 500 * * Compil CRTSQLRPGI OBJ(&O/&N) SRCFILE

F3=Quitter F12=Abandonner F5=Rafraichir F14=Commandes paramétrées


Détail de la commande de compilation du module module compilation command details

MAKE3R Mise à jour des paramètres de compilation 9/03/05 ECOMAT MAKE3RC 09:11:51 EB10168 Compilateur RPGLE Sequence 500 Membre source * (= nom d'objet) Bibliothèque source ECOLIB Action (commentaire) Commande AS400 CRTRPGMOD MODULE(&L/&N) SRCFILE(&L/&F) OPTION(*NODEBUGIO *SRCSTMT *SECLVL) DBGVI
EW(*SOURCE) Monmsg (ESCAPE ou IGNORE) F3=Quitter F12=Abandonner
Appel de l'aide AS400 The AS400 helper
Créer un module RPG (CRTRPGMOD) 

Indiquez vos choix, puis appuyez sur ENTREE.

Module . . . . . . . . . . . . . > £N Nom, *CTLSPEC
Bibliothèque . . . . . . . . . > £L Nom, *CURLIB
Fichier source . . . . . . . . . > £F Nom, QRPGLESRC
Bibliothèque . . . . . . . . . > £L Nom, *LIBL, *CURLIB
Membre source . . . . . . . . . *MODULE Nom, *MODULE
Fichier STREAM source . . . . .

Niveau gravité pour génération 10 0-20
Texte 'descriptif' . . . . . . . *SRCMBRTXT


Autres paramètres

Options de compilation . . . . . > *NODEBUGIO *XREF, *NOXREF, *GEN...
> *SRCSTMT
+ si autres valeurs > *SECLVL
A suivre...
F3=Exit F4=Invite F5=Réafficher F10=Autres paramètres F12=Annuler
F13=Mode d'emploi invite F24=Autres touches
Détail de la commande de création du programme program creation command detail

MAKE3R Mise à jour des paramètres de compilation 9/03/05 ECOMAT MAKE3RC 09:13:27 EB10168 Compilateur RPGLE Sequence 600 Membre source MAKE* (= nom d'objet) Bibliothèque source * Action (commentaire) Commande AS400 CRTPGM PGM(&O/&N) ACTGRP(QILE) Monmsg (ESCAPE ou IGNORE) F3=Quitter F12=Abandonner
Vérifier la compilation de MAKE3R MAKE3R Compilation checker

MAKE3R Mise à jour des paramètres de compilation 9/03/05 ECOMAT MAKE3RB 09:19:06 EB10168 Filtrer avec : RPGLE MAKE3R ECOLIB 1=Ajouter 2=Modifier 3=Copier 4=Supprimer 5=Visualiser S Compiler Seq Membre Library Action Commande ... RPGLE 500 * * Compil CRTRPGMOD MODULE(&L/&N) SRCFI
RPGLE 500 * ECOLIB CRTRPGMOD MODULE(&L/&N) SRCFI
RPGLE 600 * * link CRTPGM PGM(&O/&N) ACTGRP(*CAL
RPGLE 600 MAKE* * CRTPGM PGM(&O/&N) ACTGRP(QILE
F3=Quitter F12=Abandonner F5=Rafraichir F14=Commandes paramétrées

MAKE5R Confirmation de la pile de commandes 9/03/05 ECOMAT MAKE2RB 09:19:12 EB10168 5=Visualiser S Monmsg Commande ... ESCAPE CRTRPGMOD MODULE(ECOLIB/MAKE3R) SRCFILE(ECOLIB/QPGMSRC) OPTION(*N ESCAPE CRTPGM PGM(ECOLIB/MAKE3R) ACTGRP(QILE) F3=Quitter F12=Abandonner F5=Rafraichir
Un autre exemple plus complexe An other sample more complex

MAKE3R Mise à jour des paramètres de compilation 9/03/05 ECOMAT MAKE3RB 09:18:18 EB10168 Filtrer avec : RPG AM64MVOL VBEL 1=Ajouter 2=Modifier 3=Copier 4=Supprimer 5=Visualiser S Compiler Seq Membre Library Action Commande ... RPG 100 * VBEL* env CHGENV GG RPG 300 AM64MVOL VBEL* ovrdbf CRTDUPOBJ OBJ(AM64MRP2) FROML
RPG 310 AM64MVOL VBEL* ovrdbf CRTDUPOBJ OBJ(AM64MRP2) FROML
RPG 320 AM64MVOL VBEL* ovrdbf CRTDUPOBJ OBJ(AM64MVP1) FROML
RPG 330 AM64MVOL VBEL* ovrdbf CRTDUPOBJ OBJ(AM64MVP1) FROML
RPG 350 AM64MVOL VBEL* libl ADDLIBLE LIB(AMXLIBX) POSITIO
RPG 400 * VBEL* proprio CHGOBJOWN OBJ(&O/&N) OBJTYPE(
RPG 500 * * Compil CRTRPGPGM PGM(&O/&N) SRCFILE(
RPG 500 * VBEL* Compiler CRTRPGPGM PGM(&O/&N) SRCFILE(
RPG 650 * VBEL* ExecOwner CHGPGM PGM(&O/&N) USRPRF(*OWN
RPG 700 * VBEL* proprio CHGOBJOWN OBJ(&O/&N) OBJTYPE(
RPG 800 * VBEL* userattr CHGOBJATR OBJ(&O/&N) OBJTYPE(
F3=Quitter F12=Abandonner F5=Rafraichir F14=Commandes paramétrées

MAKE5R Confirmation de la pile de commandes 9/03/05 ECOMAT MAKE2RB 09:18:25 EB10168 5=Visualiser S Monmsg Commande ... ESCAPE CHGENV GG ESCAPE CRTDUPOBJ OBJ(AM64MRP2) FROMLIB(*LIBL) OBJTYPE(*FILE) TOLIB(QTEMP ESCAPE CRTDUPOBJ OBJ(AM64MRP2) FROMLIB(*LIBL) OBJTYPE(*FILE) TOLIB(QTEMP ESCAPE CRTDUPOBJ OBJ(AM64MVP1) FROMLIB(*LIBL) OBJTYPE(*FILE) TOLIB(QTEMP ESCAPE CRTDUPOBJ OBJ(AM64MVP1) FROMLIB(*LIBL) OBJTYPE(*FILE) TOLIB(QTEMP IGNORE ADDLIBLE LIB(AMXLIBX) POSITION(*LAST) IGNORE CHGOBJOWN OBJ(VBEL/AM64MVOL) OBJTYPE(*PGM) NEWOWN(WNER) ESCAPE CRTRPGPGM PGM(VBEL/AM64MVOL) SRCFILE(VBEL/QPGMSRC) ESCAPE CHGPGM PGM(VBEL/AM64MVOL) USRPRF(*OWNER) ESCAPE CHGOBJOWN OBJ(VBEL/AM64MVOL) OBJTYPE(*PGM) NEWOWN(AMAPICS) ESCAPE CHGOBJATR OBJ(VBEL/AM64MVOL) OBJTYPE(*PGM ) KEY09(JPLTOOLS) F3=Quitter F12=Abandonner F5=Rafraichir
Deuxième partie : lancement d'une compilation

options PDM :

MK = MAKE E(&E) F(&F) G(&G) H(&H) J('&J') L(&L) N(&N) O(&O) P(&P) R(&R) S(&S) X(&X) C(*YES) 

MM = MAKE S(&S) L(&L) F(&F) N(&N) O(&O) COMPILER(MOD) 
P(&P) G(&G) H(&H) J(&J) E(&E) R(&R) X(&X) C(*YES) 

MP =  MAKEPAR

MK sert à compiler tous les objets "classiques". MM permet de compiler un module

second part : launching compilation

PDM options:

MK = MAKE E(&E) F(&F) G(&G) H(&H) J('&J') L(&L) N(&N) O(&O) P(&P) R(&R) S(&S) X(&X) C(*YES) 

MM = MAKE S(&S) L(&L) F(&F) N(&N) O(&O) COMPILER(MOD) 
P(&P) G(&G) H(&H) J(&J) E(&E) R(&R) X(&X) C(*YES) 

MP = MAKEPAR

MK is used to compile any "classic" object. MM is used to compil  one module

Documentation is not easy for a tool I know very well. Any suggestion is welcome.

Versionning 

last version : How to upload to my 400

CHGPFM FILE(JPLTOOLS) MBR(MAKE ) SRCTYPE(CMD ) EXPDATE(*NONE) SHARE(*NO) TEXT('compiler un objet ') 
CHGPFM FILE(JPLTOOLS) MBR(MAKEC ) SRCTYPE(CLLE ) EXPDATE(*NONE) SHARE(*NO) TEXT('Compilation avec des options ')
CHGPFM FILE(JPLTOOLS) MBR(MAKEL1 ) SRCTYPE(LF ) EXPDATE(*NONE) SHARE(*NO) TEXT('compilation avec des options ')
CHGPFM FILE(JPLTOOLS) MBR(MAKEL2 ) SRCTYPE(LF ) EXPDATE(*NONE) SHARE(*NO) TEXT('compilation avec des options ')
CHGPFM FILE(JPLTOOLS) MBR(MAKEP ) SRCTYPE(PF ) EXPDATE(*NONE) SHARE(*NO) TEXT('compilation avec des options ')
CHGPFM FILE(JPLTOOLS) MBR(MAKEPAR ) SRCTYPE(CMD ) EXPDATE(*NONE) SHARE(*NO) TEXT('Mise à jour des paramètres de compilation ')
CHGPFM FILE(JPLTOOLS) MBR(MAKEPARC ) SRCTYPE(CLLE ) EXPDATE(*NONE) SHARE(*NO) TEXT('Paramétrer les compilations ')
CHGPFM FILE(JPLTOOLS) MBR(MAKE2R ) SRCTYPE(RPGLE ) EXPDATE(*NONE) SHARE(*NO) TEXT('Compilation avec options : construire la pile ')
CHGPFM FILE(JPLTOOLS) MBR(MAKE3R ) SRCTYPE(RPGLE ) EXPDATE(*NONE) SHARE(*NO) TEXT('Mise à jour de MAKEP ')
CHGPFM FILE(JPLTOOLS) MBR(MAKE3RFM ) SRCTYPE(DSPF ) EXPDATE(*NONE) SHARE(*NO) TEXT('Mise à jour de MAKEP ')
CHGPFM FILE(JPLTOOLS) MBR(MAKE3RHP ) SRCTYPE(PNLGRP ) EXPDATE(*NONE) SHARE(*NO) TEXT('Aide par PNLGRP ')
CHGPFM FILE(JPLTOOLS) MBR(MAKE4C ) SRCTYPE(CLLE ) EXPDATE(*NONE) SHARE(*NO) TEXT('Compilation avec des options : executer la pile ')
CHGPFM FILE(JPLTOOLS) MBR(MAKE5R ) SRCTYPE(RPGLE ) EXPDATE(*NONE) SHARE(*NO) TEXT('confirmation des commandes ')
CHGPFM FILE(JPLTOOLS) MBR(MAKE5RFM ) SRCTYPE(DSPF ) EXPDATE(*NONE) SHARE(*NO) TEXT('Ecran de confirmation des commandes ')

look at rpg source for /copy or /include, pick them at COPY used in my tools
Before compile, take care of globalization. On a french screen, I can use QCMDCHK with £ at the beginning of the values, it's accepted.
For many countries, it's not true, you may use # instead of £.
The exact correct value is x'7B'. The corresponding character is depending of your JOB CCSID
look at MAKE3R : you can need this version
// remplacer le & par un £ parce que QCMDCHK est chiant
For Pos = 1; Eval Pos = %Scan('&' : Cmd ); if Pos > 0; Cmd = %Replace('#' : Cmd : Pos : 1);
Else;
leave;
EndIf;
Endfor;
// appeler le prompteur de commande
Callp(E) QCmdChk(cmd: %Len(Cmd) );
If %Error;
w2flsp = '60';
iter;
endif;
// remplacer le £ par un & parce que QCMDCHK est chiant
For Pos = 1;
Pos = %Scan('#' : Cmd );
if Pos > 0;
Cmd = %Replace('&' : Cmd : Pos : 1);
Else;
leave;
EndIf;
EndFor;

chgcurlib jpltools
crtcmd cmd(make) pgm(makec) srcfile(jpltools)
crtcmd cmd(makepar) pgm(makeparc) srcfile(jpltools)
crtpf file(makep) srcfile(jpltools)
crtlf file(makel1) srcfile(jpltools)
crtlf file(makel2) srcfile(jpltools)
crtpnlgrp pnlgrp(make3rhp) srcfile(jpltools)
crtdspf file(make3rfm) srcfile(jpltools) rstdsp(*yes)
crtdspf file(make5rfm) srcfile(jpltools) rstdsp(*yes)
crtbndcl pgm(makec) srcfile(jpltools) dftactgrp(*no) actgrp(*caller) replace(*yes) dbgview(*all)
crtbndcl pgm(makeparc) srcfile(jpltools) dftactgrp(*no) actgrp(*caller) replace(*yes) dbgview(*all)
crtbndcl pgm(make4c) srcfile(jpltools) dftactgrp(*no) actgrp(*caller) replace(*yes) dbgview(*all)
crtrpgmod module(make2r) srcfile(jpltools) option(*nodebugio *srcstmt *showcpy *seclvl *expdds) dbgview(*all)
crtpgm pgm(make2r) bnddir(qc2le) actgrp(qile) usrprf(*user) option(*dupproc *dupvar)
crtrpgmod module(make3r) srcfile(jpltools) option(*nodebugio *srcstmt *showcpy *seclvl *expdds) dbgview(*all)
crtpgm pgm(make3r) bnddir(qc2le) actgrp(qile) usrprf(*user) option(*dupproc *dupvar)
crtrpgmod module(make5r) srcfile(jpltools) option(*nodebugio *srcstmt *showcpy *seclvl *expdds) dbgview(*all)
crtpgm pgm(make5r) bnddir(qc2le) actgrp(qile) usrprf(*user) option(*dupproc *dupvar)

The source code is provided as an open source tool under the GNU General Public License, version 2.  In summary, this license specifies:

By clicking the download link you acknowledge and agree to the terms of the license.

Download the (zipped) SAVF containing the JPLTOOLS : the source file, the message file, the bnddir

THIS TOOLBOX IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PROVIDER OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS TOOLBOX, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.