[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    850

    Question Auswahl im Command

    Hallo zusammen,

    ich beschäftige mich gerade wieder mit den Befehlsdefinitionen
    und möchte gerne folgendes erreichen.

    In den Befehlsdefinitionen habe ich ein 20 stelliges Feld.

    Die gültigen Werte sind in einer Tabelle gespeichert.

    Gibt es die Möglichkeit wenn der User auf dem Feld
    steht quasi ein F4 im Befehl zu ermöglichen.

    Also das ein PGM gestartet wird. Der User wählt mit 1
    einen Eintrag und der ausgewählte Eintrag steht dann
    in dem Feld im Befehl.


    Zweite Frage:
    Kann man den Eintrag im Befehl auf einen Eintrag in einer Tabelle prüfen ?

    Ich hoffe es ist verständlich genug ausgedrückt.

    Gruss
    Michael

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Beim CRTCMD ... VLDCKR(...) ... PMTOVRPGM(...) auswählen.
    Beim PARM ... CHOICEPGM(...) und/oder PMTCTLPGM(...) definieren.
    Die Schnittstellenbeschreibung steht im CL-Programmierhandbuch.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Dec 2002
    Beiträge
    301
    Hier ein bischen Sourcecode.

    Befehl MYCMD
    PHP-Code:
                 CMD        PROMPT(MYCMD)                        
    /* Parameter */                                              
                 
    PARM       KWD(PRMTYPE(*CHARLEN(10MIN(1) +
                              
    CHOICE(*PGMCHOICEPGM(MYCMDPMTR) +
                              
    PROMPT('Parameter'
    Muss mit dem Parameter VLDCKR(MYCMDCHKR) umgewandelt werden



    Programm MYCMDCHKR (Prüfung)
    PHP-Code:
    /* Programmstart */                                                  
                 
    PGM        PARM(&PRM)                                   
                                                                         
    /* Variable deklarieren */                                           
                 
    DCL        VAR(&PRMTYPE(*CHARLEN(10)                
                 
    DCL        VAR(&MSGTYPE(*CHARLEN(132)               
                                                                         
    /* Der Parameter ist ungültig */                                     
                 
    IF         COND(&PRM *NE '*VALID1' *AND &PRM *NE +      
                              
    '*VALID2'THEN(DO)                        
                 
    SNDPGMMSG  MSGID(CPD0006MSGF(QCPFMSGMSGDTA('0000 ' +
                              *
    CAT 'Fehlerhafte Eingabe'MSGTYPE(*DIAG
                 
    SNDPGMMSG  MSGID(CPF0002MSGF(QCPFMSGMSGTYPE(*ESCAPE)
                 
    ENDDO                                                   
                                                                         
    /* Programmende */                                                   
                 
    ENDPGM 

    Programm MYCMDPMTR (Bedienerführung)
    PHP-Code:
    h DftActGrp(*NOActGrp(*CALLER)                                                              
     *                                                                                            
     * 
    Prozedurenprototyp für Prozedur 'MYCMDPMTR'                                                
     
    *                                                                                            
    dMYCMDPMTR        PR                                                                          
    d                               21A   
    Const                                --> Parameter 1    
    d                             2000A                                        
    <-- Parameter 2    
     
    *                                                                                            
     * 
    Prozedurenschnittstelle für Prozedur 'MYCMDPMTR'                                           
     
    *                                                                                            
    dMYCMDPMTR        PI                                                                          
    d PIPrm1                        21A   
    Const                                --> Parameter 1    
    d PIPrm2                      2000A                                        
    <-- Parameter 2    
     
    *                                                                                            
     *-------------------------------------------------------------------------------------------*
     *                                                                                            
     * 
    Anzahl Werte                                                                               
     
    *                                                                                            
    d                 DS                                                                          
    d  ITNbrInt               1      2U 0                                                         
    d  ITNbrChar              1      2A                                                           
     
    *                                                                                            
     * 
    Länge Wert                                                                                 
     
    *                                                                                            
    d                 DS                                                                          
    d  ITLenInt               1      2U 0                                                         
    d  ITLenChar              1      2A                                                           
     
    *                                                                                            
     *-------------------------------------------------------------------------------------------*
     *                                                                                            
    c                   Select                                                                    
     
    Parameter 'PRM' verarbeiten                                                                
    c                   When      
    %Subst(PIPrm1 11 10) = 'PRM'                                
    c                   Select                                                                    
     
    Werte zu 'C' erscheinen rechts neben dem Eingabefeld                                       
    c                   When      
    %Subst(PIPrm1 21 1) = 'C'                                   
     
    'Wert' in 'Parameter 2' einfügen (Maximal 30 Stellen)                                      
    c                   Eval      %Subst(PIPrm2 30) = '*VALID1 ...'                         
     
    Werte zu 'P' erscheinen wenn F4 gedrückt wird                                              
    c                   When      
    %Subst(PIPrm1 21 1) = 'P'                                   
     
    * * * Initialisierung * * *                                                                  
     * 
    'Parameter 2' initialisieren                                                               
    c                   
    Eval      PIPrm2 = *Blanks                                                
     
    'Anzahl Werte' initialisieren                                                              
    c                   
    Eval      ITNbrInt = *Zero                                                
     
    * * * Wert '*VALID1' einfügen * * *                                                          
     * 
    'Anzahl Werte' erhöhen                                                                     
    c                   
    Eval      ITNbrInt ITNbrInt 1                              
     
    'Länge Wert' ermitteln                                                          
    c                   
    Eval      ITLenInt = %len('*VALID1')                           
     * 
    'Länge Wert' und 'Wert' in 'Parameter 2' einfügen                               
    c                   
    Eval      PIPrm2 = %Trim(PIPrm2) +                             
    c                                      ITLenChar '*VALID1'                       
     
    * * * Wert '*VALID2' einfügen * * *                                               
     * 
    'Anzahl Werte' erhöhen                                                          
    c                   
    Eval      ITNbrInt ITNbrInt 1                              
     
    'Länge Wert' ermitteln                                                          
    c                   
    Eval      ITLenInt = %len('*VALID2')                           
     * 
    'Länge Wert' und 'Wert' in 'Parameter 2' einfügen                               
    c                   
    Eval      PIPrm2 = %Trim(PIPrm2) +                             
    c                                      ITLenChar '*VALID2'                       
     
    * * * Abschluss * * *                                                             
     * 
    'Anzahl Werte' in 'Parameter 2' einfügen                                        
    c                   
    Eval      PIPrm2 ITNbrChar PIPrm2                          
    c                   EndSl                                                          
    c                   EndSl                                                          
     
    Programm nicht hauptspeicherresident verlassen                                  
    c                   
    Eval      *INLR = *On 

    Zu beachten ist, dass hier die beiden Werte *VALID1 und *VALID2 die einzigen gültigen Werte sind. Es sollte keine Probleme machen das ganze entsprechend nach den eigenen Vorstellungen zu modifizieren. Wichtig ist auch noch, dass die 2000 Bytes im Parameter PIPrm2 nur ein Beispielwert ist. Der kann je nach der Definition des Parameters im Befehlsobjekt auch höher sein.
    Frank Hildebrandt

  4. #4
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hallo zusammen,

    vielen Dank für die Antworten.

    Gruss
    Michael

Similar Threads

  1. MS ado und Prepared Command
    By Asti in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 26-10-06, 09:39
  2. Fehler CPF9814 bei STRPDM Auswahl 1
    By schatte in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 15-09-06, 15:45
  3. MiDViSiON Ausstellerprofil: command ag
    By Kirsten Steer in forum Archiv NEWSboard Events
    Antworten: 0
    Letzter Beitrag: 15-06-06, 07:49
  4. Erstellung Command und Valuelist
    By JonnyRico in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 10-05-06, 11:18
  5. command und IBM: Tête-à-Tête auf der SYSTEMS
    By ralfmh in forum Archiv NEWSboard Events
    Antworten: 0
    Letzter Beitrag: 06-10-04, 22:37

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •