2010-08-10 5 views
3

Si j'ai 1 programme COBOL DB2 qui appelle 2 autres sous-programmes COBOL DB2, alors combien de DBRM, paquets, plans il va créer? Si je change l'un des sous-programme alors ai-je besoin de recompiler et de lier tous les programmes? Je suis vraiment confondu avec DBRMs, Plans et Packages.Programme COBOL DB2

Cordialement, manasi

Répondre

6

Oh my ... C'est un énorme sujet si cette réponse va être très simplifiée et donc incomplète.

La réponse dépend un peu de l'utilisation du pré-compilateur DB/2 ou du co-compilateur. Pour cette réponse, je suppose que vous utilisez le pré-compilateur. Si vous utilisez le co-compilateur, le principe est à peu près le même mais la mécanique est un peu différente.

Le but ici est de générer:

  • un module de charge de votre source COBOL
  • plan DB/2 pour fournir votre programme avec des chemins d'accès dans la base de données DB/2

Tout entre les deux prend en charge les mécanismes de création d'un plan DB/2 approprié pour votre programme à exécuter.

The Mechanics

Chaque programme et/ou sous-programme contenant des instructions DB/2 doit être pré-traitées par le pré-compilateur DB/2. Le pré-compilateur crée un DBRM (Data Base Request Module). La pré-compilation modifie également votre programme source en commentant toutes les instructions EXEC SQL...END-EXEC et les remplace par des appels spécifiques au sous-système DB/2. Vous utilisez ensuite le compilateur COBOL standard pour compiler le code émis par le pré-processeur pour produire un module d'objet que vous liez ensuite dans un exécutable. Le DBRM produit par la précompilation contient une liste des instructions SQL contenues dans votre programme plus d'autres informations que DB/2 utilise pour associer ces instructions SQL spécifiques à votre programme. Le DBRM est généralement écrit à un jeu de données permanent (généralement un PDS) et ensuite entré dans le classeur DB/2 où les chemins d'accès spécifiques pour chaque instruction SQL dans votre programme sont compilés dans un formulaire que DB/2 peut réellement utilisation. Le classeur fait pour DB/2 à peu près la même fonction que le compilateur pour COBOL. Pensez à DBRM comme votre code source et le classeur comme le compilateur. Les informations de chemin d'accès produites lorsque le DBRM est lié doivent être stockées quelque part afin qu'il puisse être localisé et utilisé lorsque votre programme appelle DB/2.

Où placer la sortie du classeur? Vos options sont de lier dans un package ou directement dans un plan.

La route la plus courte consiste à lier directement un groupe de DBRM dans un plan. Cependant, comme avec de nombreux raccourcis, ce n'est peut-être pas la meilleure chose à faire (je reviendrai plus tard sur la raison).

La plupart des systèmes plus importants ne lieront pas DBRM directement dans des plans, ils se lieront à un paquet. Le paquet lié est stocké dans le sous-système DB/2 (de la même manière qu'un plan est). Qu'est-ce qu'un paquet? Un package est un lien single DBRM. Un plan, d'autre part, contient généralement les chemins d'accès pour plusieurs DBRM.

Maintenant nous avons un ensemble de paquetages, chaque paquet contient les chemins d'accès SQL à son DBRM respectif qui a été dérivé d'un programme donné. Nous devons construire un plan à partir de ceux-ci. Pour ce faire, un ensemble de cartes de liaison est créé, généralement par votre administrateur de base de données. Les cartes de liaison sont juste une sorte de "code source" au classeur DB/2 (ce ne sont pas des cartes perforées). Les cartes de liaison définissent quels paquets forment un plan donné. Ceux-ci sont ensuite soumis au classeur qui les assemble en un plan. Note: vous pouvez également entendre mentionner des collections, ce sont juste des groupements nommés de paquets qui ont été définis par votre DBA.

En résumé, nous avons le processus suivant:

 
    Program -> (Pre-Compiler) -> Modified Program -> (COBOL compiler) -> Object -> (Link) -> Load Module 
           -> DBRM -> (DB/2 Bind) -> Package 

    Bind Cards -> (DB/2 Bind) -> DB/2 Plan 
    Package(s) -> 

Les deux sorties fondamentales ici sont un module de charge (votre programme COBOL exécutable) et un plan DB/2. Le programme et Plan sont regroupés dans votre JCL où vous devez indiquer le nom du plan dans l'instruction EXEC avec le programme à exécuter.

Avec ce bref et très simplifiée, fond, permet d'essayer de répondre à vos questions:

Comment peut-DBRMs sont créés?

Un DBRM par programme contenant SQL EXEC déclarations

Combien de paquets sont créés?

Un package est construit à partir d'un DBRM. Il existe une correspondance 1: 1 entre le programme source et le package

Combien de plans sont créés?

Tout ensemble donné peut être inclus dans plusieurs collections et/ou plusieurs ensembles de cartes de liaison. Ce signifie qu'un package donné peut être inclus dans plusieurs plans.

Si je change un programme, qu'est-ce qui est affecté?

Si vous liez directement DBRM dans un plan, vous devez redéfinir chaque plan utilisant DBRM. Cela peut être une proposition très longue et sujette aux erreurs. Toutefois, si vous liez DBRM dans un package, vous devez uniquement relier ce package. Étant donné qu'il existe une correspondance 1: 1 entre le programme et le package, seule une liaison unique doit être effectuée. La seule fois où le Plan doit être rebondi, c'est lorsqu'un paquet ou une collection est ajouté ou retiré du jeu de cartes de reliure qui le définit.L'avantage d'utiliser des paquetages devrait être clair à partir de ce qui précède et c'est pourquoi la plupart des magasins ne lient pas DBRM directement dans Plans, mais utilisent plutôt des paquetages.

+0

Merci beaucoup Neal :) Ça a réduit ma confusion ... :) – Saisha