Top Data virtualization Techniques for BI projects (1 of 5)

 VMWARE+JOBS+Career+Apply+TodayThe term data virtualization is based on the word virtualization. Virtualization is not a new concept in the IT industry. Probably the first application of virtualization was in the 1960s when IBM used this concept to split mainframes into separate virtual machines, which made it possible for one machine to run multiple applications concurrently. Also in the 1960s, virtual memory was introduced using a technique called paging.

30+High+paying+Software+jobs

Memory virtualization was used to simulate more memory than was physically available in a machine. Nowadays, almost everything can be virtualized, including processors, storage , networks, data centers, and operating systems. VMWare and Cloud can also be regarded as virtualization technologies.

In general, virtualization means that applications can use a resource without any concern for where it resides, what the technical interface is, how it has been implemented, which platform it uses, and how much of it is available. A virtualization solution encapsulates the resource in such a way that all those technical details become hidden and the application can work with a simpler interface.

This API was a layer of software that would hide the user interface technology in use for the rest of the application. Without knowing it.

Mainframe: MQSeries for Senior Software Developers(1 of 3)

Cloud Storage+Jobs+Career

CLOUD+STORAGE+JOBS

These posts specially for mainframe programmers, they can use these tips for development as well as for maintenance projects. Integrate your mainframe applications to different distributed applications using MQseries.

A message queue, known simply as a queue, is a named destination to which messages can be sent. Messages accumulate on queues until they are retrieved by programs that service those queues.

What is the role of Que manager

A queue manager is a system program that provides queuing services to applications. It provides an application programming interface so that programs can put messages on, and get messages from, queues. A queue manager provides additional functions so that administrators can create new queues, alter the properties of existing queues, and control the operation of the queue manager

What is a Cluster

A cluster is a network of queue managers that are logically associated in some way. Clustering is available to queue managers on the following MQSeries

What is shared que

A shared queue is a type of local queue whose messages can be accessed by one or more queue managers that are in a sysplex. (This is not the same as a queue being ″shared″ by more than one application, via the same queue manager.)

MQSeries+COBOL+Sample Program

What is que sharing group

The queue managers that can access the same set of shared queues form a group called a queue-sharing group (QSG). They communicate with each other by means of a coupling facility (CF) that stores the shared queues.

MQSeries Client:

An MQSeries client is an independently installable component of an MQSeries product. It allows you to run MQSeries applications, by means of a communications protocol, to interact with one or more Message Queue Interface (MQI) servers on other platforms and to connect to their queue managers.

MQSeries Tutorial or Basics:

  • Message queuing is a technique for indirect program-to-program communication. It can be used within any application where programs communicate with each other. Communication occurs by one program putting messages on a queue (owned by a queue manager) and another program getting the messages from the queue.
  • Programs can get messages that were put on a queue by other programs. The other programs can be connected to the same queue manager as the receiving program, or to another queue manager. This other queue manager might be on another system, a different computer system, or even within a different business or enterprise.
  • There are no physical connections between programs that communicate using message queues. A program sends messages to a queue owned by aqueue manager, and another program retrieves messages from the queue

Mainframe: 10 Powerful Points for COBOL and SQL programs

SQL,PL-SQL,NoSQL+Jobs+Career options

  • In Mainframe it is possible to run a SQL query without writing a COBOL program. By using, SPUFI, QMF and IBM Studio
  • SQL query must begin with EXEC SQL and end with END-EXEC. Second, your SQL query usually uses COBOL host variables.

Host variables in COBOL:

Host variables appear with a colon (:) prefix in SQL statements. Host variables must be defined properly in COBOL; they are the exact COBOL equivalent of the column attribute.

DELETE statements do not require host variables since they delete all the rows (the set) identified in the WHERE clause. SELECT statements, on the other hand, always require host variables.

INSERT statements usually require host variables, but you can also specify data in a VALUES clause.

UPDATE statements also require host variables, but only for columns whose data you are going to change. For example, the following SQL query uses an UPDATE statement to change the sex of employee

MOVE ‘FEMALE’ TO SEX OF DCLEMPLOYEE
EXEC SQL UPDATE EMPLOYEE
SET SEX = :DCLEMPLOYEE-SEX
WHERE EMP_ID = 1
END-EXEC

Notice the syntax for structures in SQL. SEX OF DCLEMPLOYEE is COBOL syntax. Inside a SQL statement, SEX OF DCLEMPLOYEE becomes DCLEMPLOYEE-SEX. DCLEMPLOYEE is the structure name (probably an 01 level).

DCL followed by the table name is a common naming convention for this structure or I/O area.

How to generate Host Variables in COBOL program:

Database software often includes utilities that generate these structures for different languages (for example, DCLGEN is the DB2 utility).

Static and Dynamic SQL:

EXEC SQL DECLARE statement, because it is completely commented out by the SQL preprocessor, which executes before the COBOL compiler.

In DB2, the SQL preprocessor stores the EXEC SQL DECLARE information in a file called a database request module (DBRM).

This is called static SQL. In mainframe CICS/DB2 applications, almost all SQL is static SQL.

Later, before executing the program, you use a BIND utility to turn the DBRM(s) into a plan. The plan is a deliverable, like the CICS BMS map and COBOL load module, and programs require it in order to execute. A partial plan is called a packet. You can combine packets to build a plan.

Creating a DBRM with a SQL preprocessor and building a plan is required only by DB2. Since access paths to the data are chosen before the program executes, program performance is greatly enhanced. Other databases process the SQL entirely at runtime, although they are likely to be less efficient than DB2.

In dynamic SQL, the SQL statement is unknown until execution time. Dynamic SQL is less efficient but more flexible than static SQL. If your program needs to accept a SQL statement typed by an end user, execute it, and display the results, you must use dynamic SQL.

CICS: CEMT, CECI, CEBR Commands Part(2 of 3)

CEMT lets you display and change the status of resources, including programs, transactions, data sets, queues, and terminals.

You’ll use CEMT in a CICS test environment often to refresh a copy of a program, allocate and deallocate a file, or just inquire on the status of a given resource. In addition, you use CEMT to shut down a CICS system.

CICS: CEBR, CEMT, CECI Commands -Part-1

Operation
To invoke CEMT, you enter the trans-id CEMT with or without a command. Once you’ve started CEMT, you can enter commands in the command line (at the top of the display) or you can overtype data directly on the data display.

If you don’t enter complete information for a CEMT command, CEMT prompts you for the additional information, showing all of the valid choices.

You can abbreviate any CEMT command option with as few characters as are required to make the abbreviation unique within the context. For the keyword PERFORM, for example, you can enter P, PE, PER, PERF, and so on. However, if another keyword at the same level begins with the letter P, you would have to use at least two letters in the abbreviation.

The three basic CEMT commands you’re likely to use are INQUIRE (usually abbreviated INQ), SET, and PERFORM.

INQIRE Command

CEMT INQUIRE FILE [(name)]
PROGRAM [(name)]
QUEUE [(name)]
TASK [(number)]
TERMINAL [(term-id)]
TRANSACTION [(trans-id)]

SET Command

CEMT SET FILE(name)
{ ENABLED | DISABLED }
{ OPEN | CLOSED }

CEMT SET PROGRAM(name)
{ ENABLED | DISABLED }
[ NEWCOPY ]
[ DPLSUBSET ]

CEMT SET QUEUE(name)
{ ENABLED | DISABLED }
{ OPEN | CLOSED }
[ TRIGGER(number) ]

CEMT SET TASK(number)
{ PURGE | FORCEPURGE }

CEMT SET TERMINAL(term-id)
{ INSERVICE | OUTSERVICE }
{ PURGE | FORCEPURGE }
{ PAGEABLE | AUTOPAGEABLE }
{ ATI | NOAT

SHUTDOWN Command

CEMT PERFORM SHUTDOWN [ IMMEDIATE ]

Mainframe: Top IMS DC Interview Questions (2 of 2)

1) Which block MFS uses for input message?

DIF- Device input format

2) What is second block it uses?

MID- Message input descriptor

3) Which block application program uses for output messages?

MOD-Message output descriptor

4) What is next block it uses?

DOF- Device output format

5) What are 3 groups of MFS control statements?

  • Device Format Control Statements
  • Message descriptor control statements
  • Compilation Control Statements

6) What are FMT and FMTEND?

FMT: Identifies the beginning of a device format
FMTEND: Control statements end with a FMTEND statement

7) What is MDT tag in IMS DC?

  • MDT tag indicates whether or not the data in the field has been changed by the terminal user since the screen was sent to the device.
  • When a screen is displayed, MDT’s of fields is OFF.
  • Advantage: Telecommunications Efficiency

8) What are JUST and FILL?

JUST parameter specifies how data should be positioned in a message field. Default is Left Justification
FILL parameter specifies what pad character MFS should use to complete a field when the data that’s mapped into it doesn’t fill. you with
Ex: FILL=C’0’
FILL=X’ ‘
FILL=NULL

9) How to get multiple physical pages?

MFS provides a facility to generate a single physical input message from multiple physical pages.
DPAGE Stmt
MULT=YES

10) How to send message to multiple destinations?

The application Program that’s processing a Single Input Message can send multiple Output Message to Multiple Destinations.
–ISRT call is issued but only difference is that the call specifies Alternate PCB instead of I/O PCB.

11) How terminal works with data?

There are three ways to maintain Data between Terminal Interaction.
•Store Data in the Terminal Screen.
•Store Data in the Databases
•Store Data in the IMS provided Scratch Pad Area.

12) What is SPA?

A conversational Program must use a SPA(Scratch pad area)
–A Unique SPA is associated with each terminal that’s running a conversational transaction.

13) How recovery happens in IMS DC?

If an Application Program Abends, IMS automatically reverse or Rollback the changes it has made to the Databases and Message Queues.

14) How CHECKPOINT works in IMS DC program?

The checkpoints are taken automatically with each transaction a program processes. (This is called Single Mode Processing.)
–In Multiple Mode Processing, the only automatic checkpoint is at the End of the Program. However, the program can force a checkpoint by issuing CHKP call, which causes IMS to write a Checkpoint Record to the Log.
–The Checkpoint Call Syntax:
CALL ‘CBLTDLI’ USINGDLI-CHKP
IO-PCB-MASK
INPUT-MESG-IO-AREA.

Mainframe:COBOL Strings, INSPECT,Concatenation, Splitting (2 of 2)

SAS+Analytics+Big data jobs, Career, Apply todayWhat is String concatenation in COBOL.

Read my previous post on COBOL Strings-INSPECT VERB.

String concatenation involves joining the contents of two or more source strings or partial source strings to create a single destination string. In COBOL, string concatenation is done using the STRING verb. Before I discuss the STRING verb formally, let’s look at some examples to get a feel for what it can do.

Best examples:

STRING String1, String2, “LM051″ DELIMITED BY SIZE
INTO DestString
END-STRING

STRING
String1 DELIMITED BY SIZE
String2 DELIMITED BY SPACES
String3 DELIMITED BY “unique”
INTO DestString
END-STRING

Using Pointer in String

STRING MonthStr DELIMITED BY SPACES
“,” DELIMITED BY SIZE
INTO DateStr WITH POINTER StrPtr

Key points in COBOL strings

  • The ON OVERFLOW clause executes if valid characters remain to be transferred in the source string but the destination string is full.
  • When a WITH POINTER phrase is used, its value determines the starting character position for insertion into the destination string. As each character is inserted into the destination string, the pointer is incremented. When the pointer points beyond the end of the destination string, the STRING statement stops.
  • When the WITH POINTER phrase is used, then before the STRING statement executes, the program must set Pointer#i to an initial value greater than zero and less than the length of the destination string.
  • If the WITH POINTER phrase is not used, operation on the destination field starts from the leftmost position.
  • Pointer#i must be an integer item, and its description must allow it to contain a value one greater than the size of the destination string. For instance, a pointer declared as PIC 9 is too small if the destination string is ten characters long.
  • The DELIMITED BY SIZE clause causes the whole of the sending field to be added to the destination string. Where a literal can be used, you can use a figurative constant (such as SPACES ) except for the ALL literal figurative constant.When a figurative constant is used, it is one character in size.
  • The destination item DestString must be either an elementary data item without editing symbols or the JUSTIFIED clause.

Data movement from a particular source string ends when one of the following occurs:

  • The end of the source string is reached.
  • The end of the destination string is reached.
  • The delimiter is detected.
  • The STRING statement ends when one of the following is true:
  • All the source strings have been processed.
  • The destination string is full.
  • The pointer points outside the string.

SPLITTING of String

String splitting involves chopping a string into a number of smaller strings. In COBOL, string splitting is done using the UNSTRING verb. Before I discuss the UNSTRING verb formally, let’s look at some examples to see what UNSTRING can do.

UNSTRING CustomerName DELIMITED BY ALL SPACES
INTO FirstName, SecondName, Surname
END-UNSTRING

The second example breaks an address string

UNSTRING CustAddress DELIMITED BY “,”
INTO AdrLine(1), AdrLine(2), AdrLine(3),
AdrLine(4), AdrLine(5), AdrLine(6)
TALLYING IN AdrLinesUsed
END-UNSTRING

Mainframe-COBOL Occurs, Indexed By,USAGE is Index (2 of 2)

NoSql Interview Questions-Hadoop, Big DataRead my previous post-1. This post is an advanced topic for Tables/arrays.

OCCURS depending ON. Best example to create variable array:

01 ORG-LIMIT PIC 99 COMP VALUE 50.
01 DIVISION-NAME-TABLE.
05 DIVISION-ENTRY OCCURS 1 TO 50 TIMES DEPENDING ON ORG- LIMIT  INDEXED BY DIV-IX.
10 DIVISION-CODE PIC X(5).
10 DIVISION-NAME PIC X(30).

Perform VARYING…AFTER in Multi dimensional Tables:

The AFTER clause of the PERFORM…VARYING statement was designed specifically to support multidimensional tables in COBOL. It pre-dates the inline PERFORM statement (which was added with the 1985 Standard):

  • Perform…Varying

PERFORM
VARYING ROW-NR FROM 3 BY 2 UNTIL ROW-NR > 9
PERFORM VARYING COL-NR FROM 12 BY 2 UNTIL COL-NR > 18
ADD 1 TO CTR
MOVE CTR TO SCREEN-CHAR (ROW-NR COL-NR).

  • Perform…Varying…After

PERFORM
VARYING ROW-NR FROM 3 BY 2 UNTIL ROW-NR > 9
AFTER COL-NR FROM 12 BY 2 UNTIL COL-NR > 18
ADD 1 TO CTR
MOVE CTR TO SCREEN-CHAR (ROW-NR COL-NR).

In the above logic ROW-NR and COL-NR are two indexed/subscripts referencing two arrays. So, the above PERFORM statement work for multi dimensional Table.

How to initialize or increment or decrement of an Index:

SET index TO positive integer

Example: SET IX-1  to 1;  (For initialization)

SET IX-1 UP BY 1; (For increment)

SET IX-1 DOWN BY 1; (For decrement)

How to initialize or increment or decrement of an Subscript:

Examples:

MOVE 1  TO SUB-1 (For initialization)

ADD 1 TO SUB-1 (For increment)

SUBTRACT  1  FROM SUB-1 (For decrement)

Easytrieve Guide for Mainframe Programmers (6 of 20)

 MAINFRAME+Easytrieve+JobsVARIOUS I/O COMMANDS:

This section will cover a wide variety of commands that will be essential to the EZT+ programmer in organizing the logic that is necessary to construct an EZT+ program.

The statements to be covered are . . . . .

  PRINT            –   which ‘prints’ an output record to the VFM file by activating                                                               the designated REPORT ACTIVITY

  DISPLAY       –   directs a ‘literal’ message and important programmer defined                                                               values to a printer, it is somewhat similar to the COBOL                                                                      command

STOP              –   terminates an EZT+ JOB activity

PUT                 –  places a record on a QSAM output file

    GET       –        retrieves a record from an input file once the automatic record retrieval feature of EZT+ has been turned off

  POINT            –   ‘points’ to a record on a KEYED file this is somewhat similar                                                      to the START command

READ             –   retrieves a record from a VSAM file

WRITE           –  writes a logical record to a designated VSAM file

PRINT STATEMENT

The PRINT Statement is necessary to select a record for output to a report. Activates the report logic defined by the REPORT definition statements. The result of a PRINT statement is data output to either a print file or a work file.

Syntax:

PRINT  report – name

Example:

IF  REG  =  25

PRINT  RPT1

END – IF

Only records with REG  =  25 are output to RPT1.

EZT+

program

print

VFM

printed output

————->                          —————–>

re-sequencing


*      When EZT+ executes a PRINT statement, a detail line is ‘placed’ on the                                  intermediate VFM file.

  •      At EOF, the contents of the VFM are placed in the output queue;  if   ‘re sequencing’ was requested it occurs at this time.

*      ANY data item used in a SEQUENCE, CONTROL or LINE command will be placed in the VFM Continue reading

5 Key differences of INDEX and Subscript for COBOL programmers

Learn Big data, lot of career options+Find Jobs+Apply NowYou can refer my posts on INDEXED BY and KEY IS of a Table.

Subscript:

  • Subscript should be an integer.
  • It should have working storage definition
  • Subscript can be passed to a sub-program
  • Subscript varies from 1 to size of OCCURS
  • Subscript references a Table item

INDEX:

  • INDEXED BY xxxx phrase must be defined for an array/table
  • INDEX cannot be passed to a sub-program
  • It does not require working storage definition
  • INDEX varies from 1 to size of OCCURS
  • INDEX references table item, it is an internal representation
  • INDEX gives good performance compared to subscript

Mainframe-COBOL Occurs, Indexed By,USAGE is Index (1 of 2)

Top 30 High Paying JobsI want to share very important points on COBOL index. First point is Index cannot passed into SUB-PROGRAM and why. Second, is Index is not an Integer.

Most mainframe COBOL programmers confused much here of how to use OCCURS clause with KEY phrase effectively.

Syntax for OCCURS clause:

01 GROUP-ITEM.
03 ITEM-A OCCURS 7 TIMES INDEXED BY IX.
05 NAME PIC X(20).
05 ADDRESS-1 PIC X(20).
05 ADDRESS-2 PIC X(20).
05 ADDRESS-3 PIC X(20).
05 CITY PIC X(20).
05 STATE PIC XX.
05 ZIP PIC 9(5).

PERFORM VARYING IX FROM 1 BY 1 UNTIL IX > 7
DISPLAY NAME(IX),CITY(IX),STATE(IX),SPACE,ZIP(IX)
END-PERFORM.

About Index in TABLE ARRAY

  • An index name (or just index) is an item that contains a value corresponding to an occurrence number of the table with which it is associated.
  • Index(IX) is not necessarily stored in memory as an integer.
  • A COBOL vendor may choose to implement it as a pointer to an element of the table, an offset from the beginning of the table, or whatever representation seems convenient for a particular COBOL implementation.
  • The purpose of the index is to make accessing a table as efficient as possible.

In simple words,

  • – Index is different form Index data item
  • -Index name, it is not required to define explicitly in COBOL program
  • -Index is associated with a Table on which it is mentioned
  • -Index is not an identifier. So, index is not an Integer
  • -Index names, you can use as variables in PERFORM,SET and SEARCH Statements

So for you got difference between Index-name and Index data item.

Index Data Item:

01 INDEX-1  USAGE is INDEX.

Benefits of using INDEX-DATA-ITEM:

  1. Can pass index data name to a sub-program(Note that it is not possible pass index name to a sub-program through a CALL statement)
  2. Cannot use Index data-item/data-name as Subscript
  3. Can use to store values of indexes to a file along with actual values.

Table definition with Multiple KEYS:

01 MAIL-INFO.
03 MAIL-LIST OCCURS 1000 TIMES
ASCENDING KEY IS STATE, CITY.
05 NAME PIC X(20).
05 ADDRESS PIC X(20) OCCURS 3 TIMES.
05 CITY PIC X(20).
05 STATE PIC XX.
05 ZIP PIC 9(5).

Defining Key:

Ascending/Descending Key is XYZ.

Interview Question,Occurs,Keys:

  • By specifying ascending/descending Key IS, does not mean that Table is in sorted order. This is only an expected order.

Next post I will add more points.Keep Reading.