@DATABASE "Power_Eng.guide"
@AUTHOR "Jérôme LOUVEL"
@(c) "Copyright 1995 by Jérôme LOUVEL"
@$VER:Power Procedures Guide English 1.30 (01/11/95) Jérôme LOUVEL
@INDEX "INDEX"
@HELP "GLOSSARY"


@NODE INDEX "Index"

        @{u}@{fg highlight}                         @{uu}
             
        Index of POWER Procedures
        @{u}                         @{fg text}@{uu}



        A
        
        @{"Author           " link "AUTHOR"}
        
        
        D
        
        @{"Disclaimer       " link "DISCLAIMER"}
        @{"Distribution     " link "DISTRIBUTION"}
        
        
        F
        
        @{"Features         " link "FEATURES"}
        @{"Future           " link "FUTURE"}
        
        
        G
        
        @{"Glossary         " link "GLOSSARY"}
        @{"Greetings        " link "THANKS"}
        
        
        H
        
        @{"History          " link "HISTORY"}
        
        
        I
        
        @{"Index            " link "INDEX"}
        @{"Installation     " link "INSTALLATION"}
        @{"Introduction     " link "INTRO"}
        
        
        M
                
        @{"Menu             " link "MAIN"}
        
        
        P
        
        @{"Procedures       " link "PROCEDURES"}
        @{"PW_Alert         " link "PW_ALERT"}
        @{"PW_Align         " link "PW_ALIGN"}
        @{"PW_Break         " link "PW_BREAK"}
        @{"PW_BText1        " link "PW_BTEXT1"}
        @{"PW_BText2        " link "PW_BTEXT2"}
        @{"PW_Button1       " link "PW_BUTTON1"}
        @{"PW_Button2       " link "PW_BUTTON2"}
        @{"PW_Check         " link "PW_CHECK"}
        @{"PW_Choice        " link "PW_CHOICE"}
        @{"PW_Color         " link "PW_COLOR"}
        @{"PW_Colors        " link "PW_COLORS"}
        @{"PW_Copyright     " link "PW_COPYRIGHT"}
        @{"PW_Date          " link "PW_DATE"}
        @{"PW_Delete        " link "PW_DELETE"}
        @{"PW_Down          " link "PW_DOWN"}
        @{"PW_Ecma_Ibm      " link "PW_ECMA_IBM"}
        @{"PW_Ent           " link "PW_ENT"}
        @{"PW_Error         " link "PW_ERROR"}
        @{"PW_Flag          " link "PW_FLAG"}
        @{"PW_Font          " link "PW_FONT"}
        @{"PW_Frame1        " link "PW_FRAME1"}
        @{"PW_Frame2        " link "PW_FRAME2"}
        @{"PW_Gauge         " link "PW_GAUGE"}
        @{"PW_Ghost         " link "PW_GHOST"}
        @{"PW_Input1        " link "PW_INPUT1"}
        @{"PW_Input2        " link "PW_INPUT2"}
        @{"PW_Input3        " link "PW_INPUT3"}
        @{"PW_Input4        " link "PW_INPUT4"}
        @{"PW_Insert        " link "PW_INSERT"}
        @{"PW_Move          " link "PW_MOVE"}
        @{"PW_Palette       " link "PW_PALETTE"}
        @{"PW_Parse         " link "PW_PARSE"}
        @{"PW_Prefs         " link "PW_PREFS"}
        @{"PW_Purge         " link "PW_PURGE"}
        @{"PW_Radio         " link "PW_RADIO"}
        @{"PW_Replace       " link "PW_REPLACE"}
        @{"PW_Request1      " link "PW_REQUEST1"}
        @{"PW_Request2      " link "PW_REQUEST2"}
        @{"PW_Request3      " link "PW_REQUEST3"}
        @{"PW_Request4      " link "PW_REQUEST4"}
        @{"PW_Request5      " link "PW_REQUEST5"}
        @{"PW_Request6      " link "PW_REQUEST6"}
        @{"PW_Requester     " link "PW_REQUESTER"}
        @{"PW_Sort          " link "PW_SORT"}
        @{"PW_Space         " link "PW_SPACE"}
        @{"PW_Text          " link "PW_TEXT"}
        @{"PW_Time          " link "PW_TIME"}
        @{"PW_Up            " link "PW_UP"}
        @{"PW_Window        " link "PW_WINDOW"}
        
        
        R
        
        @{"Registration     " link "REGISTRATION"}
        @{"Requirements     " link "REQUIREMENTS"}
@ENDNODE


@NODE GLOSSARY "Glossary"

        @{u}@{fg highlight}                            @{uu}
             
        Glossary of POWER Procedures
        @{u}                            @{fg text}@{uu}



@{u}AMOS Professional Language@{uu}

    Main programmer       : François LIONNET
    Manual's author       : Mel CROUCHER
    Technical's author    : Stephen HILL
    Demos programmer      : Ronnie SIMPSON
    Project manager       : Richard VANNER

© Europress Software Ltd. 1992


@{u}Multi-string / Sub-string@{uu}

A multi-string is a simple string but containing some `|' characters delimi-
ting a certain number of sub-string.

    ex : A$="String 1|String 2|...|String N"

In order to recover the sub-strings, you can use the PW_PARSE procedure.


@{u}Global and local variables@{uu}

All the variables declared within a procedure work separately from the other
variables of your program. These variables are called local variables.

All the external  variables to the  procedures are  called global variables,
and are not affected by the operations within a procedure.

The `Shared' instruction permit to transform local variables of one procedu-
re into global variables.

The `Global' instruction permit to make some variables accessible everywhere
in your program, procedures included.
@ENDNODE


@NODE MAIN "Menu"

        @{u}@{fg highlight}                                               @{uu}
        
        POWER Procedures 1.30   © 1995 by Jérôme LOUVEL
        @{u}                                               @{fg text}@{uu}


        @{" Introduction        " LINK "INTRO"          }  ---  Some introducing words.
        @{" Distribution        " LINK "DISTRIBUTION"   }  ---  For PD distributors.
        @{" Disclaimer          " LINK "DISCLAIMER"     }  ---  Legal considerations.
        @{" Features            " LINK "FEATURES"       }  ---  General description.
        @{" Requirements        " LINK "REQUIREMENTS"   }  ---  About AMOS versions.
        @{" Installation        " LINK "INSTALLATION"   }  ---  Before any usage.
        @{" Procedures          " LINK "PROCEDURES"     }  ---  Complete description of procedures.
        @{" Author's address    " LINK "AUTHOR"         }  ---  How to contact the author ?
        @{" Registration        " LINK "REGISTRATION"   }  ---  To get an unlimited version.
        @{" History             " LINK "HISTORY"        }  ---  What's new in this version ?
        @{" Future              " LINK "FUTURE"         }  ---  Some ideas to develop.
        @{" Greetings           " LINK "THANKS"         }  ---  A few salutations.
@ENDNODE


@NODE INTRO "Introduction"

        @{u}@{fg highlight}                                @{uu}
             
        Introduction to POWER Procedures
        @{u}                                @{fg text}@{uu}



    If you don't have the courage to read the  documentation, you can launch
the demonstration which contain diverse examples of use for each  procedure.
Morever this procedure is unlocked so you can examine the code to estimate
the ease of use.


    It's with a certain pleasure that I give you the result of long hours of
programming. In fact  I started to write this  procedures a  long  time ago,
firstly the standard button procedures for  the menu  of an utilities compi-
lation then considering the  ugly aspect of the  file requester of AMOS (the
AMOS Pro one isn't  perfect at all)  I've got the idea  to rewrite some Gad-
tools gadgets in AMOS to give a more professional look to my programs.


    Then I started to  analyse in  Deluxe Paint  the set of Gadtools gadgets
available and to convert  them in AMOS  with some `Polyline' and others ins-
tructions.  After I improved every  things with colours, different styles of
gadgets. At last I decided to  group all  this procedures  in an homogeneous
and complementary set (intelligent management of the colours palette, inter-
dependence of the procedures to  reduce their size, ...). Likewise the para-
meters  of the procedures  are organized in an  comprehensible and intuitive
way.
@ENDNODE


@NODE DISTRIBUTION "Distribution"

        @{u}@{fg highlight}                          @{uu}
             
        Conditions of distribution
        @{u}                          @{fg text}@{uu}



    @{b}POWER Procedures is a product in SHAREWARE@{ub},  that means that if you want
to use an unlimited version, you have to pay in counterpart a certain amount
of monay to the author.

    For the SHAREWARE conditions, click there : @{" * " LINK "REGISTRATION"}


    This version in SHAREWARE could  be distributed freely since the distri-
bution cost only include the standard copy charges (the distribution support
and the postage charges).

    The archive mustn't be  modified in any way. If you  have translated the
documentation or written interesting applications, you could send them to me
for future inclusion, but never add something to this package.

    This version could also  be included in a CD-ROM, a  cover of a magazine
or even in a commercial package,  but you would be  obliging to inform me on
that.

    To contact the AUTHOR, click there : @{" * " LINK "AUTHOR"}
@ENDNODE


@NODE DISCLAIMER "Disclaimer"

        @{u}@{fg highlight}                          @{uu}
             
        Legals conditions of usage
        @{u}                          @{fg text}@{uu}
        
        
        
    @{b}This product is distributed "AS IS" without garantee of any sort, impli-
cit or explicit.

    The user assume all  the risks and all the responsabilities relatives to
the usage of this product.@{ub}

    This product  has been  tested for a  long time, but it may contain some
errors. You  would be obliging to inform me in order to fix them in the next
release.

    To contact the AUTHOR, click there : @{" * " LINK "AUTHOR"}


    If you  don't accept this  principles, then delete immediately this pro-
duct from your hard disk and format the disk containing the archive. You can
even destroy it, burn it or eat it if you disagree :).
@ENDNODE


@NODE FEATURES "Features"

        @{u}@{fg highlight}                @{uu}
             
        General features
        @{u}                @{fg text}@{uu}



    ------------------
    Palette Management
    ------------------

    POWER Procedures use an original management for the palette.  Indeed, in
order that all  the gadget and frame procedures keep a good asppect indepen-
dently of  your palette  organization, you only have to  declare some global
variables :


    PW_BLACK = Number of the black colour in the palette.
    
    PW_WHITE = Number of the white color.
    
    PW_BLUE = Number of the blue color.
              For the default color in the pushed state of the gadgets.
    
    PW_GREY = Number of the grey color.
              For the default color in the unpushed state of the gadgets.

    PW_GREY_DEEP = Number of the deep grey color.
                   Necessary for the Windows type gadgets.

    PW_GREY_LIGHT = Number of the light grey color.
                    Necessary for the Windows type gadgets.

    Other color variables are used by the PW_FLAG procedure.

    The PW_COLORS procedure permit to easily modify the  color variables, to
save, load, print a  definition. I will even  be able to insert a definition
within your program in order to accelerate the input.

    If you open a screen within a  procedure, with different colors than the
main program, think to avoid  conflicts between  global color variables. For
that,  you can  simply type  at the  start of  the  procedure the  following
lines :

    PW_BLACK1=PW_BLACK
    PW_WHITE1=PW_WHITE
    .
    .
    .

    At  the end of  your procedure,  you only  have to  restore  the initial
values :


    PW_BLACK=PW_BLACK1
    PW_WHITE=PW_WHITE1
    .
    .
    .



    POWER Procedures are divided in several groups,  relatives to the parti-
cular type of procedures.


    ---------------------
    The Gadget Procedures
    ---------------------

    They permit to `draw'  simply onto the  screen the gadgets in the wanted
state (pushed or unpushed,  activated or ghosted) and at the  wanted graphic
position (xmin,ymin to xmax,ymax).  Then you  have to manage the  display of
your interface in function of the user actions.  The principle is quite sim-
ple :


    1 - Displaying of the interface in its initial position
    2 - Creation of an AMOS zone for each gadget
    3 - Waiting for an action of the user
    4 - Detection of the selected zone and indeed the selected gadget
    5 - Modification of the selected gadget state
    6 - Action relative to the gadget
    7 - Return to the 3rd step


    All  this may  seems  complicated  but with  some  practice, it is a lot
less compulsive that it could appear and a lot more simple that the AMOS Pro
interface system that uses graphic resources and an special programming lan-
gage.


    --------------------
    The Frame Procedures
    --------------------

    They permit to `draw' simply  onto the screen  different types of frames
in order to better structure your graphic interfaces. There is also a window
procedure that allow you to simulate a standard AmigaDOS window with a depth
gadget and a  close gadget. The use of this procedure  requires on the other
hand to define AMOS  zones around the depth and close gadget in the same way
that for the gadget procedures.


    ----------------------
    The Request Procedures
    ----------------------

    They permit to open a screen  with a request for  the user asking him to
enter a variable, to select one or several gadgets, in an automatic way. The
procedures even adapt them to the number of  gadgets and to the width of the
text ! In brief, once you will  have used them, you can't dispence  with. On
the other hand, they  souldn't replace  the  interface of your program, they
should only appear in punctual way. There is also a procedure which can dis-
play a Copyright request with the AMOS logo which is useful when you distri-
bute your compilated programs for example. You also have a Palette procedure
which will be very useful to allow the user to choose his palette for an ap-
plication.


    --------------------
    The Input Procedures
    --------------------

    They permit to replace  very advantageously  the AMOS's function `Input'
with a  version more  in the Gadtools style.  They permit to move within the
string (or number)  with key shortcuts,  to limit the  number of  characters
inputable, to  scroll the string  in a fixed  frame in order to input a long
string in a smaller frame,  also you  ask to draw  a standard Gadtools frame
around your gadget. The principle of use is :


    1 - Displaying of the interface in the initial state
    2 - Creation of a zone around each gadget including the input ones
    3 - Waiting an action from the user
    4 - Detection of the zone and therefore the gadget selected

    * - If it is a button gadget

    5 - Modification of the selected gadget
    6 - Action relative to the gadget
    7 - Return to 3rd step

    * - If it is an input gadget

    5 - Calling of the input procedure
    6 - Waiting of the input within the procedure
    7 - If a mouse click or a special key  (F1, ..., Return, Help, Esc, ...)
        the input procedure give back th hand to your program
    8 - Analysis of the user's action
    9 - Return to the phase 3 or 4


    ----------------------
    The Display Procedures
    ----------------------
 
    They permit to pass the time of the user  when your program is executing
a sorting action, a saving, a loading, ... There is  a gauge procedure which
permit when you dispose of a way to calculate  the progression of the opera-
tion, to indicate the evolution in a more friendly way. Otherwise there is a
text procedure which open a window with some explaining text.  The principle
of use is :


    1 - Calling of the displaying procedure with the type `Opening'
    2 - The procedure open a screen and initialize the gadgets
    3 - The program get back the hand and treat his action
    4 - Recall of the Gauge procedure with the type `Modification'
    5 - The procedure display the progression gauge in the indicated state
    6 - Return to the 3rd step until the end of the operation
    7 - Calling of the procedure in the state `Closing'
    8 - The procedure simply close the opened screen in the first step


    -------------------------------
    The String Treatment Procedures
    -------------------------------
    
    This are more current procedures in their using. They take the given pa-
rameters and  make an  operation over them and send  back the final variable
(Param$) after the treatment. Note well the PW_PARSE procedure which will be
used in the request  procedures in order  to send an unlimited number of va-
riables to a procedure in only one parameter string which is called a multi-
string. The principle of use is  very simple  because you only have to sepa-
rate the sub-strings with the `|' character. For example, the string :


    "String 1|String 2|...|String N"
     
     
    Will be interpreted by the PW_PARSE procedure as :


    String n°1 : "String 1"
    String n°2 : "String 2"
    .
    .
    .
    String n°N : "String N"


    Interesting isn't it ?


    -------------------------------
    The Number Treatment Procedures
    -------------------------------

    Nothing particular to signal because the principle of use is the same as
for the string procedures.


    ---------------------
    The System Procedures
    ---------------------

    They permit to  get the date  or the time  of the internal  clock of the
Amiga. You only have to call  them and get back in  the variable Param$, the
current date or time in  the form "HH:MM:SC" and "DD/MM/YY".  For this, they
only make a little call to the Exec library of the Amiga.


    -----------------------------
    The Error Handling Procedures
    -----------------------------

    They permit  to your program  to intercept the errors or the pressing of
the keys `CTRL' + `C' in a more aestethic and friendly way. Moreover the gi-
ven choices depend on the way the program has been executed (in compiled mo-
de or in interpreted mode) to make use of the AMOS functions such as  `Resu-
me',  `Resume Next' or  `Resume Label'.  To use them  you simply have to put
this lines at the start of your program :


    On Error Proc PW_ERROR
    On Break Proc PW_BREAK


    Then the procedures  will do all  the work for you,  like displaying the
message corresponding the the error number !


    ----------------------
    The Sorting Procedures
    ----------------------

    They  permit to  sort a  string array  PW_SORT$() indexed  by the  array
PW_INDEX(), with various algorithms.
@ENDNODE


@NODE REQUIREMENTS "Requirements"

        @{u}@{fg highlight}                                           @{uu}
             
        Equipment required for the POWER Procedures
        @{u}                                           @{fg text}@{uu}



    - The AMOS or AMOS Pro langage and maybe Easy AMOS

    - An Amiga with the KickStart 1.3 or better
@ENDNODE


@NODE INSTALLATION "Installation"

        @{u}@{fg highlight}                       @{uu}
             
        Procedures Installation
        @{u}                       @{fg text}@{uu}



        @{b}---------
        Warning !
        ---------@{ub}
    
    Before you  run the demonstration, verify that you have  copied the file
Amos.library  in your  Libs:  directory !  This file  could be  found in the
System/ directory of the POWER Procedures.

    If you use the  PW_ALERT  procedure  (or if a procedure use it) you must
reserve the screen n°7 for this one. You can only use this screen for tempo-
rary request !

    If you declare some global variables in your programs, they may conflict
with the simple variables of the POWER Procedurds. To prevent such things,
I recommend you to adopt a special rule for your global variables :

    - Add a prefix like `_' or `GV_' at the start of the variable's name.
    - Do not use the prefix `PW_' which is reserved to the POWER Procedures.

    
    In order to use the procedure @{"PW_COPYRIGHT" LINK "PW_COPYRIGHT} :

    Copy the file :
     
        `Copyright_Sprite.Abk'
         
    in one of this directories :
   
        `AMOS:AMOS_System/' if you use AMOS
        `AMOSPro_System:AP_System/' if you use AMOS Pro
        `PROGDIR:' if the program is compiled
    

    To use the procedures in your programs, you have several solutions :

    * If you use AMOS or AMOS Pro :

    - Include in each of your program all the procedures.

    - Include  only the  procedures needed by your  program remenbering that
      some are interdependently.


    * If you use AMOS Pro:

    - Assign the directory containing the procedures with the name `POWER:'
      then use the command :
       
        `Include "POWER:POWER_?-??.AMOS'
         
      in your program.
 
    - However, the file will be loaded at each test of your program, which
      could be very long if you work with disks. There is a solution which
      consist to add those lines to your startup-sequence :      

        Assign "POWER:" "RAM:T/"
        Assign "POWER:" "DF0:POWER_Procedures/"  Add
        Copy "POWER:POWER_??-?.AMOS" "RAM:T/POWER_?-??.AMOS"

      Then, you wil only have to type the line :
    
         `Include "POWER:POWER_?-??.AMOS'
          
      in your program.
@ENDNODE


@NODE PROCEDURES "Procedures"

        @{u}@{fg highlight}                             @{uu}
            
        Description of the Procedures
        @{u}                             @{fg text}@{uu}



        @{b}Gadget Procedures :@{ub}

        @{" PW_BUTTON1          " LINK "PW_BUTTON1"     }  ---  Button type gadget
        @{" PW_BUTTON2          " LINK "PW_BUTTON2"     }  ---  Button type gadget
        @{" PW_BTEXT1           " LINK "PW_BTEXT1"      }  ---  To modify the text of a gadget 
        @{" PW_BTEXT2           " LINK "PW_BTEXT2"      }  ---  To modify the text of a gadget
        @{" PW_UP               " LINK "PW_UP"          }  ---  Vertical arrow type gadget
        @{" PW_DOWN             " LINK "PW_DOWN"        }  ---  Vertical arrow type gadget
        @{" PW_CHECK            " LINK "PW_CHECK"       }  ---  Check boxe type gadget
        @{" PW_COLOR            " LINK "PW_COLOR"       }  ---  Palette type gadget
        @{" PW_RADIO            " LINK "PW_RADIO"       }  ---  Radio button type gadget

         
        @{b}Frame Procedures :@{ub}

        @{" PW_FRAME1           " LINK "PW_FRAME1"      }  ---  Input frame type gadget
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }  ---  Frame type gadget
        @{" PW_GHOST            " LINK "PW_GHOST"       }  ---  Ghosted frame type gadget
        @{" PW_WINDOW           " LINK "PW_WINDOW"      }  ---  AmigaDOS window type gadget


        @{b}Request Procedures :@{ub}

        @{" PW_ALERT            " LINK "PW_ALERT"       }  ---  Alert requester
        @{" PW_CHOICE           " LINK "PW_CHOICE"      }  ---  Two choices requester
        @{" PW_COLORS           " LINK "PW_COLORS"      }  ---  Requester for color variables
        @{" PW_PALETTE          " LINK "PW_PALETTE"     }  ---  Palette requester
        @{" PW_REQUESTER        " LINK "PW_REQUESTER"   }  ---  File requester
        @{" PW_REQUEST1         " LINK "PW_REQUEST1"    }  ---  Requester with string input
        @{" PW_REQUEST2         " LINK "PW_REQUEST2"    }  ---  Requester with real number input
        @{" PW_REQUEST3         " LINK "PW_REQUEST3"    }  ---  Requester with integer number input
        @{" PW_REQUEST5         " LINK "PW_REQUEST5"    }  ---  Choice requester
        @{" PW_REQUEST6         " LINK "PW_REQUEST6"    }  ---  Multiselection requester


        @{b}Input Procedures :@{ub}

        @{" PW_INPUT1           " LINK "PW_INPUT1"      }  ---  String input gadget
        @{" PW_INPUT2           " LINK "PW_INPUT2"      }  ---  Number input gadget
        @{" PW_INPUT3           " LINK "PW_INPUT3"      }  ---  Integer number input gadget
        @{" PW_INPUT4           " LINK "PW_INPUT4"      }  ---  Multi-string input gadget


        @{b}Output Procedures :@{ub}

        @{" PW_COPYRIGHT        " LINK "PW_COPYRIGHT"   }  ---  Display a copyright message
        @{" PW_FLAG             " LINK "PW_FLAG"        }  ---  Display national flags
        @{" PW_GAUGE            " LINK "PW_GAUGE"       }  ---  Display a progression gauge
        @{" PW_TEXT             " LINK "PW_TEXT"        }  ---  Display a waiting message
 

        @{b}String Procedures :@{ub}

        @{" PW_ALIGN            " LINK "PW_ALIGN"       }  ---  Align text
        @{" PW_PURGE            " LINK "PW_PURGE"       }  ---  Delete spaces
        @{" PW_ECMA_IBM         " LINK "PW_ECMA_IBM"    }  ---  Convert text from ECMA to IBM


        @{b}Multi-string Procedures :@{ub}

        @{" PW_DELETE           " LINK "PW_DELETE"      }  ---  Delete a sub-string
        @{" PW_INSERT           " LINK "PW_INSERT"      }  ---  Insert a sub-string
        @{" PW_MOVE             " LINK "PW_MOVE"        }  ---  Deplace a sub-string
        @{" PW_PARSE            " LINK "PW_PARSE"       }  ---  Parse a multi-string
        @{" PW_REPLACE          " LINK "PW_REPLACE"     }  ---  Replace a sub-string


        @{b}Number Procedures :@{ub}

        @{" PW_ENT              " LINK "PW_ENT"         }  ---  Round off a number
        @{" PW_SPACE            " LINK "PW_SPACE"       }  ---  Convert a number in a fixed string


        @{b}System Procedures :@{ub}

        @{" PW_DATE             " LINK "PW_DATE"        }  ---  Pick up the current date
        @{" PW_FONT             " LINK "PW_FONT"        }  ---  Pick up font features
        @{" PW_PREFS            " LINK "PW_PREFS"       }  ---  Contain the `startup' of the procedures
        @{" PW_TIME             " LINK "PW_TIME"        }  ---  Pick up the current time


        @{b}Error Procedures :@{ub}

        @{" PW_BREAK            " LINK "PW_BREAK"       }  ---  Interface to `On Break Proc' command
        @{" PW_ERROR            " LINK "PW_ERROR"       }  ---  Interface to `On Error Proc' command


        @{b}Sorting Procedures :@{ub}

        @{" PW_SORT            " LINK "PW_SORT"         }  ---  Sorting of an indexed array
@ENDNODE


@NODE AUTHOR "Author"

        @{u}@{fg highlight}                @{uu}
             
        Author's address
        @{u}                @{fg text}@{uu}



    Snail mail :   Jérôme LOUVEL
    ------------   23, rue Mareschal
                   34000 MONTPELLIER
                   FRANCE


    Electronic Mail :  InterNet : louvel@dig-isim.univ-montp2.fr
    -----------------


    For normal mail,  please include  the postage  cost in money if you want
a response.

    If you have  access to  the Internet, for the  quickest response, please
prefer E-Mail to normal mail.
@ENDNODE


@NODE REGISTRATION "Registration"

        @{u}@{fg highlight}                       @{uu}
             
        Registration conditions
        @{u}                       @{fg text}@{uu}



    This version  is placed in  SHAREWARE  and contain a main limitation. In
effect, even if this  procedures are  fully functional, @{b}you  can't call more
than  200 times the  whole of  the procedures at each execution of your pro-
gram.@{ub} If you outrun this limit, the execution of your program is interrupted
and you return to the editor. I think that this limitation is reasonable and
will allow you to test  the functionality of each procedure but obliging you
to pay the SHAREWARE for a more serious use.


    To become a registered user :
 
    - Send me the amount of @{b}20 US$ in monney.@{ub}   
    
    - The exact equivalent amount in a foreing monney (easily convertable)
      is accepted.
    
    - The french cheques are accepted.
    
    - The foreing cheques are NOT accepted.

    To contact the AUTHOR, click here : @{" * " LINK "AUTHOR"}
 

    You will receive in exchange :

    - Your registration number to join with each request or other mail.
    
    - An unlimited version of the POWER Procedures.

    - A recapitulative sheet containing the whole of the procedures and the
      needed parameters (a memento in some way)

    - The possibility to use without any limitation all the new releases
      distributed on Aminet or at your usual PD distributor.

    To contact the AUTHOR, click here : @{" * " LINK "AUTHOR"}
@ENDNODE


@NODE HISTORY "History"

        @{u}@{fg highlight}                           @{uu}
             
        History of POWER Procedures
        @{u}                           @{fg text}@{uu}



    @{b}1.00 (21/04/95)@{ub}

        - Initial version.


    @{b}1.10 (24/05/95)@{ub}
    
        - Modified PW_RADIO : Added a title parameter for the buttons.
        - Modified PW_FRAME2 : TYPE n°4 (double frame).
        - Added PW_ALERT : Very simple request with only one parameter.
        - Corrected PW_REQUESTER : Dim errors removed.
        - Modified PW_REQUESTER : Use PW_ALERT to inform the user.
        - Added PW_INPUT3 : Input integer numbers.
        - Added PW_INPUT4 : Input multi-strings.
        - Modified PW_INPUT1,2,3,4 : FRAME n°2 & n°3 (inactived/activated).
        - Modified PW_INPUT1,4 : Handle all the special characters.
        - Corrected PW_INPUT2,3 : Display error in scrolling.
        - Modified PW_INPUT2,3 : Better handle `+' `-' `.' characters.
        - Modified PW_ERROR et PW_BREAK : Didn't display the requester !
        - Modified PW_REQUEST1,2,3,4 : Initialisation cleaner.
        - Modified PW_PALETTE, PW_REQUESTER : Initialisation cleaner.
        - Modified PW_GAUGE, PW_TEXT : Initialisation cleaner.


    @{b}1.20  (19/09/95)@{ub}

        - Added PW_FLAG : Display national flags.
        - Added PW_COLOR : Display palette gadgets.
        - Added PW_COLORS : Define global color variables !
        - Added PW_REQUEST3 : Request with input of integer number.
        - Added PW_DEMO : Interactive demonstration of the POWER Procedures.
        - Renamed PW_REQUEST3,4 to PW_REQUEST5,6.
        - Corrected PW_REQUEST6 : Return bad parameter.
        - Corrected PW_BTEXT1 : Error if TYPE=2 and POS$<>"center".
        - Corrected PW_BTEXT1 : Error if TYPE=3 then BPEN had no effect.
        - Corrected PW_BTEXT1 : Error if TYPE=3 then text wasn't well erased.
        - Corrected PW_REQUEST1 : Handling errors with mouse buttons.
        - Corrected PW_ECMA_IBM : Big error which disabled the conversion.
        - Modified PW_ECMA_IBM : New conversion method more complete.
        - Modified PW_REQUEST5 : Don't use anymore PW_BUTTON1 procedure.
        - Modified PW_PALETTE : Code improved (no Multi Wait, ...).
        - Modified documentation : Important improvements.
        - Modified handling of `Limit Mouse'.
        - Modified PW_INPUT1 : Input limitation to 65500 characters.
        - Modified PW_INPUT2 : Input limitation to 20 chiffres.
        - Modified PW_INPUT2 : Input limitation to 7 decimals.
        - Modified PW_INPUT3 : Input limitation to 10 figures.


    @{b}1.30  (19/09/95)@{ub}

        - Corrected PW_DEMO1 : Error with the mouse zone limitation.
        - Added PW_DELETE : Delete a sub-string in a multi-string.
        - Added PW_INSERT : Insert a sub-string in a multi-string.
        - Added PW_MOVE : Move a sub-string in a multi-string.
        - Added PW_REPLACE : Replace a sub-string in a multi-string.
        - Added PW_GHOST : Ghost a zone in the screen.
        - Added PW_PREFS : Initialize the variables, the fonts, ...
        - Modified PW_BUTTON1,2, PW_BTEXT1,2 : Added font parameter.
        - Modified PW_RADIO, PW_COPYRIGHT : Added font parameter.
        - Modified PW_FRAME1, PW_WINDOW : Added font parameter.
        - Modified PW_INPUT1,2,3,4 : Added font parameter.
        - Modified PW_BUTTON1,PW_BTEXT1 : Return "XMAX | YMAX"
        - Modified PW_COLOR,PW_RADIO : Return "XMAX | YMAX"
        - Modified PW_FRAME1,PW_WINDOW,PW_FLAG : Return "XMAX | YMAX"
        - Modified PW_BTEXT1,2 : Don't delete last text if TYPE<0.
        - Added PW_CHOICE : Easy to use requester with two choices.
        - Corrected PW_INPUT4 : If VL=2, Param$ was wrong.
        - Added PW_REQUEST4 : Requester with multi-line input.
        - Added PW_FONT : Pick up font caracteristics.
        - Corrected PW_FLAG : Color error if Type=2,3.
        - Updated PW_DEMO1 : Present the new procedures.
@ENDNODE


@NODE FUTURE "Future"

        @{u}@{fg highlight}                              @{uu}
             
        POWER Procedures in the future
        @{u}                              @{fg text}@{uu}



    --------------------------------
    NEW = A new procedure to create.
    ADD = An improvement to add.
    BUG = An error to correct.
    --------------------------------


    ADD : Add multiselection to PW_REQUESTER.
    ADD : Add device selection to PW_REQUESTER.
    ADD : Improve slider of PW_REQUESTER.
    ADD : Improve vector drawing of PW_UP and PW_DOWN.
    ADD : Localise some procedures.
    ADD : Complete help in the documentation.
    ADD : Add some flags to PW_FLAG (USA, GB, ...).
    ADD : Add shortcuts to PW_REQUEST6 (`0', `1', ...).
    ADD : A global variable PW_ERROR to explain the errors generated by the
          procedures.
    
    NEW : Create a Clock gadget (digital/analogic).
    NEW : Create a Textfield gadget (bold, italic, underlined).
    NEW : Create a ListView gadget.


    For every suggestion,  every  bug detected :( , please don't hesitate to
contact me.  Of course, join a complete  description  of the bug and of your
configuration.

    To contact the AUTHOR, click here : @{" * " LINK "AUTHOR"}
@ENDNODE


@NODE THANKS "Greetings"

        @{u}@{fg highlight}                     @{uu}
             
        Traditional greetings
        @{u}                     @{fg text}@{uu}



    - ESCOM : For having bought COMMODORE and supporting the Amiga.

    - ex-COMMODORE : For having created my loved Amiga.
    
    - François LIONNET : For his excellent programming langage.

    - Roman PATZNER : For his great icons.

    - Eric LLOBREGAT : For his remarks on this procedures.
                       Good luck for your national service !
    
    - Guillaume PRADELS : Good luck for your national service !
    
    - Eustache : For its support and encouragements :))
@ENDNODE


---------------------------------------

@NODE PW_BUTTON1 "PW_Button1"
@TOC "PROCEDURES" 
    
    @{u}                                                                 @{uu}
    
    PW_BUTTON1[ TYPE,STATE,FONT,TXT$,POS$,XMIN,YMIN,WIDTH,CLR0,CLR1 ]
    @{u}                                                                 @{uu}


    ----------
    Parameters
    ----------

    TYPE : Type of the gadget

        TYPE = 1 : Gadtools button gadget
        TYPE = 2 : Gadtools cycle gagdet
        TYPE = 3 : Windows button gadget

    STATE : State of the gadget

        STATE = 0 : Unselected state with CLR0
        STATE = 1 : Selected state with CLR1
        STATE = 2 : Ghosted state with CLR0

    FONT : Number of font to use

    TXT$ : Text to display in the gadget

    POS$ : Position of the text in the gadget

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right
    
    XMIN : x-coordinate of the left border of the gadget
    
    YMIN : y-coordinate of the upper border of the gadget
    
    WIDTH : Width of the gadget in characters

    CLR0 : Color of the gadget in unselected state

        CLR0 >= 0 : Use color n°CLR0
        CLR0 <  0 : Use color PW_GREY

    CLR1 : Color of the gadget in selected or ghosted state

        CLR1 >= 0 : Use color n°CLR1
        CLR1 <  0 : Use color PW_BLUE
       
    
    ------
    Result
    ------
    
    Param$=" XMAX | YMAX "


    -------------------
    Definition of Zones
    -------------------

    P$ = Param$
    PW_PARSE[P$,1] : XMAX = Val(Param$)
    PW_PARSE[P$,2] : YMAX = Val(Param$)
    Set Zone ?,XMIN,YMIN to XMAX,YMAX

                              
    -----------------------
    Other Procedures Needed
    -----------------------

    None.
@ENDNODE


@NODE PW_BUTTON2 "PW_Button2"
@TOC "PROCEDURES" 
    
    @{u}                                                                     @{uu}
    
    PW_BUTTON2[ TYPE,STATE,FONT,TXT$,POS$,XMIN,YMIN,XMAX,YMAX,CLR0,CLR1 ]
    @{u}                                                                     @{uu}


    ----------
    Parameters
    ----------

    TYPE : Type of the gadget

        TYPE = 1 : Gadtools button gadget
        TYPE = 2 : Gadtools cycle gadget
        TYPE = 3 : Windows button gadget

    STATE : State of the gadget

        STATE = 0 : Unselected state with CLR0
        STATE = 1 : Selected state with CLR1
        STATE = 2 : Ghosted state with CLR0

    FONT : Number of font to use

    TXT$ : Text to display in the gadget

    POS$ : Position of the text in the gadget

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right
    
    XMIN : x-coordinate of the left border of the gadget
    
    YMIN : y-coordinate of the upper border of the gadget
    
    XMAX : x-coordinate of the right border of the gadget
    
    YMAX : y-coordinate of the lower border of the gadget
    
    CLR0 : Color of the gadget in unselected state

        CLR0 >= 0 : Use color n°CLR0
        CLR0 <  0 : Use color PW_GREY

    CLR1 : Color of the gadget in selected or ghosted state

        CLR1 >= 0 : Use color n°CLR1
        CLR1 <  0 : Use color PW_BLUE
       
    
    ------
    Result
    ------
    
    None.


    -------------------
    Definition of Zones
    -------------------

    Set Zone ?,XMIN,YMIN to XMAX,YMAX
       

    -----------------------
    Other Procedures Needed
    -----------------------

    None.
@ENDNODE


@NODE PW_BTEXT1 "PW_BText1"
@TOC "PROCEDURES" 
    
    @{u}                                                            @{uu}
    
    PW_BTEXT1[ TYPE,FONT,TXT$,POS$,XMIN,YMIN,WIDTH,BPEN,BPAPER ]
    @{u}                                                            @{uu}


    ----------
    Parameters
    ----------

    TYPE : Type of the gadget

        TYPE = 1 : Gadtools button text
        TYPE = 2 : Gadtools cycle text
        TYPE = 3 : Windows button text
        TYPE = -1 : Gadtools button text (keep last text)
        TYPE = -2 : Gadtools cycle text (keep last text)
        TYPE = -3 : Windows button text (keep last text)

    FONT : Number of font to use

    TXT$ : Text to display in the gadget

    POS$ : Position of the text in the gadget

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right
    
    XMIN : x-coordinate of the left border of the gadget
    
    YMIN : y-coordinate of the upper border of the gadget
    
    WIDTH : Width of the gadget in characters

    BPEN : Foreground color of the text

        BPEN >= 0 : Use color BPEN
        BPEN <  0 : Use color PW_BLACK

    BPAPER : Background color of the text

        BPAPER >= 0 : Use color BPAPER
        BPAPER <  0 : Use color PW_GREY
       
    
    ------
    Result
    ------
    
    Param$=" XMAX | YMAX "


    -------------------
    Definition of Zones
    -------------------

    P$ = Param$
    PW_PARSE[P$,1] : XMAX = Val(Param$)
    PW_PARSE[P$,2] : YMAX = Val(Param$)
    Set Zone ?,XMIN,YMIN to XMAX,YMAX

    
    -----------------------
    Other Procedures Needed
    -----------------------

    None.
    

    ------------
    Informations
    ------------

    The use of TYPE<0 allow to update quickly the text of a gadget without
    having visible flicking. It's very useful for clock gadgets which use a
    fixed width font.
@ENDNODE


@NODE PW_BTEXT2 "PW_BText2"
@TOC "PROCEDURES" 
    
    @{u}                                                           @{uu}
                                                                
    PW_BTEXT2[ TYPE,FONT,TXT$,POS$,XMIN,YMIN,XMAX,YMAX,BPEN,BPAPER ]
    @{u}                                                           @{uu}


    ----------
    Parameters
    ----------

    TYPE : Type of the gadget

        TYPE = 1 : Gadtools button text
        TYPE = 2 : Gadtools cycle text
        TYPE = 3 : Windows button text
        TYPE = -1 : Gadtools button text (keep last text)
        TYPE = -2 : Gadtools cycle text (keep last text)
        TYPE = -3 : Windows button text (keep last text)

    FONT : Number of font to use

    TXT$ : Text to display in the gadget

    POS$ : Position of the text in the gadget

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right
    
    XMIN : x-coordinate of the left border of the gadget
    
    YMIN : y-coordinate of the upper border of the gadget
    
    XMAX : x-coordinate of the right border of the gadget
    
    YMAX : y-coordinate of the lower border of the gadget
    
    BPEN : Foreground color of the text

        BPEN >= 0 : Use color BPEN
        BPEN <  0 : Use color PW_BLACK

    BPAPER : Background color of the text

        BPAPER >= 0 : Use color BPAPER
        BPAPER <  0 : Use color PW_GREY
       
    
    ------
    Result
    ------
    
    None.


    -------------------
    Definition of Zones
    -------------------

    Set Zone ?,XMIN,YMIN to XMAX,YMAX
    
    
    -----------------------
    Other Procedures Needed
    -----------------------

    None.
    

    ------------
    Informations
    ------------

    The use of TYPE<0 allow to update quickly the text of a gadget without
    having visible flicking. It's very useful for clock gadgets which use a
    fixed width font.
@ENDNODE


@NODE PW_UP "PW_Up"
@TOC "PROCEDURES" 
    
    @{u}                                            @{uu}
    
    PW_UP[ STATE,XMIN,YMIN,XMAX,YMAX,CLR0,CLR1 ]
    @{u}                                            @{uu}


    ----------
    Parameters
    ----------

    STATE : State of the gadget

        STATE = 0 : Unselected state with CLR0
        STATE = 1 : Selected state with CLR1
        STATE = 2 : Ghosted state with CLR0

    XMIN : x-coordinate of the left border of the gadget
    
    YMIN : y-coordinate of the upper border of the gadget
    
    XMAX : x-coordinate of the right border of the gadget
    
    YMAX : y-coordinate of the lower border of the gadget
    
    CLR0 : Color of the gadget in unselected state

        CLR0 >= 0 : Use color n°CLR0
        CLR0 <  0 : Use color PW_GREY

    CLR1 : Color of the gadget in selected or ghosted state
 
        CLR1 >= 0 : Use color n°CLR1
        CLR1 <  0 : Use color PW_BLUE
      
    
    ------
    Result
    ------
    
    None.


    -------------------
    Definition of Zones
    -------------------

    Set Zone ?,XMIN,YMIN to XMAX,YMAX
    
    
    -----------------------
    Other Procedures Needed
    -----------------------

    None.
@ENDNODE


@NODE PW_DOWN "PW_Down"
@TOC "PROCEDURES" 
    
    @{u}                                             @{uu}
    
    PW_DOWN[ STATE,XMIN,YMIN,XMAX,YMAX,CLR0,CLR1]
    @{u}                                             @{uu}


    ----------
    Parameters
    ----------

    STATE : State of the gadget

        STATE = 0 : Unselected state with CLR0
        STATE = 1 : Selected state with CLR1
        STATE = 2 : Ghosted state with CLR0

    XMIN : x-coordinate of the left border of the gadget
    
    YMIN : y-coordinate of the upper border of the gadget
    
    XMAX : x-coordinate of the right border of the gadget
    
    YMAX : y-coordinate of the lower border of the gadget
    
    CLR0 : Color of the gadget in unselected state

        CLR0 >= 0 : Use color n°CLR0
        CLR0 <  0 : Use color PW_GREY

    CLR1 : Color of the gadget in selected or ghosted state

        CLR1 >= 0 : Use color n°CLR1
        CLR1 <  0 : Use color PW_BLUE
       
    
    ------
    Result
    ------
    
    None.


    -------------------
    Definition of Zones
    -------------------

    Set Zone ?,XMIN,YMIN to XMAX,YMAX    
    

    -----------------------
    Other Procedures Needed
    -----------------------

    None.
@ENDNODE


@NODE PW_CHECK "PW_Check"
@TOC "PROCEDURES" 
    
    @{u}                                               @{uu}
    
    PW_CHECK[ STATE,FRAME,XMIN,YMIN,XMAX,YMAX,CLR ]
    @{u}                                               @{uu}


    ----------
    Parameters
    ----------

    STATE : State of the gadget

        STATE = 0 : Unselected state
        STATE = 1 : Selected state
        STATE = 2 : Ghosted and unselected
        STATE = 3 : Ghosted and selected

    FRAME : Displaying of a frame around the gadget
    
        FRAME = 0 : No frame to draw
        FRAME = 1 : Draw a frame

    XMIN : x-coordinate of the left border of the gadget
    
    YMIN : y-coordinate of the upper border of the gadget
    
    XMAX : x-coordinate of the right border of the gadget
    
    YMAX : y-coordinate of the lower border of the gadget
    
    CLR : Color of the gadget
  
        CLR >= 0 : Use color n°CLR
        CLR <  0 : Use color PW_GREY      
      
    
    ------
    Result
    ------
    
    None.


    -------------------
    Definition of Zones
    -------------------

    Set Zone ?,XMIN,YMIN to XMAX,YMAX
        
    
    -----------------------
    Other Procedures Needed
    -----------------------

    None.
@ENDNODE


@NODE PW_COLOR "PW_Color"
@TOC "PROCEDURES"
    
    @{u}                                               @{uu}
    
    PW_COLOR[ TYPE,STATE,XMIN,YMIN,XMAX,YMAX,PUSH ]
    @{u}                                               @{uu}


    ----------
    Parameters
    ----------

    TYPE : Organization type of the gadget

        TYPE = 1 : Horizontal on  1 line 
        TYPE = 2 : Vertical on 1 column
        TYPE = 3 : Horizontal on 2 lines
        TYPE = 4 : Vertical on 2 columns

    STATE : State of the gadget

        STATE = 0 : Creation of the gadget
        STATE = 1 : Modification of the gadget
        STATE = 2 : Deactivation of the gadget

    XMIN : x-coordinate of the left border of the gadget
    
    YMIN : y-coordinate of the upper border of the gadget
    
    XMAX : x-coordinate of the right border of the gadget
    
    YMAX : y-coordinate of the lower border of the gadget
    
    PUSH : Number of the selected color
 
    
    ------
    Result
    ------
    
    If TYPE=1, Param$ = " XMIN1 | XMAX1 | ... | XMIN? | XMAX? "
    If TYPE=2, Param$ = " YMIN1 | YMAX1 | ... | YMIN? | YMAX? "
    If TYPE=3 or TYPE=4, Param$ = " XMIN1 | YMIN1 | XMAX1 | YMAX1 | ... "    


    -------------------
    Definition of Zones
    -------------------

    If TYPE=1
        '
        PW_PARSE[P$,0] : NBR=Val(Param$)
        '
        For I=1 To NBR-1 Step 2
           PW_PARSE[P$,I] : XMIN=Val(Param$)
           PW_PARSE[P$,I+1] : XMAX=Val(Param$)
           Set Zone ?+(I+1)/2,XMIN,YMIN+2 To XMAX,YMAX-2
        Next I
        '
    End If

    If TYPE=2
        '
        PW_PARSE[P$,0] : NBR=Val(Param$)
        '
        For I=1 To NBR-1 Step 2
           PW_PARSE[P$,I] : YMIN=Val(Param$)
           PW_PARSE[P$,I+1] : YMAX=Val(Param$)
           Set Zone ?+(I+1)/2,XMIN+4,YMIN To XMAX-4,YMAX
        Next I
        '
    End If
   
    If TYPE=3 or TYPE 4
        '
        PW_PARSE[P$,0] : NBR=Val(Param$)
        '
        For I=1 To NBR-3 Step 4
           PW_PARSE[P$,I] : XMIN=Val(Param$)
           PW_PARSE[P$,I+1] : YMIN=Val(Param$)
           PW_PARSE[P$,I+2] : XMAX=Val(Param$)
           PW_PARSE[P$,I+3] : YMAX=Val(Param$)
           Set Zone ?+(I+3)/4,XMIN,YMIN To XMAX,YMAX
        Next I
        '
    End If 

    
    ------------------------
    Others procedures needed
    ------------------------

        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
@ENDNODE


@NODE PW_RADIO "PW_Radio"
@TOC "PROCEDURES" 
    
    @{u}                                               @{uu}
    
    PW_RADIO[ STATE,XMIN,YMIN,TXT$,YSTEP,PUSH,CLR ]
    @{u}                                               @{uu}


    ----------
    Parameters
    ----------

    STATE : State of the gadget

        STATE = 0 : Selected state
        STATE = 1 : Unselected state

    XMIN : x-coordinate of the left border of the gadget
    
    YMIN : y-coordinate of the upper border of the gadget
 
    TXT$ : Multi-string containing the title of each button
    
    YSTEP : Separation height between two buttons

    PUSH : Number of the slected button
    
    CLR : Color of the selected button
 
        CLR >= 0 : Use color n°CLR
        CLR <  0 : Use color PW_BLUE
      
    
    ------
    Result
    ------
    
    None.


    -------------------
    Definition of Zones
    -------------------

    P$ = Param$
    PW_PARSE[P$,0] : NBR = Val(Param$)
    '
    For I=1 to NBR-1 step 2
        PW_PARSE[P$,I]   : YMIN=Val(Param$)
        PW_PARSE[P$,I+1] : YMAX=Val(Param$)
        SetZone ?+(I+1)/2,XMIN,YMIN To XMIN+16,YMAX
    Next I

    
    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_PARSE            " LINK "PW_PARSE"       }
@ENDNODE


---------------------------------------

@NODE PW_FRAME1 "PW_Frame1"
@TOC "PROCEDURES" 
    
    @{u}                                                @{uu}
    
    PW_FRAME1[ STATE,TXT$,POS$,XMIN,YMIN,WIDTH,CLR ]
    @{u}                                                @{uu}


    ----------
    Parameters
    ----------

    STATE : State of the frame

        STATE = 0 : Unpushed state
        STATE = 1 : Pushed state
        STATE = 2 : Ghosted and unpushed state
        STATE = 3 : Ghosted and pushed state

    TXT$ : Text to display in the frame

    POS$ : Position of the text in the frame

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right
    
    XMIN : x-coordinate of the left border of the frame
    
    YMIN : y-coordinate of the upper border of the frame
    
    WIDTH : Width of the frame in characters

    CLR : Color of the frame

        CLR >= 0 : Filling with color n°CLR
        CLR <  0 : No filling
       
    
    ------
    Result
    ------
    
    None.


    -------------------
    Definition of Zones
    -------------------

    XMIN = XMIN
    YMIN = YMIN
    XMAX = XMIN+WIDTH*8+12
    YMAX = YMIN+13


    -----------------------
    Other Procedures Needed
    -----------------------

    None.
@ENDNODE


@NODE PW_FRAME2 "PW_Frame2"
@TOC "PROCEDURES" 
    
    @{u}                                               @{uu}
    
    PW_FRAME2[ TYPE,STATE,XMIN,YMIN,XMAX,YMAX,CLR ]
    @{u}                                               @{uu}


    ----------
    Parameters
    ----------

    TYPE : Type of the frame

        TYPE = 1 : Gadtools button frame
        TYPE = 2 : Gadtools input frame
        TYPE = 3 : Windows button frame
        TYPE = 4 : Gadtools button double frame

    STATE : State of the gadget

        STATE = 0 : Unpsuhed state
        STATE = 1 : Pushed state
        STATE = 2 : Ghosted and unpushed state
        STATE = 3 : Ghosted and pushed state

    XMIN : x-coordinate of the left border of the gadget
    
    YMIN : y-coordinate of the upper border of the gadget
    
    XMAX : x-coordinate of the right border of the gadget
    
    YMAX : y-coordinate of the lower border of the gadget
    
    CLR : Color of the frame

        CLR >= 0 : Filling with color n°CLR
        CLR <  0 : No filling
       
    
    ------
    Result
    ------
    
    None.


    -------------------
    Definition of Zones
    -------------------

    XMIN = XMIN
    YMIN = YMIN
    XMAX = XMAX
    YMAX = YMAX
    

    -----------------------
    Other Procedures Needed
    -----------------------

    None.
@ENDNODE


@NODE PW_GHOST "PW_Ghost"
@TOC "PROCEDURES"
    
    @{u}                               @{uu}
    
    PW_GHOST[ XMIN,YMIN,XMAX,YMAX ]
    @{u}                               @{uu}


    ----------
    Paramètres
    ----------

    XMIN : Abscisse du bord gauche du gadget
    
    YMIN : Ordonnée du bord supérieur du gadget
    
    XMAX : Abscisse du bord droit du gadget
    
    YMAX : Ordonnée du bord inférieur du gadget
    
    
    --------
    Résultat
    --------
    
    Aucun.


    -------------------
    Définition de Zones
    -------------------

    Set Zone ?,XMIN,YMIN to XMAX,YMAX
    

    -----------------------------
    Autres procédures nécessaires
    -----------------------------

    Aucune.
@ENDNODE


@NODE PW_WINDOW "PW_Window"
@TOC "PROCEDURES" 
    
    @{u}                                                                    @{uu}
    
    PW_WINDOW[ STATE1,STATE2,STATE3,TXT$,XMIN,YMIN,XMAX,YMAX,CLR0,CLR1 ]
    @{u}                                                                    @{uu}


    ----------
    Parameters
    ----------

    STATE1 : General state of the window

        STATE1 = 0 : Unselected state with CLR0
        STATE1 = 1 : Selected state with CLR1
    
    STATE2 : State of the closing gadget of the window

        STATE2 = 0 : Unselected state (for initialisation)
        STATE2 = 1 : Selected state (for initialisation)
        STATE2 = 2 : Unselected state (for updating)
        STATE2 = 3 : Selected state (for updating)
    
    STATE3 : State of the depth gadget of the window

        STATE3 = 0 : Unselected state (for initialisation)
        STATE3 = 1 : Selected state (for initialisation)    
        STATE3 = 2 : Unselected state (for updating)
        STATE4 = 3 : Selected state (for updating)

    TXT$ : Title of the window

    XMIN : x-coordinate of the left border of the window
    
    YMIN : y-coordinate of the upper border of the window
    
    XMAX : x-coordinate of the right border of the window
        
    YMAX : y-coordinate of the lower border of the window
    
    CLR0 : Color of the window in unselected state

        CLR0 >= 0 : Use color n°CLR0
        CLR0 <  0 : Use color PW_GREY

    CLR1 : Color of the window in selected state
 
        CLR1 >= 0 : Use color n°CLR1
        CLR1 <  0 : Use color PW_BLUE
      
    
    ------
    Result
    ------
    
    Param$ = " YMAX1 "


    -------------------
    Définition de Zones
    -------------------

    Fenêtre :

    Set Zone ?,XMIN,YMIN to XMAX,YMAX
    

    Gadget de Fermeture :

    YMAX1 = Val(Param$) 
    Set Zone ?,XMIN,YMIN to XMIN+18,YMAX1          
    
                  
    Gadget de Profondeur :

    YMAX1 = Val(Param$) 
    Set Zone ?,XMAX-22,YMIN to XMAX,YMAX1          
       

    -----------------------
    Other Procedures Needed
    -----------------------

    None.
@ENDNODE


---------------------------------------

@NODE PW_ALERT "PW_Alert"
@TOC "PROCEDURES"
    
    @{u}                @{uu}
                                      
    PW_ALERT[ TXT$ ]
    @{u}                @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Multi-string to display in the requester
       
    
    ------
    Result
    ------
    
    None.


    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_BUTTON2          " LINK "PW_BUTTON2"     }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_PARSE            " LINK "PW_PARSE"       }
        @{" PW_REQUEST5         " LINK "PW_REQUEST5"    }


    ------------
    Informations
    ------------

    The procedure opens on  screen n°7  which you should  reserve to display
    the requests of your program.

    Only one choice is offered to the user : ` Ok '


    ---------
    Shortcuts
    ---------

    [RETURN] or [ENTER] : Select the gadget ` Ok '

    While  the key  isn't  released, you can  cancel the  current  action by
    pressing the [SPACE] key.
@ENDNODE


@NODE PW_CHOICE "PW_Choice"
@TOC "PROCEDURES"
    
    @{u}                 @{uu}
                                      
    PW_CHOICE[ TXT$ ]
    @{u}                 @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Multi-string to display in the requester
       
    
    ------
    Result
    ------
    
    If ` Ok ' is pressed : Param = 1
    If ` Cancel ' is pressed : Param = 0


    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_BUTTON2          " LINK "PW_BUTTON2"     }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_PARSE            " LINK "PW_PARSE"       }
        @{" PW_REQUEST5         " LINK "PW_REQUEST5"    }


    ------------
    Informations
    ------------

    The procedure opens on  screen n°7  which you should  reserve to display
    the requests of your program.

    Only two choices are offered to the user : ` Ok ' or ` Cancel '


    ---------
    Shortcuts
    ---------

    [RETURN] or [ENTER] : Select the gadget ` Ok '
    [ESC] : Select the gadget ` Cancel '

    While  the key  isn't  released, you can  cancel the  current  action by
    pressing the [SPACE] key.
@ENDNODE


@NODE PW_COLORS "PW_Colors"
@TOC "PROCEDURES"
    
    @{u}                                       @{uu}
                                      
    PW_COLORS[ CSCREEN1,CSCREEN2,CSCREEN3 ]
    @{u}                                       @{uu}


    ----------
    Parameters
    ----------

    CSCREEN1 : Screen number whose palette will be used

    CSCREEN2 : Screen number to display the color requester

    CSCREEN3 : Screen number to display the file requester
       
    
    ------
    Result
    ------
    
    Aucun.


    ------------------------
    Others procedures needed
    ------------------------

        @{" PW_ALERT            " LINK "PW_ALERT"       }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_BUTTON1          " LINK "PW_BUTTON1"     }
        @{" PW_BUTTON2          " LINK "PW_BUTTON2"     }
        @{" PW_COLOR            " LINK "PW_COLOR"       }
        @{" PW_DOWN             " LINK "PW_DOWN"        }
        @{" PW_FRAME1           " LINK "PW_FRAME1"      }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_INPUT1           " LINK "PW_INPUT1"      }
        @{" PW_PARSE            " LINK "PW_PARSE"       }
        @{" PW_RADIO            " LINK "PW_RADIO"       }
        @{" PW_REQUEST5         " LINK "PW_REQUEST5"    }
        @{" PW_REQUESTER        " LINK "PW_REQUESTER"   }
        @{" PW_UP               " LINK "PW_UP"          }


    ------------
    Informations
    ------------

    The PW_ALERT procedure opens on screen n°7 which must be reserved for
    the displaying of temporary requests.
    So don't use 7 for CSCREEN2 or CSCREEN3.


    -------------------
    Buttons explanation
    -------------------

    `Load'   : Permit to load a colors definition
    `Save'   : Permit to save the current colors definition
    `Print'  : Permit to print the current colors definition
    `Help'   : Explain to the use of the selected color
    `Redraw' : Redraw the actuel screen with the current definition
    `Ok'     : Use the current defintion for globals variables
    `Undo'   : Reset the screen with the initial definition
    `Cancel' : Use the initial definition for global variables
@ENDNODE


@NODE PW_PALETTE "PW_Palette"
@TOC "PROCEDURES"
    
    @{u}                               @{uu}
                                      
    PW_PALETTE[ PSCREEN1,PSCREEN2 ]
    @{u}                               @{uu}


    ----------
    Parameters
    ----------

    PSCREEN1 : Number of the screen whose palette will be edited

    PSCREEN2 : Number of the screen for the requester
       
    
    ------
    Result
    ------
    
    Param$ : Multi-string containing the colors of the palette

        ex : Param$="$000|$FFF|...|$E43"

    PW_MZ : Contain the number of the last pushed button
    
        PW_MZ = 1 : The button `Ok' has been pushed
        PW_MZ = 2 : The button `Cancel' has been pushed

    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_BUTTON1          " LINK "PW_BUTTON1"     }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }


    ------------
    Informations
    ------------

    PSCREEN1 must be different from PSCREEN2.
    If button `Ok' is  pushed, the palette  edited is  recopied on screen n°
    PSCREEN2.
@ENDNODE


@NODE PW_REQUESTER "PW_Requester"
@TOC "PROCEDURES"
    
    @{u}                                                        @{uu}
                                      
    PW_REQUESTER[ TITLE$,PATH$,ICONS,FILES,DEVICES,RSCREEN ]
    @{u}                                                        @{uu}


    ----------
    Parameters
    ----------

    TITLE$ : Text to print in top of the requester

    PATH$ : Initial path for the requester

    ICONS : State of the icons

        ICONS = 0 : Don't display the files "*.icon"
        ICONS = 1 : Display the files "*.icon"

    FILES : Dimension of the array containing the files

        FILES >= 200

    DEVICES : Dimension of the array containing the devices

        DEVICES >= 100

    RSCREEN : Number of the screen for the requester
       
    
    ------
    Result
    ------
    
    Param$ : Return the complete path of the selected file

    PW_MZ : Return the pushed button

        PW_MZ = 1 : The button `Ok' (or similar) has been pressed
        PW_MZ = 2 : The button `Cancel' has been pressed
    

    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_ALERT            " LINK "PW_ALERT"       }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_BUTTON1          " LINK "PW_BUTTON1"     }
        @{" PW_BUTTON2          " LINK "PW_BUTTON2"     }
        @{" PW_UP               " LINK "PW_UP"          }
        @{" PW_DOWN             " LINK "PW_DOWN"        }
        @{" PW_FRAME1           " LINK "PW_FRAME1"      }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_INPUT1           " LINK "PW_INPUT1"      }
        @{" PW_PARSE            " LINK "PW_PARSE"       }
        @{" PW_REQUEST3         " LINK "PW_REQUEST3"    }


    ------------
    Informations
    ------------
    
    The procedure call the PW_ALERT procedure which need the screen n°7 to
    display his requests so don't use it for RSCREEN variable.


    ---------
    Shortcuts
    ---------

    [RETURN] or [ENTER] : Select the gadget the most on the left
    [ESC] : Select the gadget the most on the right

    While  the key  isn't  released, you can  cancel the  current  action by
    pressing the [SPACE] key.
@ENDNODE


@NODE PW_REQUEST1 "PW_Request1"
@TOC "PROCEDURES"
    
    @{u}                                               @{uu}
                                      
    PW_REQUEST1[ TXT$,CHX$,POS$,VAR$,VLEN,RSCREEN ]
    @{u}                                               @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Multi-string for the explaining text

        ex: TXT$="|Request from the program||Enter your name :|"

    CHX$ : Multi-string for the text of the choice buttons
        
        ex: CHX$="Continue|Skip|Stop"


    POS$ : Position of the text in the frame

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right
    
    VAR$ : Initial string in the input gadget

    VLEN : Maximal lenght in characters of the variable to input

    RSCREEN : Number of the screen for the requester
       
    
    ------
    Result
    ------
    
    Param$ : Return the value of the edited variable

    PW_MZ : Contain the number of the pressed button
        
    
    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_BUTTON1          " LINK "PW_BUTTON1"     }
        @{" PW_FRAME1           " LINK "PW_FRAME1"      }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_INPUT1           " LINK "PW_INPUT1"      }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_PARSE            " LINK "PW_PARSE"       }


    ---------
    Shortcuts
    ---------

    [RETURN] or [ENTER] : Select the gadget the most on the left
    [ESC] : Select the gadget the most on the right

    While  the key  isn't  released, you can  cancel the  current  action by
    pressing the [SPACE] key.
@ENDNODE


@NODE PW_REQUEST2 "PW_Request2"
@TOC "PROCEDURES"
    
    @{u}                                               @{uu}
                                      
    PW_REQUEST2[ TXT$,CHX$,POS$,VAR#,VLEN,RSCREEN ]
    @{u}                                               @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Multi-string for the explaining text

        ex: TXT$="|Request from the program||Enter your code :|"

    CHX$ : Multi-string for the text of the choice buttons
        
        ex: CHX$="Continue|Skip|Stop"


    POS$ : Position of the text in the frame

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right
    
    VAR# : Initial number in the input gadget

    VLEN : Maximal lenght in characters of the variable to input

    RSCREEN : Number of the screen for the requester
       
    
    ------
    Result
    ------
    
    Param# : Return the value of the edited variable

    PW_MZ : Contain the number of the pressed button
    
    
    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_BUTTON1          " LINK "PW_BUTTON1"     }
        @{" PW_FRAME1           " LINK "PW_FRAME1"      }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_INPUT2           " LINK "PW_INPUT2"      }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_PARSE            " LINK "PW_PARSE"       }


    ---------
    Shortcuts
    ---------

    [RETURN] or [ENTER] : Select the gadget the most on the left
    [ESC] : Select the gadget the most on the right

    While  the key  isn't  released, you can  cancel the  current  action by
    pressing the [SPACE] key.
@ENDNODE


@NODE PW_REQUEST3 "PW_Request3"
@TOC "PROCEDURES"
    
    @{u}                                              @{uu}
                                      
    PW_REQUEST3[ TXT$,CHX$,POS$,VAR,VLEN,RSCREEN ]
    @{u}                                              @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Multi-string for the explaining text

        ex: TXT$="|Request from the program||Enter your code :|"

    CHX$ : Multi-string for the text of the choice buttons
        
        ex: CHX$="Continue|Skip|Stop"


    POS$ : Position of the text in the frame

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right
    
    VAR : Initial number in the input gadget

    VLEN : Maximal lenght in characters of the variable to input

    RSCREEN : Number of the screen for the requester
       
    
    ------
    Result
    ------
    
    Param : Return the value of the edited variable

    PW_MZ : Contain the number of the pressed button
    
    
    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_BUTTON1          " LINK "PW_BUTTON1"     }
        @{" PW_FRAME1           " LINK "PW_FRAME1"      }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_INPUT3           " LINK "PW_INPUT3"      }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_PARSE            " LINK "PW_PARSE"       }


    ---------
    Shortcuts
    ---------

    [RETURN] or [ENTER] : Select the gadget the most on the left
    [ESC] : Select the gadget the most on the right

    While  the key  isn't  released, you can  cancel the  current  action by
    pressing the [SPACE] key.
@ENDNODE


@NODE PW_REQUEST4 "PW_Request4"
@TOC "PROCEDURES"
    
    @{u}                                                     @{uu}
                                      
    PW_REQUEST4[ TXT$,CHX$,POS$,VAR$,VLEN,LINES,RSCREEN ]
    @{u}                                                     @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Multi-string for the explaining text

        ex: TXT$="|Request from the program||Enter your name :|"

    CHX$ : Multi-string for the text of the choice buttons
        
        ex: CHX$="Continue|Skip|Stop"


    POS$ : Position of the text in the frame

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right
    
    VAR$ : Initial string in the input gadget

    VLEN : Maximal lenght in characters of the variable to input

    LINES : Number of lines of the multi-string edited

    RSCREEN : Number of the screen for the requester
       
    
    ------
    Result
    ------
    
    Param$ : Return the multi-string edited

    PW_MZ : Contain the number of the pressed button
        
    
    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_BUTTON1          " LINK "PW_BUTTON1"     }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_INPUT4           " LINK "PW_INPUT4"      }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_PARSE            " LINK "PW_PARSE"       }


    ---------
    Shortcuts
    ---------

    [RETURN] or [ENTER] : Select the gadget the most on the left
    [ESC] : Select the gadget the most on the right

    While  the key  isn't  released, you can  cancel the  current  action by
    pressing the [SPACE] key.
@ENDNODE


@NODE PW_REQUEST5 "PW_Request5"
@TOC "PROCEDURES"
    
    @{u}                                          @{uu}
                                      
    PW_REQUEST5[ TYPE,TXT$,CHX$,POS$,RSCREEN ]
    @{u}                                          @{uu}


    ----------
    Parameters
    ----------

    TYPE : Type of displaying for the choice buttons

        TYPE = 1 : Horizontal displaying
        TYPE = 2 : Vertical displaying

    TXT$ : Multi-string for the explaining text

        ex: TXT$="|Request form the program||Make your choice|"

    CHX$ : Multi-string for the text of the choice buttons
        
        ex: CHX$="Edit a file|View a file|Print a file"


    POS$ : Position of the text in the frame

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right
    
    RSCREEN : Number of the screen for the requester
       
    
    ------
    Result
    ------
        
    Param : Contain the number of the pressed choice button

    PW_MZ : Contain the number of the pressed choice button
    

    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_BUTTON2          " LINK "PW_BUTTON2"     }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_PARSE            " LINK "PW_PARSE"       }


    ---------
    Shortcuts
    ---------

    [RETURN] or [ENTER] : Select the gadget the most on the left
    [ESC] : Select the gadget the most on the right

    While  the key  isn't  released, you can  cancel the  current  action by
    pressing the [SPACE] key.
@ENDNODE


@NODE PW_REQUEST6 "PW_Request6"
@TOC "PROCEDURES"
    
    @{u}                                            @{uu}
                                      
    PW_REQUEST6[ TXT$,CHX1$,CHX2$,POS$,RSCREEN ]
    @{u}                                            @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Multi-string for the explaining text

        ex: TXT$="|Request from the program||Choose some options|"

    CHX1$ : Multi-string for the text of the option buttons
        
        ex: CHX1$="Option n°1|Option n°2|Option n°3"

    CHX2$ : Multi-string for the text of the choice buttons
        
        ex: CHX2$="Continue|Skip|Stop"

    POS$ : Position of the text in the frame

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right
    
    RSCREEN : Number of the screen for the requester
       
    
    ------
    Result
    ------
    
    Param$ : Multi-string containing the state of each option button

    PW_MZ : Contain the number of the pressed choice button

    
    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_BUTTON2          " LINK "PW_BUTTON2"     }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_PARSE            " LINK "PW_PARSE"       }


    ---------
    Shortcuts
    ---------

    [RETURN] or [ENTER] : Select the gadget the most on the left
    [ESC] : Select the gadget the most on the right

    While  the key  isn't  released, you can  cancel the  current  action by
    pressing the [SPACE] key.
@ENDNODE


---------------------------------------

@NODE PW_INPUT1 "PW_Input1"
@TOC "PROCEDURES"
    
    @{u}                                                         @{uu}
                                      
    PW_INPUT1[ FONT,VAR$,HL,L,TX,TY,FRAME,IPEN,IPAPER,ICURS ]
    @{u}                                                         @{uu}


    ----------
    Parameters
    ----------

    FONT : Number of the font to use (fixed width)
    
    VAR$ : Initial string in the input gadget

    HL : Width of the input gadget

    L : Maximal lenght of variable to input

    TX : x-coordinate of the first character of the gadget

    TY : y-coordinate of the characters in the gadget

    FRAME : Option to display a frame around the input gadget

        FRAME = 0 : No frame to draw
        FRAME = 1 : Draw a frame
        FRAME = 2 : Draw a ghosted frame without input
        FRAME = 3 : Draw a normal frame without input

    IPEN : Foreground color of the text

        IPEN >= 0 : Use color n°IPEN
        IPEN <  0 : Use color PW_BLACK

    IPAPER : Background color of the text

        IPAPER >= 0 : Use color n°IPAPER
        IPAPER <  0 : Use color PW_GREY

    ICURS : Color of the cursor
        
        ICURS >= 0 : Use color n°ICURS
        ICURS <  0 : Use color PW_BLUE

    
    ------
    Result
    ------
    
    Param$ : String containing the edited variable

    PW_MK    : Contain the status of `Mouse Key'

    PW_MZ    : Contain the status of `Mouse Zone'
    
    PW_KEY   : Contain the status of `Scancode'

    PW_SHIFT : Contain the status of `Key Shift'

    PW_ZONE$ = " XMIN | YMIN | XMAX | YMAX "


    -------------------
    Definition of Zones
    -------------------

    PW_PARSE[PW_ZONE$,1] : XMIN = Val(Param$)    
    PW_PARSE[PW_ZONE$,2] : YMIN = Val(Param$)    
    PW_PARSE[PW_ZONE$,3] : XMAX = Val(Param$)    
    PW_PARSE[PW_ZONE$,4] : YMAX = Val(Param$)    
    Set Zone ?,XMIN,YMIN to XMAX,YMAX

    
    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_FRAME1           " LINK "PW_FRAME1"      }


    ---------
    Shortcuts
    ---------

    [CTRL] + [->] : Put the cursor on the right of the input frame
    [CTRL] + [<-] : Put the cursor on the left of the input frame
    [SHFT] + [->] : Put the cursor at the end of the string
    [SHFT] + [<-] : Put the cursor at the start of the string
    [SHFT] + [DEL] : Erase from the cursor to the end of the string
    [SHFT] + [BACKSPACE] : Erase from the start of the string to the cursor
@ENDNODE


@NODE PW_INPUT2 "PW_Input2"
@TOC "PROCEDURES"
    
    @{u}                                                         @{uu}
                                      
    PW_INPUT2[ FONT,VAR#,HL,L,TX,TY,FRAME,IPEN,IPAPER,ICURS ]
    @{u}                                                         @{uu}


    ----------
    Parameters
    ----------

    FONT : Number of the font to use (fixed width)
    
    VAR# : Initial number in the input gadget

    HL : Width of the input gadget

    L : Maximal lenght of the variable to input

    TX : x-coordinate of the first character of the gadget

    TY : y-coordinate of the characters of the gadget

    FRAME : Option to display a frame around the input gadget

        FRAME = 0 : No frame
        FRAME = 1 : Display a frame
        FRAME = 2 : Draw a ghosted frame without input
        FRAME = 3 : Draw a normal frame without input

    IPEN : Foreground color of the text
        
        IPEN >= 0 : Use color n°IPEN
        IPEN <  0 : Use color PW_BLACK

    IPAPER : Background color of the fond

        IPAPER >= 0 : Use color n°IPAPER
        IPAPER <  0 : Use color PW_GREY

    ICURS : Color of the cursor
        
        ICURS >= 0 : Use color n°ICURS
        ICURS <  0 : Use color PW_BLUE
       
    
    ------
    Result
    ------
    
    Param# : Variable containing the real number inputed

    PW_MK    : Contain the status of `Mouse Key'

    PW_MZ    : Contain the status of `Mouse Zone'
    
    PW_KEY   : Contain the status of `Scancode'

    PW_SHIFT : Contain the status of `Key Shift'

    PW_ZONE$ = " XMIN | YMIN | XMAX | YMAX "


    -------------------
    Definition of Zones
    -------------------

    PW_PARSE[PW_ZONE$,1] : XMIN = Val(Param$)
    PW_PARSE[PW_ZONE$,2] : YMIN = Val(Param$)    
    PW_PARSE[PW_ZONE$,3] : XMAX = Val(Param$)    
    PW_PARSE[PW_ZONE$,4] : YMAX = Val(Param$)    
    Set Zone ?,XMIN,YMIN to XMAX,YMAX
    
    
    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_FRAME1           " LINK "PW_FRAME1"      }


    ---------
    Shortcuts
    ---------

    [CTRL] + [->] : Put the cursor on the right of the input frame
    [CTRL] + [<-] : Put the cursor on the left of the input frame
    [SHFT] + [->] : Put the cursor at the end of the string
    [SHFT] + [<-] : Put the cursor at the start of the string
    [SHFT] + [DEL] : Erase from the cursor to the end of the string
    [SHFT] + [BACKSPACE] : Erase from the start of the string to the cursor
@ENDNODE
        

@NODE PW_INPUT3 "PW_Input3"
@TOC "PROCEDURES"
    
    @{u}                                                        @{uu}
                                      
    PW_INPUT3[ FONT,VAR,HL,L,TX,TY,FRAME,IPEN,IPAPER,ICURS ]
    @{u}                                                        @{uu}


    ----------
    Parameters
    ----------

    FONT : Number of the font to use (fixed width)

    VAR : Initial number in the input gadget

    HL : Width of the input gadget

    L : Maximal lenght of the variable to input

    TX : x-coordinate of the first character of the gadget

    TY : y-coordinate of the characters of the gadget

    FRAME : Option to display a frame around the input gadget

        FRAME = 0 : No frame
        FRAME = 1 : Display a frame
        FRAME = 2 : Draw a ghosted frame without input
        FRAME = 3 : Draw a normal frame without input

    IPEN : Foreground color of the text
        
        IPEN >= 0 : Use color n°IPEN
        IPEN <  0 : Use color PW_BLACK

    IPAPER : Background color of the fond

        IPAPER >= 0 : Use color n°IPAPER
        IPAPER <  0 : Use color PW_GREY

    ICURS : Color of the cursor
        
        ICURS >= 0 : Use color n°ICURS
        ICURS <  0 : Use color PW_BLUE
       
    
    ------
    Result
    ------
    
    Param : Variable containing the integer number inputed

    PW_MK    : Contain the status of `Mouse Key'

    PW_MZ    : Contain the status of `Mouse Zone'
    
    PW_KEY   : Contain the status of `Scancode'

    PW_SHIFT : Contain the status of `Key Shift'

    PW_ZONE$ = " XMIN | YMIN | XMAX | YMAX "


    -------------------
    Definition of Zones
    -------------------

    PW_PARSE[PW_ZONE$,1] : XMIN = Val(Param$)
    PW_PARSE[PW_ZONE$,2] : YMIN = Val(Param$)    
    PW_PARSE[PW_ZONE$,3] : XMAX = Val(Param$)    
    PW_PARSE[PW_ZONE$,4] : YMAX = Val(Param$)    
    Set Zone ?,XMIN,YMIN to XMAX,YMAX
    
    
    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_FRAME1           " LINK "PW_FRAME1"      }


    ---------
    Shortcuts
    ---------

    [CTRL] + [->] : Put the cursor on the right of the input frame
    [CTRL] + [<-] : Put the cursor on the left of the input frame
    [SHFT] + [->] : Put the cursor at the end of the string
    [SHFT] + [<-] : Put the cursor at the start of the string
    [SHFT] + [DEL] : Erase from the cursor to the end of the string
    [SHFT] + [BACKSPACE] : Erase from the start of the string to the cursor
@ENDNODE
        

@NODE PW_INPUT4 "PW_Input4"
@TOC "PROCEDURES"
    
    @{u}                                                            @{uu}
                                      
    PW_INPUT4[ FONT,VAR$,HL,VL,L,TX,TY,FRAME,IPEN,IPAPER,ICURS ]
    @{u}                                                            @{uu}


    ----------
    Parameters
    ----------

    FONT : Number of the font to use (fixed width)

    VAR$ : Initial multi-string in the input gadget

    HL : Width of the input gadget in characters

    VL : Height of the input gadget in characters

    L : Maximal lenght of lines to input

    TX : x-coordinate of the first character of the gadget

    TY : y-coordinate of the characters in the gadget

    FRAME : Option to display a frame around the input gadget

        FRAME = 0 : No frame to draw
        FRAME = 1 : Draw a frame
        FRAME = 2 : Draw a ghosted frame without input
        FRAME = 3 : Draw a normal frame without input

    IPEN : Foreground color of the text

        IPEN >= 0 : Use color n°IPEN
        IPEN <  0 : Use color PW_BLACK

    IPAPER : Background color of the text

        IPAPER >= 0 : Use color n°IPAPER
        IPAPER <  0 : Use color PW_GREY

    ICURS : Color of the cursor
        
        ICURS >= 0 : Use color n°ICURS
        ICURS <  0 : Use color PW_BLUE

    
    ------
    Result
    ------
    
    Param$ : Multi-string containing the VL sub-strings inputed

    PW_MK    : Contain the status of `Mouse Key'

    PW_MZ    : Contain the status of `Mouse Zone'
    
    PW_KEY   : Contain the status of `Scancode'

    PW_SHIFT : Contain the status of `Key Shift'

    PW_ZONE$ = " XMIN | YMIN | XMAX | YMAX "


    -------------------
    Definition of Zones
    -------------------

    PW_PARSE[PW_ZONE$,1] : XMIN = Val(Param$)
    PW_PARSE[PW_ZONE$,2] : YMIN = Val(Param$)    
    PW_PARSE[PW_ZONE$,3] : XMAX = Val(Param$)    
    PW_PARSE[PW_ZONE$,4] : YMAX = Val(Param$)    
    Set Zone ?,XMIN,YMIN to XMAX,YMAX
    
    
    ------------------------
    Others procedures needed
    ------------------------

        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_PARSE            " LINK "PW_PARSE"       }


    ---------
    Shortcuts
    ---------

    [CTRL] + [->] : Put the cursor on the right of the input frame
    [CTRL] + [<-] : Put the cursor on the left of the input frame
    [CTRL] + [Up] : Put the cursor on the top of the input frame
    [CTRL] + [Down] : Put the cursor on the bottom of the input frame
    [SHFT] + [->] : Put the cursor at the end of the string
    [SHFT] + [<-] : Put the cursor at the start of the string
    [SHFT] + [DEL] : Erase from the cursor to the end of the string
    [SHFT] + [BACKSPACE] : Erase from the start of the string to the cursor
@ENDNODE


---------------------------------------

@NODE PW_COPYRIGHT "PW_Copyright"
@TOC "PROCEDURES"
    
    @{u}                                             @{uu}
    
    PW_COPYRIGHT[ FONT,TXT$,PATH$,DELAY,CSCREEN ]
    @{u}                                             @{uu}


    ----------
    Parameters
    ----------

    FONT : Number of the font to use
    
    TXT$ : Text to display (less than 60 characters)

    PATH$ : Path for the file `Copyright_Sprite.Abk'

    DELAY : Duration of the displaying in seconds

    CSCREEN : Number of the screen for the requester
       
    
    ------
    Result
    ------
    
    None.
       

    -----------------------
    Other Procedures Needed
    -----------------------

    None.


    ------------
    Informations
    ------------

    If the procedure don't find the file at the path PATH$, it will try the
    following paths :

        `AMOSPro_System:APSystem/'
        `AMOS:AMOS_System/'
        `PROGDIR:'
@ENDNODE


@NODE PW_FLAG "PW_Flag"
@TOC "PROCEDURES"
    
    @{u}                                             @{uu}
    
    PW_FLAG[ CTRY$,XMIN,YMIN,WIDTH,FTYPE,FSTATE ]
    @{u}                                             @{uu}


    ----------
    Parameters
    ----------

    CTRY$ : Name of the contry whose flag will be displayed

        CTRY$ = "AFRIQUE DU SUD"    or  "SOUTH AFRICA"
                "ALLEMAGNE"         or  "GERMANY"
                "ANDORRE"           or  "ANDORRA"
                "ARGENTINE"         or  "ARGENTINA"
                "AUTRICHE"          or  "AUSTRIA"
                "BELGIQUE"          or  "BELGIUM"
                "COLOMBIE"          or  "COLOMBIA"
                "DANEMARK"          or  "DENMARK"
                "ESPAGNE"           or  "SPAIN"
                "FINLANDE"          or  "FINLAND"
                "FRANCE"            or  "FRANCE"
                "HONGRIE"           or  "HUNGARY"
                "IRLANDE"           or  "IRELAND"
                "ITALIE"            or  "ITALY"
                "JAPON"             or  "JAPAN"
                "LUXEMBOURG"        or  "LUXEMBURG"
                "MONACO"            or  "MONACO"
                "PAYS-BAS"          or  "NETHERLANDS"
                "SUEDE"             or  "SWEDEN"

    XMIN : x-coordinate of the left border of the flag
    
    YMIN : y-coordinate of the upper border of the flag

    WIDTH : Width of the flag in pixels

    FTYPE : Type of the frame to use

        FTYPE = 0 : No frame
        FTYPE = 1 : Gadtools button frame
        FTYPE = 2 : Gadtools input frame
        FTYPE = 3 : Windows button frame
        FTYPE = 4 : Double Gadtools frame

    FSTATE : State of the frame used

        FSTATE = 0 : Unpushed state
        FSTATE = 1 : Pushed state
        FSTATE = 2 : Deactivated and unpushed state
        FSTATE = 3 : Deactivated and pushed state
       
    
    ------
    Result
    ------
    
    Param$ = " XMAX | YMAX "


    -------------------
    Definition of Zones
    -------------------

    P$ = Param$
    PW_PARSE[P$,1] : XMAX = Val(Param$)
    PW_PARSE[P$,2] : YMAX = Val(Param$)
    Set Zone ?,XMIN,YMIN to XMAX,YMAX


    ------------------------
    Others procedures needed
    ------------------------

        @{" PW_FRAME2           " LINK "PW_FRAME2"      }


    ------------
    Informations
    ------------

    In order that the procedure display the  right colors for the flags, you
    have to declare the following global variables :
        
        PW_BLUE_LIGHT   : Sky blue
        PW_RED          : Red
        PW_YELLOW       : Yellow
        PW_ORANGE       : Orange
        PW_GREEN        : Green
        PW_BROWN        : Brown

    You can use the  PW_COLORS procedure  to define this variables then save
    them in a file with the `Save' button and then insert it in your listing
    with the `Merge ASCII' command of the editor.
@ENDNODE


@NODE PW_GAUGE "PW_Gauge"
@TOC "PROCEDURES"
    
    @{u}                                                    @{uu}
    
    PW_GAUGE[ STATE,TXT1$,TXT2$,UNITS,POSITION,GSCREEN ]
    @{u}                                                    @{uu}


    ----------
    Parameters
    ----------

    STATE : State of the requester

        STATE = 0 : Opening of the requester
        STATE = 1 : Updating of the requester
        STATE = 2 : Closing of the requester

    TXT1$ : Text to display in title (less than 68 characters)

    TXT2$ : Text to display before the percentage of evolution

    UNITS : Total number of units for the gauge

    POSITION : Position of the gauge (between 0 [0%] and UNITS [100%])

    GSCREEN : Number of the screen for the requester
       
    
    ------
    Result
    ------
    
    None.
       

    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
@ENDNODE


@NODE PW_TEXT "PW_Text"
@TOC "PROCEDURES"
    
    @{u}                                  @{uu}
    
    PW_TEXT[ STATE,TXT$,POS$,TSCREEN ]
    @{u}                                  @{uu}


    ----------
    Parameters
    ----------

    STATE : State of the requester

        STATE = 0 : Opening of the requester
        STATE = 1 : Closing of the requester

    TXT$ : Multi-string for the explaining text

        ex: TXT$="|Please wait||Loading in progress|"

    POS$ : Position of the text in the frame

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right

    TSCREEN : Number of the screen for the requester
       
    
    ------
    Result
    ------
    
    None.
       

    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_PARSE            " LINK "PW_PARSE"       }
@ENDNODE


---------------------------------------

@NODE PW_ALIGN "PW_Align"
@TOC "PROCEDURES"
    
    @{u}                           @{uu}
    
    PW_ALIGN[ TXT$,POS$,WIDTH ]
    @{u}                           @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Text to align

    POS$ : Position of the final text

        POS$ = "center" : Text centered
        POS$ = "left"   : Text aligned to left
        POS$ = "right"  : Text aligned to right

    WIDTH : Final lenght of the text
       
    
    ------
    Result
    ------
    
    Param$ : Text of lenght WIDTH, aligned
       

    -----------------------
    Other procedures needed
    -----------------------

    None.
@ENDNODE

@NODE PW_PURGE "PW_Purge"
@TOC "PROCEDURES"
    
    @{u}                @{uu}
    
    PW_PURGE[ TXT$ ]
    @{u}                @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Text to purge
       
    
    --------
    Result
    --------
    
    Param$ : Text purged of his spaces onto the left and the right
 
        ex : "  Test text  " --> "Test text"      
    

    -----------------------
    Other procedures needed
    -----------------------

    None.
@ENDNODE


@NODE PW_ECMA_IBM "PW_Ecma_Ibm"
@TOC "PROCEDURES"
    
    @{u}                   @{uu}
    
    PW_ECMA_IBM[ TXT$ ]
    @{u}                   @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Text to convert from ECMA mode to IBM mode
       
    
    ------
    Result
    ------
    
    Param$ : Text converted and ready to be printed
    
    
    -----------------------
    Other procedures needed
    -----------------------

    None.
@ENDNODE


---------------------------------------

@NODE PW_DELETE "PW_Delete"
@TOC "PROCEDURES"
    
    @{u}                     @{uu}
    
    PW_DELETE[ TXT$,POS ]
    @{u}                     @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Source multi-string

    POS : Sub-string number to delete

        POS < 0 : Delete last sub-string
        POS = 0 : Delete first sub-string
        POS > 0 : Delete sub-string n°POS
       
    
    ------
    Result
    ------
    
    Param$ = Modified multi-string


    ------------------------
    Others procedures needed
    ------------------------

    None.
@ENDNODE


@NODE PW_INSERT "PW_Insert"
@TOC "PROCEDURES"
    
    @{u}                          @{uu}
    
    PW_INSERT[ TXT$,SUB$,POS ]
    @{u}                          @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Source multi-string

    SUB$ : Sub-string to insert

    POS : Position of SUB$ in TXT$

        POS < 0 : Insert SUB$ at the end of TXT$
        POS = 0 : Insert SUB$ at the start of TXT$
        POS > 0 : Insert SUB$ at position POS
       
    
    ------
    Result
    -------
    
    Param$ = Modified multi-string


    ------------
    Informations
    ------------

    You don't have to insert a `|' at the end of SUB$, however it's possible
    to insert several  sub-strings at the same time or even an entire multi-
    string.


    ------------------------
    Others procedures needed
    ------------------------

    None.
@ENDNODE


@NODE PW_MOVE "PW_Move"
@TOC "PROCEDURES"
    
    @{u}                         @{uu}
    
    PW_MOVE[ TXT$,POS1,POS2 ]
    @{u}                         @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Source multi-string

    POS1 : Original sub-string position

        POS1 < 0 : Move last sub-string
        POS1 = 0 : Move first sub-string
        POS1 > 0 : Move sub-string n°POS
       
    POS2 : Arrival position of the sub-string

        POS2 < 0 : Put sub-string at the end of TXT$
        POS2 = 0 : Put sub-string at the start of TXT$
        POS2 > 0 : Put sub-string at POS2 position
       
   
    ------
    Result
    ------
    
    Param$ = Modified multi-string


    ------------------------
    Others procedures needed
    ------------------------

    None.
@ENDNODE


@NODE PW_PARSE "PW_Parse"
@TOC "PROCEDURES"
    
    @{u}                    @{uu}
    
    PW_PARSE[ TXT$,POS ]
    @{u}                    @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Multi-string to parse

    POS : Sub-string number to get

        POS = 0 : Get the number of sub-strings
        POS < 0 : Get last sub-string
        POS > 0 : Get sub-string number POS
       
    
    ------
    Result
    ------
    
    If NBR = 0
        
        Param$ = Number of sub-strings (use `Val(Param$)')

    Si NBR <> 0
     
        Param$ = Sub-string extracted from TXT$


    ------------------------
    Others procedures needed
    ------------------------

    None.
@ENDNODE


@NODE PW_REPLACE "PW_Replace"
@TOC "PROCEDURES"
    
    @{u}                           @{uu}
    
    PW_REPLACE[ TXT$,SUB$,POS ]
    @{u}                           @{uu}


    ----------
    Parameters
    ----------

    TXT$ : Source multi-string

    SUB$ : Sub-string to put

    POS : Position of sub-string to replace by SUB$

        POS < 0 : Replace last sub-string
        POS = 0 : Replace first sub-string
        POS > 0 : Replace sub-string n°POS
       
    
    ------
    Result
    ------
    
    Param$ = Modified sub-string


    ------------------------
    Others procedures needed
    ------------------------

    None.
@ENDNODE


---------------------------------------

@NODE PW_ENT "PW_Ent"
@TOC "PROCEDURES"
    
    @{u}              @{uu}
    
    PW_ENT[ NBR# ]
    @{u}              @{uu}


    ----------
    Parameters
    ----------

    NBR# : Number to round to the nearest integer value
       
    
    ------
    Result
    ------
    
    Param : Number NBR# rounded to the nearest integer value

        ex : NBR#=1.49 --> Param=1
             NBR#=1.50 --> Param=1
             NBR#=1.51 --> Param=2
    
    
    -----------------------
    Other procedures needed
    -----------------------

    None.
@ENDNODE


@NODE PW_SPACE "PW_Space"
@TOC "PROCEDURES"
    
    @{u}                     @{uu}
    
    PW_SPACE[ NBR,WIDTH ]
    @{u}                     @{uu}


    ----------
    Parameters
    ----------

    NBR : Number to transform in string

    WIDTH : Final width of the string

        WIDTH <= Width of the number : The whole number is returned
        WIDTH >  Width of the number : The number with 0 is returned
       
    
    ------
    Result
    ------
    
    Param$ : Return a string of width WIDTH containing NBR
    
        ex : NBR=10 and WIDTH=5 --> Param$="00010"
             NBR=10 and WIDTH=1 --> Param$="10"
    

    -----------------------
    Other procedures needed
    -----------------------

    None.


    ------------
    Informations
    ------------

    This procedure is particulary useful in generating code numbers, bill
    numbers, ...
@ENDNODE


---------------------------------------

@NODE PW_DATE "PW_Date"
@TOC "PROCEDURES"
    
    @{u}       @{uu}
    
    PW_DATE
    @{u}       @{uu}


    ----------
    Parameters
    ----------

    None.    
       
    
    ------
    Result
    ------
    
    Param$ : Date of the curent day

        ex : "31/08/95"
    

    -----------------------
    Other procedures needed
    -----------------------

    None.
@ENDNODE


@NODE PW_FONT "PW_Font"
@TOC "PROCEDURES"
    
    @{u}               @{uu}
    
    PW_FONT[ FONT ]
    @{u}               @{uu}


    ----------
    Parameters
    ----------

    FONT : Number of the font to examine
       
    
    ------
    Result
    ------
    
    Param$ : " FHEIGHT | FWIDTH | FBASE "
           
    FHEIGHT : Height of the font

    FWIDTH : Width of the font
        If FWIDTH = 0 : Proportional font
        If FWIDTH > 0 : Fixed width FWIDTH font

    FBASE : Position of the baseline of the font


    ------------------------
    Others procedures needed
    ------------------------

    None.
@ENDNODE


@NODE PW_PREFS "PW_Prefs"
@TOC "PROCEDURES"

    @{u}        @{uu}
    
    PW_PREFS
    @{u}        @{uu}


    ----------
    Parameters
    ----------

    None.
       
    
    ------
    Result
    ------
    
    None.


    ------------------------
    Others procedures needed
    ------------------------

    None.


    ------------
    Informations
    ------------

    This procedure isn't locked and permit you to initialize the global var-
    iables, to open a standard screen with its palette, to load the fonts on
    the disk, to call the procedures PW_BREAK or PW_ERROR ... All this by
    simply typing one line at the start of your program. The main goal is to
    clarify your source.
@ENDNODE


@NODE PW_TIME "PW_Time"
@TOC "PROCEDURES"
    
    @{u}       @{uu}
    
    PW_TIME
    @{u}       @{uu}


    ----------
    Parameters
    ----------

    None.    
       
    
    ------
    Result
    ------
    
    Param$ : Current time

        ex : Param$="11:59:50"
    

    -----------------------
    Other procedures needed
    -----------------------

    None.
@ENDNODE


---------------------------------------

@NODE PW_BREAK "PW_Break"
@TOC "PROCEDURES"
    
    @{u}        @{uu}
    
    PW_BREAK
    @{u}        @{uu}


    ----------
    Parameters
    ----------

    None.    
       
    
    ------
    Result
    ------
    
    None.
    

    -----------------------
    Other Procedures Needed
    -----------------------

        @{" PW_BUTTON2          " LINK "PW_BUTTON2"     }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_REQUEST5         " LINK "PW_REQUEST5"    }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_PARSE            " LINK "PW_PARSE"       }


    ------------
    Informations
    ------------

    This procedure is included in the file `POWER_Extras.AMOS' and only work
    with AMOS Pro. Morever it's  not locked, and give a good  example of use
    for the PW_REQUEST5 procedure.

    This is an excellent interface for the `On Break Proc'
@ENDNODE


@NODE PW_ERROR "PW_Error"
@TOC "PROCEDURES"
    
    @{u}        @{uu}
    
    PW_ERROR
    @{u}        @{uu}


    ----------
    Parameters
    ----------

    None.    
       
    
    ------
    Result
    ------
    
    None.
    

    -----------------------
    Other procedures needed
    -----------------------

        @{" PW_BUTTON2          " LINK "PW_BUTTON2"     }
        @{" PW_FRAME2           " LINK "PW_FRAME2"      }
        @{" PW_REQUEST5         " LINK "PW_REQUEST5"    }
        @{" PW_ALIGN            " LINK "PW_ALIGN"       }
        @{" PW_PARSE            " LINK "PW_PARSE"       }


    ------------
    Informations
    ------------

    This procedure is included in the file `POWER_Extras.AMOS' and only work
    with AMOS Pro. Morever it's  not locked, and give a good  example of use
    for the PW_REQUEST5 procedure.

    This is an excellent interface for the `On Error Proc' command.
@ENDNODE


---------------------------------------

@NODE PW_SORT "PW_Sort"
@TOC "PROCEDURES"
    
    @{u}                         @{uu}
    
    PW_SORT[ TYPE, INF, SUP ]
    @{u}                         @{uu}


    ----------
    Parameters
    ----------

    TYPE : Type of the sorting algorithm

        TYPE = 1 : Quicksort
        TYPE = 2 : Insertion sorting
        TYPE = 3 : Selection sorting
    
    INF : First element to sort in the array

    SUP : Last element to sort in the array
       
    
    ------
    Result
    ------
    
    The global array PW_SORT$() indexed by the global array PW_INDEX() is
    sorted between INF and SUP with the selected algorithm.


    -----------------------
    Other Procedures Needed
    -----------------------

    None.
@ENDNODE

