home *** CD-ROM | disk | FTP | other *** search
- /* k 1003 27/08/90 */
- /* k 1005 10/09/90 */
- /* k 0051 12/09/90 */
- /* k 0054 13/09/90 */
- /* k 1005 17/09/90 */ /* gluad ->glu */
- /* k 0059 21/09/90 */
- /* k 0087 03/12/90 */
- /* k 0157 15/04/91 */
- /* k 0207 06/09/91 *//* delete majelno */
- /* k 0224 23/09/91 *//* ebss */
- /* k 0230 09/10/91 *//* assemble some data */
- /* k 0257 08/11/91 *//* Transient version */
- /* k 1073 15/01/92 *//* clear work fields */
- #include <ebss.h> /* @0224 */
- #include <stdio.h>
- #include <fcntl.h>
- #include <string.h>
- /* @0230 */
- /* @0207 */
- extern msgop();
- struct parmglu *glu(struct parmglu *wglu)
- {
- struct srdt *ws;
- struct rdt *wr;
- struct majtb *wm;
- struct aname *wa;
- struct dlctb *wd;
- struct mat *wn;
- struct namtb *wntb;
- struct nausg *wnsg;
- struct cash *wc;
- struct glu *wglua; /* 1005 */
- struct nau *wnau;
- int wcnt,i,j,k;
- int cntnau=0;
- char *w,*w1; /* work ptr */
- ws=avt->srdt; /* @0087 */
- wglu->fl1 &= 255-CCASH-CNODE; /* 1005 *//* @0157 */
- wglu->gluadar=0;wglu->gluadnod=0; /* 1005 */
- wglu->fl2=0; /* 1005 */
- for (i=0;i<24;i++)
- { wglu->glulu[i]=' ';} /* reset fields for result @1073 */
- wcnt=ws->gno; /* number GLU */
- wglua=ws->gluad[0]; /* ptr to glu-table */ /* 1003 */
- w=(wglu->inlu); /* @0054 */
- for (i=0;i<wcnt;i++)
- { w1=(wglua->namelu); /* @0054 */
- #if (RESIDENT == 0)
- if (Res_strncmp(w,w1,8) !=0) /* @0257 */
- #else
- if (strncmp(w,w1,8) !=0)
- #endif
- wglua=wglua+1;
- else
- { w=(wglu->glulu); w1=(wglua->netlu); /* 1005 */
- #if (RESIDENT == 0) /* @0257 */
- Res_memcpy(w,w1,24); /* 1005 */
- #else
- memcpy(w,w1,24); /* 1005 */
- #endif
- wglu->gluadar=wglua->netadr;
- wglu->gluadnod=wglua->nodeadr; /* @0054 */
- wglu->fl1 |= CNODE; /* 1005 *//* @0157 */
- goto GLU4; /* 1005 */
- } /* 1005 */
- }
- if ( wglu->glulu[0] =='\0' || wglu->glulu[0] ==' ') /* 1073 1005 */
- { w=(wglu->glulu); w1=(wglu->inlu);
- #if (RESIDENT == 0) /* @0257 */
- Res_memcpy(w,w1,8); /* name LU to output list */
- #else
- memcpy(w,w1,8); /* name LU to output list */
- #endif
- }
- if ( wglu->mode ==GLUFID4)
- { w=(wglu->glunode); w1=(wglu->innode);
- #if (RESIDENT == 0) /* @0257 */
- Res_memcpy(w,w1,16); /* name NODE,AREA */
- #else
- memcpy(w,w1,16); /* name NODE,AREA */
- #endif
- }
- if ( wglu->mode ==GLUFID2)
- { w=(wglu->glunode); w1=(wglu->innode); /* 1005 */
- #if (RESIDENT == 0) /* @0257 */
- Res_memcpy(w,w1,8); /* name NODE */
- #else
- memcpy(w,w1,8); /* name NODE */
- #endif
- } /* 1005 */
- GLU4: /* 1005 */
- if (wglu->gluadar==0 || wglu->gluadnod==0) /* 1005 */
- { wc=avt->cash; /* ptr to cash table */ /* @0087 */
- wcnt=avt->cnt; /* count elements */ /* 0051 *//* @0087 */
- for (i=0;i<wcnt;i++)
- { w=(wc->lu); w1=(wglu->glulu); /* @0054 */
- #if (RESIDENT == 0) /* @0257 */
- if (Res_strncmp(w,w1,8) !=0 )
- #else
- if (strncmp(w,w1,8) !=0 )
- #endif
- wc=wc+1;
- else
- { wglu->fl1 |=CCASH; /* cash found *//* 1005 *//* @0157 */
- wglu->gluadar=wc->adra; /* network area */
- wglu->fl1 |= CNODE; /* 1005 *//* @0157 */
- w=(wglu->glunode); w1=(wc->node); /* @0054 */
- #if (RESIDENT == 0) /* @0257 */
- Res_memcpy(w,w1,8); /* LU,NODE,AREA name */ /* @0054 */
- #else
- memcpy(w,w1,8); /* LU,NODE,AREA name */ /* @0054 */
- #endif
- wglu->gluadnod=wc->adrn; /* @0054 */
- goto LOOKRET;
- } /* 1005 */
- }
- }
- LOKNODE: /* 1005 */
- w=(wglu->glunode); w1=(ws->noden); /* @0059 */
- if ((wglu->glunode[0]!='\0') && /* @0059 */ /* 1005 */
- (wglu->glunode[0]!=' ') && /* @0059 */
- #if (RESIDENT == 0) /* @0257 */
- (Res_strncmp(w,w1,8) != 0)) /* @0059 */
- #else
- (strncmp(w,w1,8) != 0)) /* @0059 */
- #endif
- goto SARDT; /* 1005 */
- wm=avt->majtb; /* */ /* @0087 */
- w=wglu->glulu; /* @0054 */
- for (i=0;i<2;i++) /* @0207 */
- { if (wm->majname[0]=='\0')
- wm=wm+1;
- else
- { wr=wm->rdt; /* 1005 */
- cntnau=wr->nauno;
- wnau=wr->nau;
- for (j=0;j<cntnau;j++)
- { w1=wnau->name; /* */ /* @0054 */
- #if (RESIDENT == 0) /* @0257 */
- if (Res_strncmp(w,w1,8) !=0)
- #else
- if (strncmp(w,w1,8) !=0)
- #endif
- wnau=wnau+1;
- else
- { wn=ws->mat[0]; /* ptr to mat */ /* 1003 */
- /* @0054 */
- wglu->gluadar=wn->daf; /* @0054 */
- /* @0087 */ wglu->gluadnod=avt->mynode; /* 1005 */
- w=wglu->glunode; w1=ws->noden; /* 1005 */
- #if (RESIDENT == 0) /* @0257 */
- Res_memcpy(w,w1,8); /* node name *//* 1005 */
- #else
- memcpy(w,w1,8); /* node name *//* 1005 */
- #endif
- wglu->fl1 |= CNODE; /* @0157 */ /* 1005 */
- wcnt=ws->ano; /* count area name */
- wa=ws->aname[0]; /* ptr to area name table */ /* 1003 */
- for (k=0;k<wcnt;k++)
- { if (wglu->gluadar != wa->addr)
- wa=wa+1;
- else
- { w=(wglu->gluarea); w1=(wa->aname);
- #if (RESIDENT == 0) /* @0257 */
- Res_memcpy(w,w1,8); /* name AREA */
- #else
- memcpy(w,w1,8); /* name AREA */
- #endif
- }
- }
- /* @0054 */
- goto LOOKRET; /* 1005 */
- }
- }
- } /* @0054 */
- wm=wm+1; /* @0054 */
- }
- goto LOOKRET;
- SARDT:
- wcnt=ws->ano; /* count area name */
- wa=ws->aname[0]; /* ptr to area name table */ /* 1003 */
- for (i=0;i<wcnt;i++)
- { if (wglu->gluadar != wa->addr)
- wa=wa+1;
- else
- { w=(wglu->gluarea); w1=(wa->aname);
- #if (RESIDENT == 0) /* @0257 */
- Res_memcpy(w,w1,8); /* name AREA */
- #else
- memcpy(w,w1,8); /* name AREA */
- #endif
- }
- wcnt=ws->matno; /* count MAT */
- wn=ws->mat[0]; /* ptr to mat-table */ /* 1003 */
- for (k=0;k<wcnt;k++)
- { if (wglu->gluadar != wn->daf)
- wn=wn+1;
- else
- { wcnt=wn->nodno; /* count NODE */
- wntb=wn->ntb[0]; /* ptr to node name table */
- for (k=0;k<wcnt;k++)
- { wnsg=wntb->nausg; /* ptr to segad */
- if (wglu->gluadar != wnsg->sarea)
- wntb=wntb+1;
- else
- { w=(wglu->glunode);w1=(wntb->name);
- #if (RESIDENT == 0) /* @0257 */
- Res_memcpy(w,w1,8); /* NODE name */
- #else
- memcpy(w,w1,8); /* NODE name */
- #endif
- wglu->fl1 |= CNODE; /*node name found *//* @0157 */
- goto LOOKRET;
- }
- }
- }
- wglu->fl1 |= NNODE; /*node name not found *//* @0157 */
- goto LOOKRET;
- }
- wglu->gluadar=0;
- goto LOOKRET;
- }
- LOOKRET:
- wn=ws->mat[0]; /* ptr to mat-table */ /* 1003 */
- if ( wn->type ==3) /* 1003 */
- { wglu->fl2=3; /* LAN */
- return (wglu); /* 1005 */
- }
- if ( wn->type ==2) /* 1003 */
- { wglu->fl2=2; /* ROUTE */
- return (wglu); /* 1005 */
- }
- else
- { wglu->fl2=1; /* SNA */
- return (wglu);
- }
- }