home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / pibterm / pibt41s1.arc / GETPARAM.MOD < prev    next >
Text File  |  1988-02-06  |  8KB  |  220 lines

  1. (*----------------------------------------------------------------------*)
  2. (*         Get_Parameter --- Get value of PibTerm parameter             *)
  3. (*----------------------------------------------------------------------*)
  4.  
  5. PROCEDURE Get_Parameter(     Param_Num : INTEGER;
  6.                          VAR Param_Str : AnyStr   );
  7.  
  8. (*----------------------------------------------------------------------*)
  9. (*                                                                      *)
  10. (*     Procedure:  Get Parameter                                        *)
  11. (*                                                                      *)
  12. (*     Purpose:    Get value of PibTerm parameter                       *)
  13. (*                                                                      *)
  14. (*     Calling Sequence:                                                *)
  15. (*                                                                      *)
  16. (*        Get_Parameter(     Param_Num  : INTEGER;                      *)
  17. (*                       VAR Param_Str  : AnyStr   );                   *)
  18. (*                                                                      *)
  19. (*           Param_Num  --- Parameter to get                            *)
  20. (*           Param_Str  --- string parameter value                      *)
  21. (*                                                                      *)
  22. (*----------------------------------------------------------------------*)
  23.  
  24. VAR
  25.    P_Ptr  : POINTER;
  26.    P_IPtr : Param_IPtr_Type ABSOLUTE P_Ptr;
  27.    P_XPtr : Param_XPtr_Type ABSOLUTE P_Ptr;
  28.    P_SPtr : Param_SPtr_Type ABSOLUTE P_Ptr;
  29.    P_CPtr : Param_CPtr_Type ABSOLUTE P_Ptr;
  30.    P_LPtr : Param_LPtr_Type ABSOLUTE P_Ptr;
  31.    P_BPtr : Param_BPtr_Type ABSOLUTE P_Ptr;
  32.    P_TPtr : Param_TPtr_Type ABSOLUTE P_Ptr;
  33.    P_FPtr : Param_FPtr_Type ABSOLUTE P_Ptr;
  34.    P_DPtr : Param_DPtr_Type ABSOLUTE P_Ptr;
  35.    P_OPtr : Param_OPtr_Type ABSOLUTE P_Ptr;
  36.    P_WPtr : Param_WPtr_Type ABSOLUTE P_Ptr;
  37.  
  38. BEGIN (* Get_Parameter *)
  39.                                    (* Get parameter address *)
  40.  
  41.    P_Ptr := Parameters[Param_Num].PAddr;
  42.  
  43.                                    (* Convert parameter value to string *)
  44.  
  45.    CASE Parameters[Param_Num].PType OF
  46.  
  47.       BColor_Param,
  48.       Color_Param,
  49.       Integer_Param,
  50.       PosInt_Param  : STR( P_IPtr^ , Param_Str );
  51.  
  52.       FileN_Param,
  53.       String_Param,
  54.       Path_Param,
  55.       Box_Param,
  56.       ExtTrans_Param: Param_Str := Write_Ctrls( P_SPtr^ );
  57.  
  58.       VidMode_Param : CASE New_Text_Mode OF
  59.                          BW80: Param_Str := 'B';
  60.                          Mono: Param_Str := 'M';
  61.                          ELSE  Param_Str := 'C';
  62.                       END (* CASE *);
  63.  
  64.       KCheck_Param,
  65.       Char_Param    : Param_Str := P_CPtr^;
  66.  
  67.       SpecChar_Param: Param_Str := Write_Ctrls( P_CPtr^ );
  68.  
  69.       LongInt_Param : STR( P_XPtr^ , Param_Str );
  70.  
  71.       Boolean_Param : Param_Str := CHR( ORD( P_LPtr^ ) + ORD( '0' ) );
  72.  
  73.       Byte_Param    : STR( P_BPtr^ , Param_Str );
  74.  
  75.       Transfer_Param: Param_Str := Trans_Type_Name[ P_FPtr^ ];
  76.  
  77.       Terminal_Param: STR( ORD( P_TPtr^ ) , Param_Str );
  78.  
  79.       Date_Param    : CASE Date_Format OF
  80.                          YMD_Style: Param_Str := 'YMD';
  81.                          MDY_Style: Param_Str := 'MDY';
  82.                          DMY_Style: Param_Str := 'DMY';
  83.                       END (* CASE *);
  84.  
  85.       Time_Param    : IF ( Time_Format = AMPM_Time ) THEN
  86.                          Param_Str := 'AMPM'
  87.                       ELSE IF ( Time_Format = Military_Time ) THEN
  88.                          Param_Str := 'MILITARY';
  89.  
  90.       ScrOrder_Param: STR( ORD( P_OPtr^ ) , Param_Str );
  91.  
  92.       Hexi_Param    : Param_Str := Dec_To_Hex( P_WPtr^ );
  93.  
  94.       Word_Param    : STR( P_WPtr^ , Param_Str );
  95.  
  96.       Host_Param    : IF Host_Mode THEN
  97.                          Param_Str := Privilege
  98.                       ELSE
  99.                          Param_Str := ' ';
  100.       ELSE
  101.                       Param_Str := '';
  102.  
  103.    END (* CASE *);
  104.  
  105. END   (* Get_Parameter *);
  106.  
  107. (*----------------------------------------------------------------------*)
  108. (*    Write_Config_File --- Write updated PibTerm configuration file    *)
  109. (*----------------------------------------------------------------------*)
  110.  
  111. PROCEDURE Write_Config_File( Config_File_Name : AnyStr );
  112.  
  113. (*----------------------------------------------------------------------*)
  114. (*                                                                      *)
  115. (*     Procedure:  Write_Config_File                                    *)
  116. (*                                                                      *)
  117. (*     Purpose:    Writes updated parameters to PibTerm config. file    *)
  118. (*                                                                      *)
  119. (*     Calling Sequence:                                                *)
  120. (*                                                                      *)
  121. (*        Write_Config_File;                                            *)
  122. (*                                                                      *)
  123. (*      Calls:   Get_Parameter                                          *)
  124. (*                                                                      *)
  125. (*----------------------------------------------------------------------*)
  126.  
  127. VAR
  128.    S          : AnyStr;
  129.    I          : INTEGER;
  130.    Written    : ARRAY[1..Max_Param_Names] OF BOOLEAN;
  131.    SName      : String12;
  132.    RName      : String12;
  133.    T          : Transfer_Type;
  134.    SingleF    : CHAR;
  135.    HostOK     : CHAR;
  136.    Config_File: Text_File;
  137.  
  138. (*----------------------------------------------------------------------*)
  139.  
  140. PROCEDURE Write_One_Parameter( Name : Char_2; Index : INTEGER );
  141.  
  142. VAR
  143.    S    : AnyStr;
  144.    Ierr : INTEGER;
  145.  
  146. BEGIN (* Write_One_Parameter *)
  147.  
  148.    IF ( Index <= 0 ) THEN
  149.       Index := Look_Up_Parameter( Name )
  150.    ELSE
  151.       Name  := Parameters[ Index ].PName;
  152.  
  153.    IF ( ( Index > 0 ) AND ( NOT ( Name[1] IN Digits ) ) ) THEN
  154.       BEGIN
  155.          Written[Index] := TRUE;
  156.          Get_Parameter( Index , S );
  157.          WRITELN( Config_File , Name, '=', S );
  158.          Ierr := INT24Result;
  159.       END;
  160.  
  161. END   (* Write_One_Parameter *);
  162.  
  163. (*----------------------------------------------------------------------*)
  164.  
  165. BEGIN (* Write_Config_File *)
  166.                                    (* Fix up config file name *)
  167.  
  168.    IF ( LENGTH( Config_File_Name ) = 0 ) THEN
  169.       Config_File_Name := 'PIBTERM.CNF';
  170.  
  171.    Add_Path( Config_File_Name, Home_Dir, Config_File_Name );
  172.  
  173.    ASSIGN( Config_File, Config_File_Name );
  174.              (*!I-*)
  175.    REWRITE( Config_File );
  176.              (*!I+*)
  177.  
  178.    IF ( Int24Result <> 0 ) THEN
  179.       BEGIN
  180.          WRITELN;
  181.          WRITELN('Can''t write to ',Config_File_Name);
  182.       END
  183.    ELSE
  184.       BEGIN  (* Write configuration file *)
  185.  
  186.                                    (* No parameters written yet *)
  187.  
  188.          FOR I := 1 TO Max_Param_Names DO
  189.             Written[I] := FALSE;
  190.  
  191.                                    (* Write function key guys first *)
  192.  
  193.          Write_One_Parameter( 'FC' , 0 );
  194.          Write_One_Parameter( 'FD' , 0 );
  195.          Write_One_Parameter( 'FW' , 0 );
  196.          Write_One_Parameter( 'FM' , 0 );
  197.          Write_One_Parameter( 'FS' , 0 );
  198.  
  199.                                    (* Don't write special guys *)
  200.  
  201.          Written[Look_Up_Parameter('FN')] := TRUE;
  202.          Written[Look_Up_Parameter('HP')] := TRUE;
  203.  
  204.                                    (* Write other parameter definitions *)
  205.  
  206.          FOR I := 1 TO Max_Param_Names DO
  207.             IF ( NOT Written[I] ) THEN
  208.                Write_One_Parameter( '  ' , I );
  209.  
  210.       END   (* Write configuration file *);
  211.  
  212.       (*!I-*)
  213.    CLOSE( Config_File );
  214.       (*!I+*)
  215.  
  216.    I := Int24Result;
  217.  
  218. END   (* Write_Config_File *);
  219.  
  220.